Temat: Komunikacja przez ttyS0
Witam,
próbuję zbudować coś w rodzaju powerswitch'a, ale z wejściami, np. do powiadomienia o alarmie z czujnika czadu i wyłączeniu/włączeniu np. wentylatora.
Urządzenie oparte jest o mikroprocesor, program piszę sam.
Nie chcę korzystać z gotowych rozwiązań, bo chcę mieć pełną władzę nad działaniem układu tak jak ja tego chcę.
Do wysyłania używam
echo "cos_tam" > /dev/ttyS0Do odbierania używam
cat < /dev/ttyS0W ten sposób widzę co prawda dane schodzące z szeregowego, ale z wiadomych względów polecenie blokuje mi wykonywanie skryptu. Poszukałem, poczytałem i napisałem taki skrypt:
#!/bin/sh
echo "komenda" > /dev/ttyS0
rm -f /tmp/
cat < /dev/ttyS0 > /tmp/dane &
catPid=$!
kill $catPid
chmod 777 /tmp/dane
dane=`cat /tmp/dane`
echo $dane
rm -f /tmp/daneI tutaj pojawia się problem, bo ani w pliku dane, ani co za tym idzie w zmiennej żadnych danych nie ma, czasami zdarza się, że w ogóle nie tworzy się plik dane. Próbowałem dodawać opóźnienie w skrypcie i w programie sterującym mikroprocesorem, ale to nic nie zmienia.
P.S. Rozumiem wady stosowania wbudowanego portu i że nie jest on wolny, ale radzę sobie stosując przed każdą komendą odpowiedni prefix.
Potrzebuję jakiegoś sprawdzonego i relatywnie prostego w obsłudze rozwiązania.