nastavenie serioveho portu cez USB prevodnik CH340 na RasPi - vyriesene + nova otazka

Richard Kaliciak hw.kaliciak na stonline.sk
Pondělí Březen 18 18:03:22 CET 2019


Diky.

stty vypise toto:
richard na raspberrypi ~ $ stty -F /dev/ttyACM0
speed 19200 baud; line = 0;
min = 0; time = 0;
-brkint -icrnl -imaxbel
-opost
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke


richard na raspberrypi ~ $ stty -F /dev/ttyACM0 -a
speed 19200 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 = 0; 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


cat /proc/tty/driver/serial nevypise nic, lebo nic nenajde
richard na raspberrypi ~ $ sudo cat /proc/tty/driver/serial
cat: /proc/tty/driver/serial: Datei oder Verzeichnis nicht gefunden

richard na raspberrypi ~ $ sudo cat /proc/tty/drivers
/dev/tty             /dev/tty        5       0 system:/dev/tty
/dev/console         /dev/console    5       1 system:console
/dev/ptmx            /dev/ptmx       5       2 system
/dev/vc/0            /dev/vc/0       4       0 system:vtmaster
rfcomm               /dev/rfcomm   216 0-255 serial
acm                  /dev/ttyACM   166 0-255 serial
ttyAMA               /dev/ttyAMA   204 64-77 serial
ttyprintk            /dev/ttyprintk   5       3 console
pty_slave            /dev/pts      136 0-1048575 pty:slave
pty_master           /dev/ptm      128 0-1048575 pty:master
unknown              /dev/tty        4 1-63 console

richard na raspberrypi ~ $ sudo cat /proc/tty/driver/ttyAMA
serinfo:1.0 driver revision:
0: uart:PL011 rev2 mmio:0x3F201000 irq:87 tx:40671 rx:2127 RTS|CTS|DTR
richard na raspberrypi ~ $

ale ttyAMA nieje ttyACM. Ci ano?

Na tej stranke, co ste poslal, je este:

Set the default configuration with stty to 9600 bps, 8N1, no flow control:

stty -F /dev/serial_port cs8 -parenb -cstopb -clocal -echo raw speed 9600

 # What the arguments mean:
 #   cs8:     8 data bits
 #   -parenb: No parity (because of the '-')
 #   -cstopb: 1 stop bit (because of the '-')
 #   -clocal: Disable modem control signals (no hardware flow control)
 #   -echo: Without this option, Linux will sometimes automatically send back
 #          any received characters, even if you are just reading from the serial
 #          port with a command like 'cat'. Some terminals will print codes
 #          like "^B" when receiving back a character like ASCII ETX (hex 03).

u mna je clocal nastavene, tak to skusim vypnut.
Vyskusane, bez zmeny, skusal som aj -cdtrdsr, ale argument je neplatny.
Este skusim -hupcl.
==> stty -F /dev/ttyACM0 -hupcl
super, uz je to bez resetu! Ale cat sa este stale hned ukonci.


> ad 2) co píše strace -s 1000 cat /dev/ttyACM0? Nepřijme nějaký EOF?
strace vypise vela, vid http://kaliciak.ddns.net/temp/strace_ttyACM0.txt
, ale EOF som tam nenasiel.

Este skusim stty -F /dev/ttyACM0 raw
==> cat /dev/ttyACM0 bezi dalej, vypisuje na konzolu to, co posiela
arduino.

Diky moc vsetkym.

Zhrnutie:
stty -F /dev/ttyACM0 -hupcl raw

Richard Kaliciak

P.S.
Otazka: kam zapisat toto nastavenie, aby sa po resete RasPi obnovilo?
Nejake /etc/init?
Diky.


