<html><body>Ahoj Danieli,<br><br>  Odpověď závisí na tom zdali budeš chtít přenášet binární data.<br><br>  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é.<br><br>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<br><br>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š. <br><br>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)<br><br>Pokud počítáš s chybami na lince, je potřeba přidat nějaké CRC/checkcum ale tím se vše zkomplikuje.<br><br>Pokud budeš chtít mít proměnné strukturované, tak name=value bych nahradil JSONem (např: <br><br>"module1=[power=on,amps=3.14159,warn='OVERLOADED']\n"<br><br>Franta<br><aside>
---------- Původní e-mail ----------<br>
Od: balu <balu@k-net.fr><br>
Komu: HW-news <hw-list@list.hw.cz><br>
Datum: 6. 8. 2017 13:18:28<br>
Předmět: seriova komunikacia
</aside><br><blockquote data-email="balu@k-net.fr">Zdravim osadenstvo,
<br>
<br>hram sa s takym vikendovym projektom a rad by som sa spytal skusenejsich 
<br>ako sa to robi :-)
<br>
<br>Rad by som si postavil panelovy indikator, alebo mozeme ho nazvat 
<br>displej, ktory bude zobrazovat povedzme 200 parametrov. Tieto sa budu 
<br>posielat z jedneho zdroja po seriovej linke, komunikacia cisto jednosmerna.
<br>
<br>Komunikaciu bude prijimat niekolko (5, 10, 20?) mikrokontrolerov (ano, 
<br>chcem pouzit Arduino), ktore by si mali vyzobnut prislusny parameter a 
<br>na zaklade jeho hodnoty nieco urobit/rozsvietit/nastavit.
<br>
<br>Rozmyslal som, ako navrhnut komunikacny protokol, aby bol jednoduchy na 
<br>implementaciu (neviem programovat), a zaroven dostatocne flexibilny, aby 
<br>sa dali posielat parametre rozneho typu, napriklad bit, celociselna 
<br>hodnota, float hodnota, kratky text.
<br>
<br>Aby sa to dalo lahko parsovat, asi by som posielal meno parametra a 
<br>potom hodnotu. Nejake fixne znaky na ohranicenie parametra, napr:
<br>
<br><parameter000>
<br>
<br>a podobne na hodnotu
<br>
<br>#0.123456789# #100# #Alarm#
<br>
<br>kazdy mikrokontroler by potom cakal na < znak, prijal urcity pocet 
<br>bytov, porovnal s tym co ho zaujima, ak je to ono tak by si zobral aj 
<br>hodnotu za #. Alebo skombinovane
<br>
<br><parameter000#0.123456789>
<br>
<br>Nejake velke osetrovanie iregularit asi nebude treba, komunikovat budem 
<br>sam so sebou, lokalne na doske (paneli), nie dlha vzdialenost ani rusenie.
<br>
<br>Ako by to robil niekto, kto tomu rozumie? :-)
<br>
<br>b.
<br>
<br>_______________________________________________
<br>HW-list mailing list  -  sponsored by www.HW.cz
<br>Hw-list@list.hw.cz
<br>http://list.hw.cz/mailman/listinfo/hw-list
<br></blockquote></body></html>