Вверх ↑
Этот топик читают: Гость
Ответов: 203
Рейтинг: 2
#1: 2019-02-11 22:52:23 ЛС | профиль | цитата
Собственно строка запроса в HEX e5 a7 cd 00 07 04 59 31 30 40 01 05.
Подозреваю что два последних байта это CRC. 07 это идентификатор устройства.
Использовал кубик CRC и всю информацию из последней таблицы из https://ru.wikipedia.org/wiki/%D0%A6%D0%B8%D0%BA%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B8%D0%B7%D0%B1%D1%8B%D1%82%D0%BE%D1%87%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%B4#CRC-32.
Может у кого то будут идеи как можно попробовать вычислить полином методом перебора?
карма: 0

0
Ответов: 4628
Рейтинг: 749
#2: 2019-02-12 11:49:18 ЛС | профиль | цитата
Зачем "перебором"? А что, в документации к этому "запросу" не описано построение значения?
карма: 26

0
Ответов: 8921
Рейтинг: 823
#3: 2019-02-12 12:37:44 ЛС | профиль | цитата
kaban4ik, в соседней теме "Кодер-декодер с последующим переспросом" как раз выложил IC с полиномом на верхней точке, перебирайте на здоровье
карма: 19

0
Ответов: 203
Рейтинг: 2
#4: 2019-02-12 19:02:45 ЛС | профиль | цитата
Netspirit, нет. пытаюсь разобрать протокол обмена. Вот перехватил обмен и думаю.
Леонид, по ответу понял что дело бесполезное
карма: 0

0
Ответов: 8921
Рейтинг: 823
#5: 2019-02-12 20:49:44 ЛС | профиль | цитата
kaban4ik, полиномов на 8-ми битное слово совсем мало, перебрать их по имеющейся строке -- плёвое дело (прочитал ваш предполагаемый полином справа налево)
Плёвое дело


Add(MainForm,2953706,56,98)
{
link(onCreate,2284618:doEvent1,[])
}
Add(InlineCode,7214762,280,168)
{
@Hint=#16:Вычисление CRC-8|
WorkPoints=#5:doCRC|
EventPoints=#5:onCRC|
DataPoints=#7:DataStr|3:Pol|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses kol,Share,Windows,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|4: |9: public|25: _data_Data:THI_Event;|18: Pol:THI_Event;|22: DataStr:THI_Event;|20: onCRC:THI_Event;|0:|49: procedure doCRC(var _Data:TData; Index:word);|5: end;|0:|14:implementation|0:|28:procedure THiAsmClass.doCRC;|23:var _Str:string; // Код|29: i,j,_Pol,CRC,_Len: dword;|5:begin|36: _Str := ReadString(_Data,DataStr);|23: _Len := Length(_Str);|62://-------Author Galkov-------------------------------------- |39: _Pol := ReadInteger(_Data,Pol) shl 8;|12: CRC := 0;|31: for i := 1 to _Len+1 do begin|31: CRC := CRC + byte(_Str[i]);|28: for j := 1 to 8 do begin|23: CRC := CRC shl 1;|55: if (CRC and $10000) > 0 then CRC := CRC xor _Pol;|8: end;|6: end;|32: _hi_onEvent(onCRC, CRC shr 8);|4:end;|0:|4:end.|
link(onCRC,16658992:doText,[])
link(Pol,16305827:Text,[])
}
Add(Edit,12744232,147,56)
{
Left=5
Top=20
Width=185
Text="e5 a7 cd 00 07 04 59 31 30 40"
ClearAfterEnter=1
link(onEnter,13826440:doWork1,[(186,69)(186,97)(130,97)])
}
Add(Button,3945190,56,168)
{
Left=40
Top=85
Caption=">>"
link(onClick,16574716:doWork2,[])
}
Add(Label,8350770,196,119)
{
Left=5
Top=45
Width=185
Color=12639424
}
Add(Replace,4200945,147,119)
{
SubStr=" "
link(onReplace,8350770:doText,[])
link(Str,12744232:Text,[])
link(Dest,3423710:Value,[(167,103)(202,103)])
}
Add(Memory,3423710,196,56)
{
Default=String()
}
Add(Hub,2284618,98,112)
{
link(onEvent1,10047154:doWork3,[(137,118)(137,111)(277,111)])
link(onEvent2,13826440:doWork2,[])
}
Add(StreamConvertor,16203537,196,168)
{
Mode=3
Point(Data)
link(onResult,7214762:doCRC,[])
link(Data,8350770:Caption,[])
}
Add(Edit,16305827,287,119)
{
Left=110
Top=85
Text="305"
DataType=2
}
Add(Edit,16658992,336,168)
{
Left=180
Top=85
Width=70
link(onChange,6452593:doCompare,[])
}
Add(Label,14540917,336,119)
{
Left=110
Top=65
Width=120
Caption="Полином CRC-8"
AutoSize=1
}
Add(Edit,6817378,287,21)
{
Left=260
Top=25
Text="05 01"
link(onChange,10047154:doWork1,[(326,27)(326,62)(277,62)])
}
Add(Label,14273767,448,77)
{
Left=260
Top=50
}
Add(HubEx,13826440,126,119)
{
link(onEvent,4200945:doReplace,[])
}
Add(HubEx,10047154,273,70)
{
link(onEvent,6317759:doSplit,[])
}
Add(Convertor,16444712,350,28)
{
Mode=5
link(onResult,11713452:doValue,[])
}
Add(MultiStrData,6317759,287,70)
{
Char=" "
link(Str,6817378:Text,[])
link(onPart1,16444712:doConvert,[(333,76)(333,34)])
link(onPart2,427926:doConvert,[])
}
Add(Convertor,427926,350,77)
{
Mode=5
link(onResult,8724367:doCalc,[])
}
Add(Memory,11713452,399,28)
{
}
Add(MathParse,8724367,399,77)
{
MathStr="%1*16 + %2"
ResultType=0
link(onResult,14273767:doText,[])
link(X1,11713452:Value,[])
}
Add(Label,12828739,448,28)
{
Left=260
Top=5
Width=35
Height=17
Caption="CRC-8"
}
Add(For,2184731,105,224)
{
Start=256
End=512
link(onEvent,13170906:doEvent1,[])
}
Add(Button,4116214,56,224)
{
Left=20
Top=130
Width=75
Caption="Перебрать"
link(onClick,2184731:doFor,[])
}
Add(If_else,6452593,399,168)
{
link(onTrue,2184731:doStop,[(443,174)(443,269)(97,269)(97,237)])
link(Op1,8724367:Result,[])
}
Add(Hub,13170906,154,224)
{
link(onEvent1,16305827:doText,[(244,230)(244,125)])
link(onEvent2,16574716:doWork3,[(186,237)])
}
Add(HubEx,16574716,182,168)
{
link(onEvent,16203537:doConvert,[])
}

карма: 19

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