Datenempfang vom seriellen Port

Datenempfang vom seriellen Port

Ich möchte Daten vom seriellen RS232-Port an mein Terminal und mit einer Anweisung an eine Datei empfangen. Das sollte ziemlich unkompliziert sein.

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

Zuvor habe ich die Parameter so konfiguriert, dass sie mit denen des Geräts (Biochemie-Analysator) ü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 empfange nichts auf dem Terminal. Es ist einfach leer. Was ist das Problem?

Antwort1

VersuchenMinicomund sehen Sie, was Ihr serieller Port zurückgibt. Installieren Sie es mitsudo apt-get install minicom

Man startet es folgendermaßen (für ttyS0):

sudo minicom -D /dev/ttyS0

Sie können die Kommunikationsparameter innerhalb von Minicom (mit ctrl-A P) einstellen, um sicherzugehen, dass sie korrekt sind.

Wenn Ihr Gerät ein bestimmtes Protokoll verwendet, ist möglicherweise ein Befehl erforderlich, um die Kommunikation zu starten. Lesen Sie dazu das Benutzerhandbuch.

Möglicherweise ist Ihr Gerät für die Verwendung von Hardware-Handshakes eingerichtet. Wenn möglich, schalten Sie es aus (zumindest zunächst).

Wenn du es nicht abschalten kannst, musst du das auch auf deiner Seite einrichten. In Minicom findest du das unter ctrl-A Ound dann serial port setup.

Ich habe Minicom häufig zum Debuggen der seriellen Kommunikation verwendet und finde, dass es am besten funktioniert.

Ich habe vom OP noch einige weitere Informationen erhalten:

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

Habe die richtigen Parameter gewählt. Minicom zeigt 9600 8N2 an. Hoffe, das ist in Ordnung. Aber ich empfange nichts – kein einziges Bit. Der Analysator sagt: „Das Gerät hat ENQ als Sendeanforderung gesendet, aber der Host hat innerhalb von 15 Sekunden weder ACK noch NAK zurückgegeben. (Link-Timeout)“

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

Sie müssen unbedingt Ihr Benutzerhandbuch lesen und auf der Installationsdiskette (sofern vorhanden) und der Website des Herstellers nach einer Anwendung suchen, die dieses Protokoll unterstützt.
Es würde mich überraschen, wenn es keine Anwendungsunterstützung für dieses Gerät gäbe. Wenn sie etwas anbieten, handelt es sich wahrscheinlich um eine Windows-Anwendung oder Beispielcode plus eine Bibliothek.

Es ist möglich, selbst etwas zu schreiben, aber es wird nicht einfach sein. Es gibt eine gewisse Python-Unterstützung fürASTMund es gibt einePerl-Skriptdas könntest du versuchen.

SO hat auch einePostmit einigen Informationen zu ASTM..

verwandte Informationen