1 (edytowany przez manguscik 2016-03-26 18:21:39)

Temat: Odczyt serial portu do tablicy

Dotychczas dane z arduino popierałem za pomocą skryptu który wysyłał zapytanie do arduino i dostawał odczyt temperatur który był zapisywany do pliku *.txt i później poprzez cut ładowany do bazy danych.

Tak wygląda początek skryptu:

#!/bin/sh
echo "?" > /dev/ttyACM0 && tail -f /dev/ttyACM0 > /tmp/meteo/odczyt.txt &
sleep 4

killall -9 tail 

Teraz chce pominąć plik *.txt i odczyt z serial portu załadować do tablicy i później od razu lądować do bazy  tylko mam problem bo po uruchomieniu skryptu nic się nie dzieje ma zawieszkę a wygląda on tak :

#!/bin/bash

tablica=$(echo "?" > /dev/ttyACM0 &&tail -f /dev/ttyACM0)

sleep 4

killall -9 tail 

echo ${tablica[0]}
echo ${tablica[1]}
echo ${tablica[2]} 
echo ${tablica[3]}

W jaki sposób zapytanie i  odczyt serial porta zapisać do tablicy ?

Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.

2

Odp: Odczyt serial portu do tablicy

"tablica" to twór logiczny w bashu. Nie jest powiedziane że jak załadujesz coś do zmiennej to będzie bash widział to jako "tablice". Tak swoją drogą - nie wiem po co ci ta tablica, masz zmienną to ją wpakuj do bazy, ew rozdziel dane przez  cut/sed/awk

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3 (edytowany przez manguscik 2016-03-26 12:07:08)

Odp: Odczyt serial portu do tablicy

Oki więc może i tablica to zły pomysł  zrobiłem to jako zmienną tylko nadal skrypt mi się wiesza chyba na odczycie do zmiennej.

skrypt wygląda tak:

#!/bin/bash

dane=$(echo "?" > /dev/ttyACM0 && tail -f /dev/ttyACM0 &)

sleep 4

killall -9 tail 

CA=`cut -d' ' -f1 $dane `

echo "Cisnienie: "$CA

po uruchomieniu nic się nie dziej muszę dać ctr z aby go zatrzymać i w procesach mam to :

20772 root      1648 T    {test.sh} /bin/bash /bin/test.sh
20773 root         0 Z    [test.sh]
20774 root      1652 T    {test.sh} /bin/bash /bin/test.sh
20775 root      1364 T    tail -f /dev/ttyACM0

Jak odczyt z serial porta zapisać do zmiennej

Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.

4

Odp: Odczyt serial portu do tablicy

Pewnie wynika to ze sposobu jaki zrobiłeś. Masz asynchronicznie zrobione, robisz zlecenie odczytu danych, sleep i ubijasz odczyt licząc że coś się złapało w danych. Skrypt przez $() próbuje to wykonać a że tail się nie kończy to wykonanie pliku też się na tym zatrzymuje. Raczej zrób to przez plik tak jak miałeś lub zmień soft w arduino żeby dawał dane i kończył  to np. znakiem nowej linii, wtedy grepem będziesz mógł to zrobić.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: Odczyt serial portu do tablicy

W takim razie z ulepszania skryptu nici  dzięki Cezary za info  w takim razie póki co  to pozostanę przy  pliku

Spokojnych Świąt smile

Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.