Zdravím všechny,
mám Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-70-generic x86_64) a řeším sériovou prostřednictvím /dev/ttyS0 (klasický HW COM). K počítači jej mám připojený kříženým kabelem a USB to Serial profilic. (Neměl jsem problém komunikovat takto s jiným PC s Win ani s např. Raspberry).
Posílání znaků z linuxu funguje dobře (jak přes echo na /dev/ttyS0, tak přes delphi synapse). Nevyskytují se žádné chyby, přenese se přesně znak po znaku. Při pokusu číst (opět přes synapse (recvByte i recvBuff...) i přes "cat -v < /dev/ttyS0) se během komunikace vyskytují chyby - cca každý 5tý znak. Takto vypadá vstup pokud zasílám pouze znak "X" (ať už jeden nebo více najednou). Zkoušel jsem posílat i HEX čísla atd.. výstup je stejný.
XM-XxXXXXYXXM-XXXXYXM-XM-XM-XXXXXXXZXXXX\XM-XxZXXM-XXXXXM-XXYXXXXXM-XXXXXXXM-X\XxYXXYXXxYXXXXXXX\XXXX
Na PC ze kterého posílám znaky mám windows 7 a používám střídavě Hercules a Terminal pro odesílání. Na pozadí mi běží Access Port - monitor, takže vidím co přesně odchází.
Přes stty jsem postupně nastavil RAW input a vypnul -hupcl. S tímto nastavením už je výstup alespoň čitelný ale stále mám na vstupu parazitní znaky viz ukázka. Ve vstupu je vidět jistá pravidelnost a opakujicí se parazitní znaky tudíž si nemyslím, že jsou to nahodilé chyby komunikace, spíš tam ještě zasahuje něco ze systému nebo předzpracování portu ale ani po dlouhém hledání na různých fórech jsem nic mimo RAW input nastavení nenašel.
Nastavení stty:
root@ubuntu:~# stty -a -F /dev/ttyS0
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O;
min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke -flusho -extproc
Budu rád za jakoukoli radu. Díky.