seriova komunikacia

Jan Waclawek konfera na efton.sk
Neděle Srpen 6 21:41:05 CEST 2017


Este preposielam jednu variaciu na danu temu:


Osobne by som sa prihovoril za jednopismenkove prikazy, myslim, ze 23
by ich malo vystacit tak akurat. Potom by som zvolil konstantnu
velkost buffera, napr. 4-8znakov. A zvolil si break-reset linky,
najlepsie 0x00 a nejake oddelovacie znaky... A teraz ta pointa.
Prenasal by som len znaky, cislice a niekolko riadiacich znakov ASCII,
teda vsetka komunikacia by isla len cez textove hexa retazce.
Jednoduchy checksum sa da urobit tak, ze retazec posles dvakrat
posebe. Priklad:

> A WWwwXXxxYYyyZZzz CR+LF
- prenesies udaje do A a to za tym je hexa 4byty zakladnych typov v
C-ku a ukoncovacia sekvencia

0x00 0x00 0x00 0x00
- reset / resynchro linky

A snad este to najdolezitejsie, nepovedal si odkial budes posielat
data, ci z PC alebo nejakeho tvojho udelatka, podla toho sa da zase
zjednodusit ci rozsirit tento protokol. Programuje sa velmi lahko a v
podstate to napises cele z voleya v asembleri na posedenie pri kave aj
s osetrenim chyb...





----- Original Message ---------------
>dakujem, to dole vyzera trochu sofistikovanejsie, ale tiez uzitocne.
>
>Ma to byt taky maly analogovy displej ku digitalnym datam. Bude to 
>ukazovat vybrane parametre mojich geretov v robote, nie viac ako 200 
>rucickovych merakov, pole anunciatorov a tak :-)
>
>Este by sa hodili nejake velke priemyselne indikatory, velmi sa mi pacia 
>tie polgulove 1-2 palcove s kovovym ramom. Teraz sa to uz nerobi, vsetko 
>z plastu... Keby sa niekomu valalo na policke a chcel by vyhodit tak by 
>ma urcite zaujimali :-)
>
>b.
>
>
>
>
>
>On 06/08/2017 13:56, Franti¹ek Burian wrote:
>> Ahoj Danieli,
>>
>> Odpovìï závisí na tom zdali bude¹ chtít pøená¹et binární data.
>>
>> Pokud ne, a celý protokol bude jen text, posílal bych zprávy ve stylu:
>> "name=value\n", v klientech kontroloval jediný separaèní znak \n, kdy¾
>> pøijde, provedl bych akci zalo¾enou na pøedchozím pøijatém textu (nemusí
>> být name=value. mù¾e být i signalizace stavu, napø
>> "black_hole_detected"). Toto podporuje i mezery v názvu promìnné.
>>
>> Pokud bude¹ chtít pøená¹et i binární RAW data, tak pokud nevadí ¾e je
>> expanduje¹ do HEX, posílal bych je v hex blobu. Pokud vadí (kvùli
>> velikosti), zvolil bych protokol SLIP, tedy 0xC0 jako separátor zpráv,
>> 0xDB 0xDC jako "symbol" 0xC0, symbol 0xDB 0xDD jako symbol 0xDB a pro
>> separaci name/value symbol 0xDB 0xDE, zpracování shodné jako v
>> pøedchozím pøípadì, s tím rozdílem ¾e mù¾e¹ posílat binární data pøímo a
>> nestará¹ se o délku - tu ti "odseparuje" ten symbol 0xC0 resp 0xDB 0xDE
>>
>> Já osobnì bych se ale pøimlouval k textu oddìleném \n proto¾e se ti to
>> bude lépe ladit - nachrlit pøedpøipravený text ze souboru na sériovku
>> zvládne¹, a co v tom souboru bude za parametry si pìknì pøeète¹.
>>
>> Asi bych dal feature ¾e pokud klientská stanice objeví první znak zprávy
>> jako 0x0A tak ho zahodí, pak to bude fungovat i na windows. (nebo
>> poslední znak zprávy 0x0D - teï zrovna nevím zdali \n je CR nebo LF na
>> linuxu)
>>
>> Pokud poèítá¹ s chybami na lince, je potøeba pøidat nìjaké CRC/checkcum
>> ale tím se v¹e zkomplikuje.
>>
>> Pokud bude¹ chtít mít promìnné strukturované, tak name=value bych
>> nahradil JSONem (napø:
>>
>> "module1=[power=on,amps=3.14159,warn='OVERLOADED']\n"
>>
>> Franta
>_______________________________________________
>HW-list mailing list  -  sponsored by www.HW.cz
>Hw-list at list.hw.cz
>http://list.hw.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list