ako naprogramovat

Jan Waclawek konfera na efton.sk
Pondělí Duben 15 11:09:05 CEST 2024


Neexistuje dokonala checksuma a paranoie nikdy nie je dost... :-) ak tie
pakety nasleduju tesne za sebou, tak kontrolovat hlavicku nasledujuceho
vobec nemusi byt odveci strategia; ale vo vseobecnosti to asi naozaj nie
je nutne.

U niektorych protokolov sa da napriklad paranoidne kontrolovat aj suhlas
dlzky paketu s jeho vyznamom; ale na druhej strane to zase prinasa
rigidnost (nemenitelnost) protokolu.

Ta modbusovska medzera je zaujimava moznost, rovnako ako napr. pouzitie
BREAKu, ale urcite to tiez nie je vhodne vsade.

Inaksie povedane, univerzalna dokonalost v jednocipoch neexistuje.

>Asi jediné ře±ení beze změny protokolu 
>nebo způsobu přenosu se mi zdá neustále plovoucím způsobem zkou±et chytat signaturu 

Ano.

>a mít případně rozjetých víc čtení...

To nie je potrebne, ak sa data aj tak buffruju, tak v pripade, ze sa zisti
vadny paket, staci si prejst vsetky data, najst v nich hlavicku, a posunut
buffer prislusnym sposobom.

wek

PS. Dano, posuvanie celeho bufra je na jednej strane priserne neefektivne
(standardom je kruhovy buffer hadikoveho typu
https://mikrozone.sk/pluginy/userjournals_menu/userjournals.php?blog.53 ),
na druhej strane je fakt. ze sa v nom ovela prijemnejsie hrabe (t.j.
extrahuju data). Na tretej strane tu bohate staci aj linearny buffer a
stavovy stroj, ako uz bolo spominane.


----- Original Message ---------------


>Taky myslím. Pokud přečtu v±e od B5 62 aµ po checksum a ten je v pořádku, tak 
>povaµuji paket za korektní a nečekám na dal±í paket. 
>(To bych taky mohl následně dostat nějaký nesmysl, který by mi tím pádem zabil ten 
>první, korektně přijatý, paket)
>
>Taky můµe ale nastat situace, µe přijde B5 62 a pár bajtů prvního paketu a pak se 
>komunikace odmlčí (a zbytek prvního paketu nepřijde), pak B5 62 a zbylých 30 bytů 
>druhého paketu v pořádku včetně checksumu. Takµe kdybych se syncnul na tu první 
>hlavičku a přečetl následujících 30 bytů, tak seµeru i začátek druhého paketu (ale 
>ne celý), checksum nebude souhlasit, coµ je správně, ale následuje zbytek druhého 
>paketu, který musím odignorovat aµ do jeho konce a do dal±í signatury. (tady opět 
>čeká čert, který do druhého paketu jako platná data dá zase signaturu B562, na 
>kterou se zase syncnu a začnu číst paket, ale ten samozřejmě zase bude mít ±patný 
>checksum ... a tak dále aµ do skonání světa). Asi jediné ře±ení beze změny protokolu 
>nebo způsobu přenosu se mi zdá neustále plovoucím způsobem zkou±et chytat signaturu 
>a mít případně rozjetých víc čtení...
>
>D.O.
>
>On 15 Apr 2024 at 6:58, Martin Záruba wrote:
>
>> Tomu nerozumím. Pokud mám na konci paketu checksum, pak jakmile přečtu 
>> odpovídající (a můµe být i variabilní podle obsahu, ale zjistitelný) 
>> počet znaků a souhlasí mi checksum, je paket platný. Pokud jsou za ním 
>> nesmysly, nezajímají mě aµ do počátečního "B5".
>> 
>> Martin Záruba
>> 
>> Dne 15.4.2024 v 0:40 Zuffa Jan napsal(a):
>> > Ja k tomu dodam len, ze je potrebne mysliet aj na "false sync"
>> > to znamena ze ked paket zacina B5 tak ked sa docita zvysok dat
>> > je mozne povazovat ho za platny az ked dalsi zacina tiez bajtom B5 inak
>> > moze dojst k situacii kedy je zaciatok zly a potom uz nesedi nic. Netreba sa spoliehat
>> > na to ze komunikacia  a zariadenie su  idealne. V mojom profesionalnom zivote som
>> sa stretol uz velakrat s tym, ze na stole vsetko fungovalo ale v realnych
>> podmienkach nie.
>> >
>> > J.
>> >



Další informace o konferenci Hw-list