Daten von serieller Schnittstelle mitschreiben?

Diskussion zum Thema Programmierung unter DOS (Intel x86)
Antworten
Benutzeravatar
Xaar
DOS-Kenner
Beiträge: 450
Registriert: Di 22. Jan 2008, 14:57
Wohnort: Łužyca

Daten von serieller Schnittstelle mitschreiben?

Beitrag von Xaar »

Hallöchen!

Folgender Sachverhalt: Ich habe hier ein Funkmodul, was per serieller Schnittstelle (9600 oder 115200 Baud, Kein Handshake) konfiguriert und abgefragt werden kann. Man hängt sich einfach per HyperTerminal (ja, ich weiß - das ist nicht unter DOS) drauf, tippt den Befehl ein, schließt in mit ENTER ab und man erhält 'ne Antwort. Soweit so einfach.

Nun bietet mir das Modul einige Diagnosemöglichkeiten über diese Befehle. So kann ich mir beispielsweise die Uhrzeit mit einem Befehl ausgeben lassen - oder die Empfangspegel. Der Befehl für den Empfangspegel unterscheidet sich etwas von den normalen Befehlen, denn tippt man ihn einmal ein, so erhält man kontinuierlich den aktuellen Pegel ausgegeben, ohne, dass ein neuer Befehl gesendet werden müsste. Das passiert solange, bis man einen weiteren Befehl sendet.

Jetzt würde ich gerne eben diese Ausgaben mitschneiden wollen, um bspw. mal 'n Diagramm draus zu bauen. Leider fehlen dazu aber Uhrzeit-Angaben. Nun wäre meine Idee folgende:

Programm sendet Befehl "Ausgabe Uhrzeit" an die Serielle Schnittstelle und wartet die Antwort ab. Die Antwort wird in 'ne Datei geschrieben. Danach sendet das Programm den Befehl "Ausgabe Empfangspegel" an das Modul und zeichnet wiederum die Antworten in der selben Datei auf (ohne die bisherigen Daten zu überschreiben, jede empfangene Zeile mit 'nem Zeilenvorschub beenden). Nach einiger Zeit (5...10 Sekunden) schickt das Programm den Befehl "Ausgabe Empfangspegel beenden" an das Modul - und es herrscht Ruhe. Nach einer einstellbaren Zeit beginnt das Ganze wieder von vorn. Optional wäre noch, dass bspw. nach einem Tag oder so eine neue Datei angelegt wird, die dann auch 'nen automatisch generierten Namen hätte.

Wie ließe sich sowas umsetzen? Ließe sich sowas vielleicht sogar als Batch-Datei realisieren? Wen es programmiertechnisch Richtung Hochsprache geht, hätte ich Turbo Pascal 6.0 und 7.0 hier - wobei es bei 6.0 wimre die Probleme mit schnelleren Rechnern gab (ab 200 MHz oder was das war). Bei 7.0 weiß ich nicht, ob der Fehler da vorhanden ist. Mit rudimentären Basic- oder C-Kenntnissen könnte ich auch aufwarten - meine Pascal-Kenntnisse sind aber auch nicht sonderlich toll. Ich habe aber keine Entwicklungsumgebung für Basic/C unter DOS hier, nur für Windows (MS Visual Studio ab 2003), bei denen man selbstlauffähige Programme schreiben kann. Eine Lösung, die auch unter Windows 2000 und neuer im CMD-Fenster liefe, wäre ganz prima - wenn es eine reine DOS-Lösung ist, ist das aber auch nicht schlimm. Einen alten DOS-Rechner finde ich dafür sicher auch :)

Hat jemand eine Idee, wie das umzusetzen sein könnte?

Besten Dank schonmal!
Atari PC3 - Compaq Portable III & 386 - IBM 5140 & 5155 & 5160 & 5162 & 5170 - IBM PS/2 30 & 55sx & 56 486SLC2 & 70 386 & 76i & 77 486 & 80 - Robotron A7100 & CM1910 & EC1834 - Soemtron PC286
Benutzeravatar
hofinger
DOS-Guru
Beiträge: 520
Registriert: Sa 22. Nov 2014, 22:56
Wohnort: BA

