Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: usobak 19 Prosince 2013, 10:03:28
-
Dobrý den,
řeším problém se čtením dat z /dev/ttyUSB0 (používám převodník USB - rs485). Pod win vše ok pod linuxem data odešlu, převodník signalizuje příjem a odeslání dat zpět do pc ale při čtení málo kdy hodnotu načtu. Testuji v terminálu pomocí
sudo echo *B1TR > /dev/ttyUSB0 - poslání žádosti s vrácení stavu teploměru
sudo cat < /dev/ttyUSB0 - příjem dat
z 10ti pokusů se mi data pod linuxem vrátí cca 1x. příjde mi , že nějaká aplikace naslouchá na /dev/ttyUSB0 a danou hodnotu mi bere.
Nebudete mít radu co s daným problémem?
Moc děkuji :-)
-
1. Uživatel pod kterým to spouštíš musí být členem skupiny dialout
2. Jak nastavuješ parametry sériového portu? Může být špatně nastaveno řízení komunikace
-
aplikaci mám v PHP, přidal jsem uživatele www-data do dané skupiny pomocí příkazu:
$ sudo usermod -G www-data,dialout www-data
z terminálu se prvně vždy přihlasím pod rootem pomocí sudo -i a nasledně testuji.
k nastavení rychlosti, stopbitů a dalších - vypsal jsem si výchozí konfiguraci portu a ta je schodná s čidlem , které používám. Stejné nastavení pod win funguje.
-
Mrkni sem třeba Ti to pomůže, je tu jak nastavit sériové porty a jak s nimi pracovat: http://www.abclinuxu.cz/clanky/hardware/seriova-komunikace-pod-linuxem-i
V seriovém portu jsem doma, ale nedělám s ním přes bash :)
-
Ještě připomínka, největší problém mi, po vyřešení přístupových práv, dělalo řízení toku dat. Zkontroluj si to.
-
Ještě pro zkoušení práce se sériovými porty celkem úspěšně používám gtkterm.
sudo apt-get -y install gtkterm
-
Děkuji za rady, problém byl v nastavení portu, pomohlo nastavení
stty -F /dev/ttyUSB0 1:0:cbd:0:3:1c:7f:15:4:1:3c:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0
prosím o radu, jak toto natavení mohu uložit natrvalo?
Děkuji
-
Dát do skriptu a ten spouštět v Aplikace spouštěné při přihlášení?
EDIT: Protože se však jedná o USB nebude při startu k dispozici. pak doporučuji se podívat na setserial (http://manpages.ubuntu.com/manpages/natty/man8/setserial.8.html). Dá se tam prokousat ke konfiguračním souborům, ale teď jsem na PC kde jsem RS232ToUSB převodník ještě nepoužíval, tak nejsem schopen nalézt podrobnosti. Zejména si prohlédni skript /etc/init.d/setserial.
-
Vyřešil jsem to tak, že před prácí s převodníkem z PHP pošlu vždy nastavení konfigurace na port a funguje to :-)
-
Ano, to je řešení pro hotovou aplikaci, které také obvykle používám. (Asi nejpoužívanější řešení.)
Pokud budeš chtít komunikovat z terminálu, pak budeš muset nejspíše před vlastní komunikací spouštět skript s nastavením.
Ale z tvého popisu problému jsem pochopil, že pro práci se sériovým portem potřebuješ mít hned po startu PC, je-li převodník připojen k USB, nebo při zapojení převodníku, mít nastavené komunikační parametry, aby jsi s ním mohl rovnou pracovat pomocí příkazů z terminálu, a k tomu směřovala i moje nápověda.