Daten vom seriellen Port empfangen

4265
Br. Sayan

Ich möchte Daten von der seriellen RS232-Schnittstelle an mein Terminal und mit einer Anweisung an eine Datei empfangen. Es sollte ziemlich direkt sein.

cat /dev/ttyS0 cat /dev/ttyS0 > file.txt 

Zuvor habe ich die Parameter so konfiguriert, dass sie mit denen des Geräts (Biochemistry Analyzer) übereinstimmen.

sudo stty -F /dev/ttyS0 9600 -parity cs8 cstopb 

dh

  1. Baudrate - 9600
  2. Parität - Keine
  3. Bits - 8 Bit
  4. Stoppbits - 2

Aber ich bekomme nichts am Terminal. Es ist einfach leer. Worin besteht das Problem?

2

1 Antwort auf die Frage

5
NZD

Versuchen Sie Minicom erste und sehen, was Ihre serielle Schnittstelle zurückkehrt. Installiere es mitsudo apt-get install minicom

Sie starten es wie folgt (für ttyS0):

sudo minicom -D /dev/ttyS0 

Sie können die Kommunikationsparameter in Minicom einstellen (using ctrl-A P), so dass Sie sicher sind, dass sie korrekt sind.

Wenn Ihr Gerät ein bestimmtes Protokoll verwendet, ist möglicherweise ein Befehl erforderlich, um die Kommunikation zu starten. Schauen Sie sich also die Bedienungsanleitung an.

Möglicherweise ist Ihr Gerät für den Hardware-Handshake eingerichtet. Wenn möglich, schalten Sie ihn aus (zumindest zu Beginn mit).

Wenn Sie es nicht ausschalten können, müssen Sie das auch auf Ihrer Seite einrichten. In Minicom ist dies unter ctrl-A Ound dann serial port setup.

Ich habe Minicom häufig verwendet, um die serielle Kommunikation zu debuggen, und ich finde, es funktioniert am besten.

Ich habe weitere Informationen vom OP erhalten:

Das Laborgerät (Cobas C311) verwendet das ASTM-Protokoll. Dort in der Benutzeroberfläche müssen Sie nur auf "An Host senden" klicken, und es wird eine Reihe von ASTM-Datensätzen gesendet. Ich muss sie nur in einer Datei erhalten. Gibt es noch eine andere Einstellung? Wie lautet der Befehl zum Starten der Datenerfassung? ... und wie werden die Daten in einer Datei gespeichert?

Wähle die richtigen Parameter. Minicom zeigt 9600 8N2. Ich hoffe es ist in Ordnung. Aber nichts erhalten - kein bisschen. Der Analysator sagt: "Das Gerät hat ENQ als Sendeanforderung gesendet, der Host hat jedoch nicht innerhalb von 15 Sekunden ACK oder NAK zurückgegeben. (Link Timeout)"

Das Gerät verwendet das ASTM-Protokoll . Das Gerät sendet das <ENQ>Zeichen als Signal, dass es bereit ist, Daten zu senden.
Dies ist nicht etwas, das Sie mit minicomeinem anderen Terminalprogramm empfangen können. Sie benötigen eine geeignete Anwendungssoftware, die dieses Protokoll unterstützt.

Sie müssen auf jeden Fall Ihr Benutzerhandbuch lesen und die Installations-CD (falls vorhanden) und die Website des Herstellers auf eine Anwendung überprüfen, die dieses Protokoll unterstützt.
Ich wäre überrascht, wenn es keine Anwendungsunterstützung für dieses Gerät gibt. Wenn sie etwas anbieten, handelt es sich wahrscheinlich um eine Windows-Anwendung oder um einen Beispielcode plus eine Bibliothek.

Es ist möglich, selbst etwas zu schreiben, aber es wird nicht einfach sein. Es gibt einige Python-Unterstützung für ASTM und es gibt ein Perl-Skript, das Sie ausprobieren könnten.

SO hat auch einen Beitrag mit einigen Informationen zu ASTM.

Vielen Dank! Das Laborgerät (Cobas C311) verwendet das ASTM-Protokoll. Dort in der Benutzeroberfläche müssen Sie nur auf "An Host senden" klicken, und es wird eine Reihe von ASTM-Datensätzen gesendet. Ich muss sie nur in einer Datei erhalten. Gibt es noch eine andere Einstellung? Wie lautet der Befehl zum Starten der Datenerfassung? ... und wie werden die Daten in einer Datei gespeichert? Br. Sayan vor 8 Jahren 0
Wähle die richtigen Parameter. Minicom zeigt 9600 8N2. Ich hoffe es ist in Ordnung. Aber nichts erhalten - kein bisschen. Der Analysator sagt: "Das Instrument hat gesendet als Sendeanfrage, aber der Host kam nicht zurück oder innerhalb von 15 Sekunden. (Link Timeout) " Br. Sayan vor 8 Jahren 0
Das klingt so, als würde Ihr Gerät tatsächlich erwarten, dass der Computer die Daten versteht und eine Antwort sendet - es möchte einen Austausch von [ENQ / ACK] (https://en.wikipedia.org/wiki/Enquiry_character), um den Computer zu überprüfen hört zu. Versuchen Sie, ein ACK-Byte zu senden, indem Sie [Strg + F] (https://en.wikipedia.org/wiki/C0_und_C1_control_codes) drücken. grawity vor 8 Jahren 1
Das Gerät wartet tatsächlich auf einen ENQ / ACK-Austausch und sendet keine Nachricht, bis es eine empfängt. Wir haben erfolgreich Nachrichten über [nrComm Lib] (http://www.deepsoftware.com/nrcomm/astm.html) erhalten, die von NZD vorgeschlagen wurden. Dies hat jedoch nicht den Zweck erfüllt, da die Nachrichten automatisch in einer Datei gespeichert werden müssen. Ctr + F hat auch nicht funktioniert, wie @grawity vorgeschlagen hat. Brauchen Sie verschiedene Wege? Auf einer Nebenbemerkung, können Sie bitte Möglichkeiten vorschlagen, um zu überprüfen, ob das RS232-Kabel ordnungsgemäß funktioniert (obwohl ich ziemlich sicher bin, dass es funktioniert) und welche Pins kurzgeschlossen sind, so dass Sie sicherstellen können, dass es in Ordnung ist. Br. Sayan vor 8 Jahren 1
@ Br.Moksha Wenn Sie Nachrichten erfolgreich erhalten haben, funktionieren Ihre RS232-Verbindung und Ihr Kabel ordnungsgemäß. Kein weiterer Test erforderlich. NZD vor 8 Jahren 0
@ Br.Moksha Wenn Sie wirklich wollen, können Sie das Kabel testen, indem Sie TxD und RxD kurzschließen (Pins 2 und 3 an einem 9-poligen Sub-D-Stecker (DE9)). Stellen Sie sicher, dass die Hardware-Flusskontrolle deaktiviert ist (`ctrl-A O`,` Setup des seriellen Ports 'in minicom). Jedes Zeichen, das Sie in minicom eingeben, wird zurückgeschleift. Wenn Sie auch die Hardware-Flusskontrolle testen möchten, müssen Sie RTS und CTS (Pin 8 und 9 eines 9-Pin-Sub-D) kurzschließen. Siehe auch Wikipedia: [RS-232] (https://en.wikipedia.org/wiki/RS-232) und [Serieller Anschluss] (https://en.wikipedia.org/wiki/Serial_port) und dieses [Tutorial] ] (http://www.ni.com/tutorial/3450/de/) von National Instruments NZD vor 8 Jahren 2