Re: Daten von serieller Schnittstelle mitschreiben?

Beitrag von hofinger »

Wie immer würd ich das mit Python machen:

Code: Alles auswählen

import serial
import time
ser = serial.Serial("COM1")
datei = open("ausgabe.txt","w")
while true:
   daten = ser.readline()
   datei.write(str(daten) + \n)
   time.wait(1)
ser.close()
datei.close()
natürlich ungetestet jetzt ;)
Power to the pixel!
Benutzeravatar
Xaar
DOS-Kenner
Beiträge: 450
Registriert: Di 22. Jan 2008, 14:57
Wohnort: Łužyca

Re: Daten von serieller Schnittstelle mitschreiben?

Beitrag von Xaar »

Hallöchen!

Mit Python - und anderen Programmiersprachen außer den benannten - kann ich leider nichts anfangen :(

Hat nicht jemand noch eine andere Idee?

Grüße, Karsten.
Atari PC3 - Compaq Portable III & 386 - IBM 5140 & 5155 & 5160 & 5162 & 5170 - IBM PS/2 30 & 55sx & 56 486SLC2 & 70 386 & 76i & 77 486 & 80 - Robotron A7100 & CM1910 & EC1834 - Soemtron PC286
Benutzeravatar
matze79
DOS-Gott
Beiträge: 7910
Registriert: So 9. Sep 2012, 20:48

Re: Daten von serieller Schnittstelle mitschreiben?

Beitrag von matze79 »

Das kannst du leicht mit QBASIC/GWBASIC lösen.

http://www.elektronik-labor.de/RS232/RS232_3_2.htm

Wenn Daten empfangen then befehl senden..
etc.

Datei öffnen und reinschreiben ist auch nicht so schwer.
Paar Stunden Übung und du hast dein Programm.

https://en.wikibooks.org/wiki/QBasic/Files
https://www.shadowcircuit.de - Die kleine Community rund um Retro Computing
https://www.retroianer.de
DOSferatu
DOS-Übermensch
Beiträge: 1220
Registriert: Di 25. Sep 2007, 12:05
Kontaktdaten:

Re: Daten von serieller Schnittstelle mitschreiben?

Beitrag von DOSferatu »

Ich habe früher mal sowas programmiert.
Das ist ein "Man-In-The-Middle" Programm.
Man braucht dafür einen weiteren PC und ein weiteres serielles Kabel:

A ------- MM ------- B

Daten, die von A nach B und B nach A gehen, werden vom MM dann mitgeschrieben auf Platte und außerdem angezeigt (in verschiedenen Farben für jede Richtung).
Ich glaube ich habe das Speichern dann auch in einem speziellen Format gemacht, damit man dann noch aus dem File lesen kann, was von welcher Richtung kam und mit Zeitindex.

Benutzt hatte ich das damals unter anderem, um Datenverkehr zwischem Browser und "dem Internet" abzuhören (mit seriellem Modem im Netz gewesen). (Damit habe ich damals herausgefunden, daß manche Seiten Cookies in einem Format senden, mit dem der Arachne-Browser nichts anfangen kann.)

Natürlich könnte so ein "Man-In-The-Middle" Programm dann die Daten auch noch entsprechend filtern/anpassen...

Aber auf diese Idee sind hier bestimmt auch schon andere gekommen.
Benutzeravatar
darktrym
LAN Manager
Beiträge: 207
Registriert: So 5. Jan 2014, 10:59
Wohnort: -D-

Re: Daten von serieller Schnittstelle mitschreiben?

Beitrag von darktrym »

Also unter Windows gibts Advanced Serial Monitor Monitor der sich zwischen der seriellen Kommunikation klemmt und artig alles mitprotokolliert. Daneben gibts noch Protocol Analyzer die man zwischen den Geräten klemmt und dann den aufgezeichneten Speicher oder live abfragt.
Unter DOS gabs software-technisch ja ähnliches, die DOS-Viren haben sich doch immer am Syscall des Öffnens einer Datei gehängt.
Antworten