Am 18.03.2019 um 15:21 schrieb Martin Hanek:
> Dobrý den,
> nedávno jsme logovali něco na Debianu a naše zkušenosti jsou tyto:
> - v nastavení COM portu pomocí "stty" musí být parametr -echo, jinak
> se vše co přijme přes "cat" pošle ihned zpět jako echo
> - stav portů vypíšete pomocí: cat /proc/tty/driver/serial
> - výsledek pro ttyS2:
> 2: uart:16550A port:000003E8 irq:6 tx:0 rx:42642512 fe:6 brk:101938
> RTS|CTS|DTR
> kde RTS|CTS|DTR znamená, že jsou nastaveny na log. 1, jinak by tam nebyly
>
> Více k nastavení:
> http://rdiez.shoutwiki.com/wiki/Serial_Port_Tips_for_Linux#Configuring_a_Serial_Port_under_Linux
>
> Máme to potom takto - loguje do TXT souboru a odrolovává po hodině:
> #!/bin/bash
> COM=/dev/ttyS2
>
> cd /opt/log_ttySx/
> #nastaveni parametru komunikace 115200 8N1
> stty -F $COM 115200 cs8 -parenb -cstopb -echo
>
> sudo -u uzivatel  sh -c "cat $COM | rotatelogs -l
> log.com3-%Y.%m.%d-%H.%M.txt 3600 "
>
> Martin Hanek
> Dne 18.3.2019 v 14:46 Richard Kaliciak napsal(a):
>> Dobry den,
>>
>> vratim sa este k tejto teme. Po restarte RasPi je akosi inac nastaveny
>> seriovy port /dev/ttyACM0. USB prevodnik je na doske arduino, je to CH340.
>>
>> Ak poslem nieco do arduina cez seriovy port pomocou
>> $ echo -e "stat\r" > /dev/ttyACM0
>> tak to asi zacvici s DTR, lebo arduino sa resetne. Aj pri spusteni
>> minicom sa arduino resetne.
>>
>> Dalsia vec, co je inac je, ze
>> $  cat /dev/ttyACM0
>> prijme zopar znakov (text po resete) a ihned sa ukonci. Ale minicom
>> funguje tak, ako si to predstavujem, ziadne prazdne data a ani nove
>> riadky nevypisuje, len uzitocne data.
>> Tak to bolo aj predtym, ked som sa pytal minule. Potom mi to neviem akym
>> sposobom zacalo fungovat podla predstav, ze cat sa neukoncil a poctivo
>> zapisoval prijate data do suboru. Mozno to bolo Arduino IDE, co to
>> zmenilo, alebo som aj ja nieco zmenil, ale uz neviem co. V history to uz
>> nieje.
>>
>> Poradi niekto, ako mam nastavit /dev/ttyACM0, aby:
>> 1. necvicil s DTR
>> 2. sa cat neukoncil?
>>
>> Dakujem
>> Richard Kaliciak
>>
>>
>> Am 04.03.2019 um 12:03 schrieb Jindrich Fucik:
>>> chyba je příkaz "cat", on nemá důvod se ukončit.
>>> To co hledáš je například příkaz "read", ten ti přečte jeden řádek a ukončí se.
>>>
>>>
>>> ---------- Původní e-mail ----------
>>> Od: Richard Kaliciak <hw.kaliciak na stonline.sk>
>>> Komu: HW-news <hw-list na list.hw.cz>
>>> Datum: 4. 3. 2019 11:32:32
>>> Předmět: [programovanie] $date v bash
>>>
>>> Dobry den,
>>>
>>> mam zariadenie s mikroprocesorom pripojene cez seriovy port cez USB ku
>>> RPi. Pomocou
>>>
>>> ~ $ while true; do cat /dev/ttyACM0 >> zaznam_$(date +%Y-%m-%d).txt ; done
>>>
>>> odchytavam vystup z mikroprocesora do suboru. Uz tri dni mi to ale
>>> zapisuje do toho isteho suboru zaznam_2019-03-01.txt.
>>>
>>> Otazky:
>>> 1. Kedy sa vyhodnoti $(date) ? Iba raz na zaciatku? Myslel som si, ze
>>> pri kazdom vykonani slucky while.
>>> 2. Ako na to, aby sa kazdy den zapisoval do ineho suboru?
>>>
>>> Dakujem.
>>>
>>> Richard Kaliciak
>>>
>>> _______________________________________________
>>> HW-list mailing list  -  sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>>> _______________________________________________
>>> HW-list mailing list  -  sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list

------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20190318/f6242c8e/attachment-0001.html>


Další informace o konferenci Hw-list