Вверх ↑
Этот топик читают: Гость
Ответов: 316
Рейтинг: 21
#61: 2013-02-09 17:28:38 ЛС | профиль | цитата
nesco писал(а):
Лайком на посте со схемой

Сегодня я уже исчерпал свой лайк на тебя . Завтра на посте поставлю. Еще постараюсь выложить видео - зачем это нужно.
карма: 1

0
Разработчик
Ответов: 26160
Рейтинг: 2127
#62: 2013-02-09 17:45:17 ЛС | профиль | цитата
Tad, мы не рассматриваем привязанные алгоритмы. Надо макисмально расширить сферу применения функционала. Завтра может придется по три разбивать, и не обязательно числа
карма: 22

0
Разработчик
Ответов: 26160
Рейтинг: 2127
#63: 2013-02-11 00:00:42 ЛС | профиль | цитата
Добавил в Str_Enum свойство Step. Теперь строку можно разбивать по группам символов с размером в шаг.

Вот пример расчета последнего CRC с применением нового функционала Str_Enum

Add(MainForm,1125747,231,203)
{
Width=492
Height=381
Position=1
}
Add(Edit,6314885,336,203)
{
Left=10
Top=10
Width=400
Font=[Verdana,10,1,0,204]
Text="10001000FFFFFFFFFFFFFFFFFF36FFFFFFFFFFFF"
ClearAfterEnter=1
}
Add(Edit,16511036,728,392)
{
Left=10
Top=35
Width=400
Font=[Verdana,10,1,0,204]
Text=""
}
Add(Edit,7408337,686,336)
{
Left=425
Top=10
Width=45
Font=[Verdana,10,1,0,204]
Text=""
}
Add(Convertor,16381042,385,273)
{
Mode=5
link(onResult,10389261:doOperation,[])
}
Add(Math,10389261,448,273)
{
ResultType=0
Point(doClear)
link(Op1,5709474:Var1,[(454,261)(442,261)(442,317)])
}
Add(Hub,13352919,280,266)
{
OutCount=4
link(onEvent1,10389261:doClear,[(431,272)(431,286)])
link(onEvent2,5303646:doEnum,[])
link(onEvent3,6000855:doOperation,[(326,286)(326,342)])
link(onEvent4,3472694:doStrCat,[(316,293)(316,398)])
}
Add(GetDataEx,5709474,448,312)
{
link(Data,10389261:Result,[])
}
Add(Math,6000855,441,336)
{
OpType=1
Op1=1
ResultType=0
link(onResult,12120833:doOperation,[])
link(Op2,5709474:Var2,[])
}
Add(Math,12120833,490,336)
{
OpType=1
Op2=2
ResultType=0
link(onResult,13825976:doOperation,[])
}
Add(Math,13825976,539,336)
{
OpType=4
Op2=255
ResultType=0
link(onResult,15704333:doOperation,[])
}
Add(Convertor,51853,637,336)
{
Mode=6
link(onResult,7408337:doText,[])
}
Add(Math,15704333,588,336)
{
Op2=1
ResultType=0
link(onResult,51853:doConvert,[])
}
Add(StrCat,3472694,679,392)
{
link(onStrCat,16511036:doText,[])
link(Str1,3628615:Var3,[(685,250)])
link(Str2,7408337:Text,[])
}
Add(GetDataEx,3628615,336,245)
{
link(Data,6314885:Text,[])
}
Add(Button,4234959,231,266)
{
Left=140
Top=60
TabOrder=-1
Caption="CRC"
link(onClick,13352919:doEvent1,[])
}
Add(Str_Enum,5303646,336,273)
{
Delimiter=""
Step=2
link(onEnum,16381042:doConvert,[])
link(String,3628615:Var2,[])
}

карма: 22

1
Голосовали:Ex_
Ответов: 16884
Рейтинг: 1239
#64: 2013-02-11 01:33:17 ЛС | профиль | цитата
Я бы проверил
If (Length(s) mod step)<>0 then exit;
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26160
Рейтинг: 2127
#65: 2013-02-11 12:10:31 ЛС | профиль | цитата
Tad писал(а):
Я бы проверил

Я специально сделал вывод остатка и слегка усложнил код. Спрашивал же тебя про то -- выдавать остаток или не выдавать Сам решил его выдавать. А теперь ты всплыл с идеями, когда работа уже проведена. Вывод только кратных групп реализуется гораздо проще, я бы не гробил столько лишнего времени
------------ Дoбавленo в 12.10:
Добавил свойство OnlyDivGroup. Те можно управлять выводом кратных и не кратных групп
карма: 22

0
Ответов: 55
Рейтинг: 0
#66: 2013-04-17 15:40:23 ЛС | профиль | цитата
До сих пор я пользовался на микроконтроллерах табличным способом расчета CRC8, а в HiAsme теми, что разработал nesco,еще раз спасибо.
Решил применить на МК математический метод. Взял программу из http://ru.wikipedia.org/wiki/CRC
изменил начальное значение на 0 и не могу получить такое же значение,как у nesco.

unsigned char Crc8_S(unsigned char *pcBlock, unsigned char len)
{
unsigned char crc = 0;
unsigned char i;

while (len--)
{
crc ^= *pcBlock++;

for (i = 0; i < 8; i++)
crc = crc & 0x80 ? (crc << 1) ^ 0x31 : crc << 1;
}

return crc;
}
Что мне нужно подправить в программе для МК, чтобы она стыковалась с расчетами CRC8 от nesco?
------------ Дoбавленo в 15.40:
Разобрался
unsigned char Crc8_S(unsigned char *pcBlock, unsigned char len)
{
unsigned char crc = 0;
unsigned char i;

while (len--)
{
crc ^= *pcBlock++;
for (i = 8; i > 0; i--)
{
crc = crc & 0x01 ? ((crc ^ 0x18)>> 1) | 0x80 : crc >>= 1;

}

}

return crc;
}
так работает.
карма: 0

0
66
Сообщение
...
Прикрепленные файлы
(файлы не залиты)