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/ttyS0

Do odbierania używam

cat < /dev/ttyS0

W 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/dane

I 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.

2

Odp: Komunikacja przez ttyS0

comgt. Możesz sobie ładnie oprogramować/oskryptować to co chcesz.

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