Вверх ↑
Этот топик читают: Гость
Ответов: 2
Рейтинг: 0
#1: 2021-01-17 15:04:07 ЛС | профиль | цитата
Доброго дня всем,я новичок в этом деле, долго голову бью но не могу понять как компоненты делать, в HIASM есть готовый компонент CRC 16/32, но мне нужен компонент CRC 8 CheckSum8 2s Complement 0x100 - Sum Of Bytes, если бы вы мне помогли я был бы благодарен, софт свой собрал вот только в компоненте загвоздка осталась, может подскажете как переделать готовый компонент 16/32 либо новый собрать.
Пример расчёта, имеем к примеру значение A8B0ABB2B5BBBABAAAAA, A8+B0+AB+B2+B5+BB+BA+BA+AA+AA=ED, далее от ED-0x100=0xD9, одним словом нужно чтоб из A8B0ABB2B5BBBABAAAAA получил 0x13.

Редактировалось 4 раз(а), последний 2021-01-25 09:54:42
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 4443
Рейтинг: 711
#2: 2021-01-18 12:13:21 ЛС | профиль | цитата
Есть компонент InlineCode. В нем на языке Delphi нужно реализовать требуемый алгоритм. Когда будет готов - переделать в компонент.
Вероятно, брать за основу компонент CRC16_32 не стоит - нет ничего общего. Алгоритм CRC-16 умещается в одну процедуру на Delphi, CRC-8, вероятно, так же.
карма: 26

0
Ответов: 8675
Рейтинг: 803
#3: 2021-01-18 13:05:16 ЛС | профиль | цитата
elpaso544
Пример


Add(Edit,4093922,161,77)
{
Left=30
Top=15
Width=240
Text="A8B0ABB2B5BBBABAAAAA"
}
Add(Button,5822269,112,126)
{
Left=95
Top=60
link(onClick,16538521:doWork1,[])
}
Add(Label,2192063,210,126)
{
Left=170
Top=55
Width=55
Height=28
Font=[MS Sans Serif,14,1,0,1]
}
Add(MultiElement,16538521,161,126)
{
link(onEvent1,2192063:doText,[])
link(Data1,4093922:Text,[])
}
BEGIN_SDK
Add(EditMulti,15429640,21,21)
{
EventCount=1
WorkCount=1
DataCount=1
Width=384
VOffset=63
HOffset=57
link(doWork1,16076132:doEvent1,[])
}
Add(Str_Enum,14384053,77,91)
{
Delimiter=""
Direct=1
link(onEnum,4639633:doConvert,[])
link(onEndEnum,656466:doData,[(116,104)(116,153)])
link(String,15429640:Data1,[])
}
Add(Convertor,4639633,133,91)
{
Mode=5
link(onResult,11868033:doEvent1,[])
}
Add(Hub,11868033,182,91)
{
link(onEvent1,15585894:doOperation,[(207,97)(207,62)])
link(onEvent2,9864418:doCalc,[(207,104)(207,111)])
}
Add(Math,15585894,217,56)
{
OpType=8
Op2=2
ResultType=0
link(Op1,15169103:Var2,[])
}
Add(MathParse,9864418,217,105)
{
MathStr="%0 + ((%1=0)*16 + (%1=1))*%2"
Point(doDefault)
link(X1,15585894:Result,[])
}
Add(Hub,16076132,42,84)
{
link(onEvent1,9864418:doDefault,[(67,90)(67,118)])
link(onEvent2,14384053:doEnum,[])
}
Add(DoData,656466,217,147)
{
link(onEventData,9592238:doCalc,[])
link(Data,9864418:Result,[])
}
Add(Convertor,1778923,308,147)
{
Mode=6
link(onResult,15429640:onEvent1,[(347,153)(347,90)])
}
Add(MathParse,9592238,266,147)
{
MathStr="(%1 mod 256) - %2 + 1"
link(onResult,1778923:doConvert,[])
link(X2,15169103:Var3,[(279,47)])
}
Add(GetDataEx,15169103,217,42)
{
Angle=3
link(Data,14384053:NumSubStr,[(122,47)(122,135)(83,135)])
}
END_SDK

карма: 18

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