Forum: Mikrocontroller und Digitale Elektronik Linux console echo TEST > /dev/ttyS0 ich bekomms nicht gelesen Input Bascom


von Christian Z. (christian_z)


Lesenswert?

Hi,

ich bin am rumspielen mit einem tiny2313 und gebe Daten über RS232 an 
eine linux büchse aus (PHP überwacht die Schnittstelle am Server - 
klappt wunderbar). Mein Tiny soll dann je nach Anfrage auch wieder Daten 
vom Server zurückbekommen (dio_write Funktion in PHP).

Wenn ich einen String aus meinem PHP-Script bzw. über ein "echo TEST > 
/dev/ttyS0" bleibt mein INPUT Befehl (Bascom programmierung) stumm und 
wartet weiterhin auf Daten. Wenn ich jedoch das gleiche mit 
Hyperterminal oder putty an den Tiny sende, reagiert der er und macht 
alles richtig.

CRLF war meine erste Vermutung, aber das juckt das "INPUT" nicht. Es 
gibt wohl noch andere Leute mit dem Problem, aber eine Lösung finde ich 
nicht.

Gibts da eine Lösung ? bin echt am verzweifeln :(

Danke

Christian

von Klaus W. (mfgkw)


Lesenswert?

Hast du vor dem echo ..>... vielleicht Baudrate etc. nicht gesetzt?
Die Terminalprogramme machen das natürlich je nach Einstellung.
echo dagegen gibt nur aus.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

echo gibt am Zeilenende Linux/Unix-typisch ein Newline aus (wenn man 
das nicht mit -n unterdrückt).

Möglichweise wartet Input von BASCOM aber auf ein Carriage Return. 
Habe im BASCOM Manual aber nicht nachgesehen, ob das so ist.

Probiere aus der Shell heraus Zeile mit CR am Ende an den µC zu 
schicken:
echo "TEST\r" > /dev/ttyS0

von Christian Z. (christian_z)


Lesenswert?

Hi,

die Baudrate wird im  PHP-Script gesetzt 9600 8N1, auf der Konsole wüsst 
ich nicht wie (bekomm ich aber raus). Deshalb denke ich das sollte 
passen (im PHP-Script). In Bascom ist 9600 gesetzt (stopbit usw. habe 
ich hier nicht fällt mir gerade auf... aber es geht ja mit putty & Co.)

echo "hello\r" > /dev/ttyS0 hilft nichts. Parameter -n macht auch keinen 
Unterschied.

Merkwürdig is, das er 10 sekunden braucht um den Befehl auf der konsole 
auszuführen (das echo). Meine Testumgebung ist eine VM, aber klappt ja 
mit putty.

von Klaus W. (mfgkw)


Lesenswert?

Christian Z. schrieb:
> die Baudrate wird im  PHP-Script gesetzt 9600 8N1, auf der Konsole wüsst
> ich nicht wie (bekomm ich aber raus).

stty

von Christian Z. (christian_z)


Lesenswert?

Danke,

habe ich versucht, keine Besserung (setserial geht wohl ebenfalls, soll 
simpler sein).

Noch wer eine Idee ? Das muss doch klappen...

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Hast du schon den Windowsrechner mit Nullmodemkabel an den Linuxrechner 
gehängt und nachgesehen, was da gesendet wird?

Du kannst auch mit einem Loopbackstecker arbeiten, wenn du nur den 
Linux-Rechner hast aber zwei serielle Schnittstellen. Quasi eine 
Nullmodemverbindung zwischen beiden Schnittstellen.

Wenn du nicht sicher bist, ob der Linuxrechner überhauot etwas sendet, 
kannst du das physikalisch auf der Leitung überprüfen.

von Christian Z. (christian_z)


Lesenswert?

Das ganze spielt sich in zwei virtuellen Rechnern ab. An meinem VM-Host 
(Windows7) hängt der Tiny (auf dem Pollin RFID Board) direkt an einer 
"echten" RS232.

Ich kann direkt von der Linux VM in die Windows VM senden/empfangen. 
folgende Szenarien habe ich versucht jeweils ein einfache Zeichenfolge:

µC > Windows Terminal (Putty) - OK
Windows Terminal > µC - OK

µC > Linux (cat /dev/ttyS0 & PHP dio_read) - OK
Linux (Bsp.: echo "string" > /dev/ttyS0 & PHP dio_write) > µC - Nicht OK

Das machts schwierig zu monitoren.

von Christian Z. (christian_z)


Lesenswert?

Mit nem echten Rechner klappts auch nicht... HILFE :-(

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.