Hallo,
ich senden von dem Mikrocontroller einen String, mit dem Befehl
cat/dev/ttyS1
kann ich der String auf dem Port lesen. Mit der Funktion, die ich im c
geschrieben habe, ist die Ausgabe meines Buffers leer.
Ich weiss nicht, welche Konfiguration mache ich falsch für das Kernel.
Ich weiss, dass es verschiedenen Mode gibt. Ich habe mich "für Canonical
Input Processing" entschieden.
Kann jemanden mir sagen, was ich falsch mache.
Anbei mein c Programm
mathias
Wenn ich mich richtig erinnere, dann sorgt doch das O_NDELAY in:
1
intfd=open(DEVICE,O_RDWR|O_NOCTTY|O_NDELAY);
dafür, daß der "read" sofort zurückkehrt und nicht auf ein Zeilenende
(canonical mode) wartet, d.h. Du liest wahrscheinlich schon bevor Daten
ankommen...
Ich dachte, O_NDELAY ist das selbe O_NONBLOCK....
Ich würde generell mal eine Schleife um die Lesefunktion machen um zu
sehen,
ob vielleicht etwas ankommt, aber nicht gelesen wird....(timing).
Hier ein Beispiel, wie ich in einem Programm die ser. Schnittstelle
öffne. Ich lese dann allerdings in einer Schleife...evtl. könnte man
auch die maximum wait time und minimum bytes to read anpassen.
Hallo Bernhard,
ich habe das Programm verändern. ich habe deine Einstellungen genommen.
Ich kriege immer dasselbe. Alle Bedingunengen sind erfüllt.Das Problem
bleibt immer im read_data Funktion.Ich bekomme:
readfunction 0
read succesful
read:(null)
values read(printf):
Hmm nun:
readfunction 0
sagt ja, daß nichts gelesen wurde (0 bytes), offensichtlich ist er durch
einen Timeout zurückgekehrt.
Du hast natürlich den Timeout von mir mit 1s übernommen...
Ich würde zum Test mal das Lesen in eine Schleife setzen...