Panda38 Profesionál


Založen: 18.9.2012 Příspěvky: 399 Bydliště: Praha, Most
|
Zaslal: 01 říjen 2013, 17:10 Předmět: |
|
|
Možnosti paketování např.:
- Zajištění, aby data paketu neobsahovala řídicí znaky. Ohraničení paketu může být pomocí ASCII řídicích kódů (SOH, SYN atd), data jsou zakódovaná do menšího počtu bitů - v nejjednodušším případě jeden bajt jako 2 HEX znaky (zpráva bude 2x delší). V lepším případě se data přenáší např. po 7 bitech, 8 datových bajtů se tak přenese jako 9 paketových bajtů. Nebo se přepíná sada - pro bajty 0..1f se vyšle prefix SI/SO a přenášejí se pak jako 20..3f. Vhodné u rušených linek, lze kontrolovat i neplatné bajty. Varianta s HEX znaky je dobrá u malých zařízení, protože je spolehlivá a jednoduchá. Jsou-li potřeba přenášet jen ASCII znaky, lze data zakódovat po 6 bitech do písmen (0..9, @, A..Z, ', a..z), některé znaky mohou být řídicí (< a > ohraničuje začátek a konec paketu).
- Escape sekvence - data mohou obsahovat i řídicí znaky, ale před každým bajtem s touto hodnotou se vyšle escape kód informující, že to jsou data. Např. začátek a konec paketu se označí bajty SOH EOT. Objeví-li se v datech hodnota SOH, EOT nebo ESC, vyšle se před ní bajt ESC. Případné rozsynchronizování (chytnutí falešného řídicího kódu) se ošetří kontrolou CRC paketu. Vhodné u středně rušených linek.
- Binární přenos se startovací sekvencí. Přenáší se všechna data binárně tak jak jsou, ale před paketem je speciální posloupnost několika bajtů (magic bajty, jejichž výskyt v datech je málo pravděpodobný) a paket je zajištěný dobrým CRC. Pokud je příjemce v synchronizaci, je přenos rychlý a stabilní. Pokud se rozjede, čeká na magic posloupnost a ověří CRC paketu, při chybě pokračuje v čekání. U spolehlivých linek je tohle asi tak nejlepší způsob.
U RS485 se neustále poslouchá linka (pomocí přerušení), master se dotazuje jednotlivých zařízení a pokud zařízení má odpovědět, přepne na dobu vysílání vysílací linku a pak ji musí zas uvolnit (sledovat zda se dokončilo odeslání posledního bajtu). |
|