soros kommunikáció: stty

 ( bzs | 2016. december 26., hétfő - 16:21 )

Sziasztok.

Raspberryn szeretnék olvashatóan olvasni soros portról, a /dev/ttyAMA0-ról.
Néha idióta karakterek jelennek meg, nem tudom miért, de sejtem, hogy összefüggésben van azzal, hogyan állítom be az stty paramétereit.

Jelenleg ez megy:

#!/bin/bash

stty -F /dev/ttyAMA0 4800 8N1 -cstopb -parenb -icanon min 1 time 1
#stty -F /dev/ttyAMA0 115200 8N1 -cstopb -parenb -icanon min 1 time 1

while true; do
cat -v < /dev/ttyAMA0
done
# igen am, de hogy iranyitom fajlba oly módon, hogy azert a terminalban is lassam, mit fogad a cat?

exit 0

Egyelőre hibátlanul pörög. Kérdés az, számíthatok-e anomáliára, azaz értelmezhetetlen karakterek megjelenésére, amitől a cat is kiakad, azaz leáll?
(Négyzetek, téglalapok, cirádás karakterek, cirádás négyzetek, egyebek. Meg sok-sok space jelenik meg anomália esetén)

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

ha a while-done szakaszt kicserélem erre:

while true; do
        read LINE < /dev/ttyAMA0
        echo $LINE
done

...akkor jönnek a hüjekarakterek:

��w��rSɊ �ʂ�Ή�ªb*����ѱ���'�b������bbbé
é�I��I�r��b��bj����ѱ9����ձ[��� 5)�$GPGGA,144041.000,4730.4902,N,01901.4685,E,1,4,3.03,128.9,M,41.1,M,,*53
éGPGSA,30,05,09,07,,,,,,,,,5.10,3.03,4.11*0A
éC,144041.000,A,4730.4902,N,01901.4685,E,0.28,20.21,261216,,,A*58
éGPVTG&���� 

Nem értem, miért.
Ha sima
cat /dev/ttyAMA0
fut le, akkor is jönnek a hieroglifák

---
--- A gond akkor van, ha látszólag minden működik. ---
---

Aszem ez is hibátlanul hozza le a mondatokat:

while read line; do
     if [ "$line" != "EOF" ]; then
          echo "$line"
          echo "$line" | grep "RMC" >> /log.nmea
     else
          break
     fi
done < /dev/ttyAMA0
# es ez mar ki is irja fajlba.
exit 0

Kérdés:
Miért kell a read-ra ráengedni a folyamot? valami szűrést csinál a read?

---
--- A gond akkor van, ha látszólag minden működik. ---
---

> igen am, de hogy iranyitom fajlba oly módon, hogy azert a terminalban is lassam, mit fogad a cat?

man 1 tee

tee, igen, de megoldottam ezt feljebb. Most már csak az a kérdés, a read miért kell, anélkül miért nem megy. És ha már megy, az végleges-e...

---
--- A gond akkor van, ha látszólag minden működik. ---
---

A probléma még mindig fennáll, úgy látszik a "read" lényegtelen itt.
Rapszodikusan jelentkezik a hiba.

$GPRMC,173026.000,A,47xx.4193,N,01855.1222,E,0.32,138.75,261216,,,A*63
$GPRMC,173025.000,A,47xx.4193,N,01855.1221,E,0.45,137.97,261216,,,A*60
$GPRMC,173023.000,A,47xx.4194,N,01855.1215,E,0.52,139.61,261216,,,A*67
$GPRMC,173028.000,A,47xx.4195,N,01855.1224,E,0.40,138.75,261216,,,A*68
�������
$GPRMC,173022.000,A,47xx.4192,N,01855.1211,E,0.56,139.61,261216,,,A*60
$GPRMC,173024.000,A,47xx.4194,N,01855.1219,E,0.51,139.61,261216,,,A*6F
$GPRMC,173027.000,A,47xx.4194,N,01855.1223,E,0.39,138.75,261216,,,A*6F
$GPRMC,173029.000,A,47xx.4196,N,01855.1226,E,0.43,138.75,261216,,,A*6B
$GPRMC,173026.000,A,47xx.4193,N,01855.1222,E,0.32,138.75,261216,,,A*63

---
--- A gond akkor van, ha látszólag minden működik. ---
---

A célcucc, ami küldi az adatokat, rendesen működik? Jó a tápja?
A drótozás stabil?

Illetve ugye nem a Pi3 félig szoftveres soros portjával szívsz? :) (A ttyAMA0 névből talán az valószínű, hogy nem, viszont a board típusa eddig mintha nem derült volna ki.)

Most éppen a zero és a b+ volt soron soros porttal. Agyilag kiütött a dolog pár napig.

---
--- A gond akkor van, ha látszólag minden működik. ---
---

Inkább kommunikációs problémának néz ki, mint szoftveresnek. Ahogy feljebb is írták, ellenőrizd a tápegységeket, vezetékelést.

Minden kábel és áram rendben.

---
--- A gond akkor van, ha látszólag minden működik. ---
---