Portál AbcLinuxu, 4. června 2024 01:25


Dotaz: Cyklus While - čtení dat z /dev/ttyUSB

Petr Maleček avatar 19.1.2014 20:02 Petr Maleček | skóre: 28 | Plzeň - Bolevec
Cyklus While - čtení dat z /dev/ttyUSB
Přečteno: 220×
Odpovědět | Admin

Ahoj, mám tu problém. Z USB teploměru získávám data o teplotě (ASCII), občas se stane, že teploměr na první dotaz neodpoví, tak bych chtěl, aby se v případě nulového výstupu dotaz na data zopakoval.

Výstup z USB zařízení vypadá takto:

*B1E1+019.7

Kde *B1E1 se nemění, mění se až data za ním (znaménko a čísla).


#!/bin/bash
TEMPREAD=(`head -1 /dev/ttyUSB0`); # | cut -c6-11`);

        while [ $TEMPREAD == *"B1E1"* ]; do
                echo $TEMPREAD;
        done


Zatím jsem chtěl pouze nechat vypisovat vrácená data a aby se script ukončil v případě, že data nebudou k dispozici. Ovšem nechápu, proč se data nevypíšou ani jednou? Co mám v tom cyklu špatně?

Díky :-)
LinMuck, WinFuck :-P

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

19.1.2014 21:27 li737 | skóre: 6
Rozbalit Rozbalit vše Re: Cyklus While - čtení dat z /dev/ttyUSB
Odpovědět | | Sbalit | Link | Blokovat | Admin
ze zařízení se čte jen jednou na začátku. Je potřeba dat to do cyklu.
Petr Maleček avatar 19.1.2014 21:55 Petr Maleček | skóre: 28 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: Cyklus While - čtení dat z /dev/ttyUSB
Ano, i kdyby se četlo ze zařízení jen jednou, tak by snad jednou ten cyklus proběhl, ne? :-)
LinMuck, WinFuck :-P
19.1.2014 22:07 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Cyklus While - čtení dat z /dev/ttyUSB
Ano jednou se načte a proč by to mělo něco vypsat když to přečte třeba bflmps ?

Či to přečte bílé znaky a podobně...
19.1.2014 22:43 li737 | skóre: 6
Rozbalit Rozbalit vše Re: Cyklus While - čtení dat z /dev/ttyUSB
když nebude splněna podmínka tak cyklus neproběhne ani jednou. Jinak aby ta podmínka fungovala tak je potřeba zdvojit závorku [[
Petr Maleček avatar 20.1.2014 01:19 Petr Maleček | skóre: 28 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: Cyklus While - čtení dat z /dev/ttyUSB
Tak chyba byla v té zdvojené závorce, což jsem úplně přehlédl. Díky, už mi to funguje :-)

#!/bin/bash
TEMPREAD=(`head -1 /dev/ttyUSB0`); # | cut -c6-11`);

        while [[ "$TEMPREAD" != *"B1E1"* ]]; do
                # READ DATA AGAIN
                TEMPREAD=(`head -1 /dev/ttyUSB0`);
                # echo $TEMPREAD
        done

        # FORMAT OUTPUT
        TEMPREAD=(`echo $TEMPREAD | cut -c6-11`);
        # echo $TEMPREAD;

# WRITE DATA TO SQL
sqlite3 /root/meteo-temp1.sqlite "INSERT INTO 'meteo-temp1' ('datum', 'teplota') VALUES (DATETIME('now', 'localtime'), '$GETTEMP0');"
LinMuck, WinFuck :-P
Petr Maleček avatar 20.1.2014 01:21 Petr Maleček | skóre: 28 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: Cyklus While - čtení dat z /dev/ttyUSB
Pardon, místo $GETTEMP0 má být $TEMPREAD
LinMuck, WinFuck :-P

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.