Forum: PC Hard- und Software Serielle Schnittstelle überwachen


von Steffen H. (steffenh)


Lesenswert?

Hallo zusammen,

ich möchte mit meinem Windows XP Rechner Daten auf der seriellen 
Schnittstelle (10.400 kbps) mitloggen. Das Problem ist, dass es zu 
unkontrollierten Stromausfällen kommen kann, nach denen der Rechner neu 
booten muss. Das Booten dauert locker 60s - zu lange.

Meine Idee zur Abhilfe war erst, auf MS-DOS statt auf XP zu setzen. 
Leider habe ich entdeckt, dass der dortige "mode"-Befehl nur 
vorkonfigurierte Baudraten unterstüzt und 10.400 kbps leider nicht dabei 
sind.

Anders ist es bei der Dos-Box unter Windows XP - dort kann ich 10.400 
kbps einstellen. Also müsste ich XP daz bringen, im DOS-Modus zu 
starten. Das war bei den alten Windows Versionen ja noch möglich. Bei XP 
aber leider nicht mehr.

Meine nächste Idee wäre jetzt, eine Startdiskette zu erstellen und 
diese, mangels Diskettenlaufwerks, per USB booten zu lassen... Aber ich 
bin mir nicht sicher, ob ich mich da nicht verrenne...


Deshalb meine Frage an Euch: Habt ihr eine einfachere Lösung? Ziel ist 
es, die serielle Schnittstelle mit 10.400 kbps zu überwachen 
(=Empfangsdaten in Datei schreiben) und diesen Zustand nach einem evtl. 
Stromausfall vollautomatisch und schnell wieder einzunehmen.

Ich freue mich auf Eure Antworten!
Steffen

von tux (Gast)


Lesenswert?

Wie wäre es mit einem Linux-System? Wenn du dich damit auskennst dauert 
der Bootvorgang keine 10s.

von oggy (Gast)


Lesenswert?

es gibt keine dos-box unter xp. und ältere versionen von windows liessen 
sich auch nicht in einem "dos-modus" hochfahren. es wurde jediglich das 
zugrunde liegende dos gebootet und windows nicht gestartet.

probiere es mal mit freedos.

von Steffen H. (steffenh)


Lesenswert?

Daran habe ich auch gedacht, aber leider kenne ich mich mit Linux 
überhaupt nicht aus :-( Ist es realistisch, das als Anfänger innerhalb 
von 1-2 Abenden hinzubekommen?

von Peter II (Gast)


Lesenswert?

Steffen Hausinger schrieb:
> Daran habe ich auch gedacht, aber leider kenne ich mich mit Linux
> überhaupt nicht aus :-( Ist es realistisch, das als Anfänger innerhalb
> von 1-2 Abenden hinzubekommen?

ein Linux bootet auch nicht viel schneller als ein Windows. Bau einen 
SSD ein und schon bootet Linux und Windows in 5-7 Sekunden.

Oder kaufe eine USV.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Steffen Hausinger schrieb:
> Anders ist es bei der Dos-Box unter Windows XP - dort kann ich 10.400
> kbps einstellen.


Das ist keine "Dos-Box", das ist die Windows-Eingabeaufforderung. Die 
hat mit DOS exakt gar nichts zu tun, daher sind Deine nachfolgenden 
Vermutungen über Bootdisketten etc. auch nicht zielführend.

Wenn Du Dir tatsächlich den Betrieb mit DOS antun willst, musst Du nur 
die Schnittstelle selber "von Hand" konfigurieren, statt auf die 
beschränkten und völlig antiquitierten Funktionen des BIOS zur 
Ansteuerung der seriellen Schnittstelle zuzugreifen.

Das empfiehlt sich sowieso, weil die noch nicht mal eine gepufferte 
Übertragung hinbekommen (sprich: interruptgesteuertes Senden/Empfangen).

Und wenn Du die UART direkt ansprichst (also mit I/O-Zugriffen die 
verschiedenen Register programmierst), dann kannst Du auch beliebige 
Baudraten einstellen, sofern diese durch einen ganzzahligen Teiler aus 
115200 erzeugt werden können.

Das ist mit Deinen 10400 Baud übrigens nicht ohne Baudratenfehler 
möglich; bist Du Dir dessen bewusst?

Die Hardware der PC-Schnittstelle erzeugt die Baudrate aus einem Takt 
von 1.8432 MHz, der durch 16 geteilt die höchste erreichbare Baudrate 
(die oben erwähnten 115200 Baud) erzeugt, und jede niedrigere durch 
einen ganzzahligen Teiler davon.

Die physikalisch erzielbare Baudrate beträgt etwa 10473 Baud (bei einem 
Teiler von 11) und weicht damit um etwa ein Prozent von der gewünschten 
Baudrate ab.


Natürlich bist Du dann auf "echte" Onboard-Schnittstellen angewiesen und 
kannst weder USB-Seriell-Adapter noch Schnittstellen auf PCI/PCIe-Karten 
verwenden.


Was spricht gegen die Verwendung einer USV?

von Frank K. (fchk)


Lesenswert?


von Steffen H. (steffenh)


Lesenswert?

Ich werde heute Abend FreeDOS ausprobieren. Die Alternativen mit einer 
USV (oder einem Laptop - kommt ja aufs Gleiche hinaus) ist charmant, 
aber nicht rechtzeitig darstellbar. Ich habe nur 1-2 Abende.

Der UART-Teiler sollte so passen, da es unter Windows bereits 
funktioniert. Dennoch danke für den Hinweis!

von Kaj (Gast)


Lesenswert?

Steffen Hausinger schrieb:
> seriellen Schnittstelle (10.400 kbps)
Wer gibt denn solch eine krueppel baudrate vor?

von Steffen H. (steffenh)


Lesenswert?

Die ISO9141 (aka. Fzg.-Diagnose).

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Steffen Hausinger schrieb:
> Ich werde heute Abend FreeDOS ausprobieren.

Hast Du denn schon eine Software, die die UART ansteuert?

Oder wie stellst Du Dir das ganze vor?

Einfach nur mit dem mode-Kommando die Baudrate einstellen ist nur ein 
Bruchteil der Miete.

von ...-. (Gast)


Lesenswert?

> Hast Du denn schon eine Software, die die UART ansteuert?

http://en.wikipedia.org/wiki/Telix

von Steffen H. (steffenh)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Hast Du denn schon eine Software, die die UART ansteuert?

Ich dachte, mit "mode" konfiguriere ich die Schnittstelle und mit dem 
Umleitungsoperator leite ich den eintreffenden Datenstrom in eine Datei 
um. Geht das so nicht? Wie gesagt, es geht nur ums loggen. Es wird 
nichts gesendet.

Falls das so nicht klappt, danke für den Tipp mit Telix!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Steffen Hausinger schrieb:
> und mit dem
> Umleitungsoperator leite ich den eintreffenden Datenstrom in eine Datei
> um. Geht das so nicht?

Das geht nur mit reinem Text; wenn da Binärdaten kommen, ist mit dem 
ersten Auftreten eines Ctrl+Z die Aufzeichnung beendet.

Ein richtiges Terminalprogramm ist da eindeutig zu bevorzugen; wobei zu 
prüfen wäre, ob Telix auch Nicht-Standardbaudraten zulässt.
Das ist bei DOS-Terminalprogrammen durchaus unüblich, und ich kenne 
keines (mehr), bei dem das geht (ist aber auch schon über 20 Jahre her, 
daß ich mir DOS-Terminalprogramme angetan habe).

von Georg (Gast)


Lesenswert?

Steffen Hausinger schrieb:
> mit dem
> Umleitungsoperator leite ich den eintreffenden Datenstrom in eine Datei
> um.

Das gibt fürchte ich ein Problem mit dem Ende - die Aufzeichnung wird 
beendet, wenn ein Ctrl-Z empfangen wird.

Telix: kann alles, aber wahrscheinlich keine 10400 Baud, das gibt DOS 
nicht her und Programme wie Telix oder Procomm sind recht ordentlich 
programmiert, gehen also nicht direkt an die Hardware.

Georg

von tommy (Gast)


Lesenswert?

Steffen Hausinger schrieb:
> Ich werde heute Abend FreeDOS ausprobieren.

Dann schau Dir Telix genau an. Vor allem die mächtige
Scriptsprache SALT, die sehr nach C aussieht.
Damit habe ich damals viel gemacht, aber ob 10400 Baud
möglich sind weiss ich heute nicht mehr.

Viel Erfolg

von Kaj (Gast)


Lesenswert?

Steffen Hausinger schrieb:
> Die ISO9141 (aka. Fzg.-Diagnose).
vielen dank für die aufklärung.

von Mike (Gast)


Lesenswert?

Kaj schrieb:
> Wer gibt denn solch eine krueppel baudrate vor?

Das ist genau ein Viertel von 41.6 kbit/s. Macht doch Sinn. Die bei der 
ISO machen keine halben Sachen ;-(

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Georg schrieb:
> Programme wie Telix oder Procomm sind recht ordentlich
> programmiert, gehen also nicht direkt an die Hardware.

Oh, und ob die das tun. Unter DOS gibt es keine brauchbare Unterstützung 
der seriellen Schnittstellen; wenn man vernünftig mit denen umgehen 
möchte und auch noch Baudraten jenseit der 19200 Baud nutzen will, dann 
muss man die unter Umgehung der jämmerlich primitiven BIOS-Routinen 
direkt ansprechen. Die BIOS-Routinen (die auch von DOS genutzt werden) 
kennen noch nicht einmal gepuffertes Senden/Empfangen von Daten, ganz zu 
schweigen von den Hardware-FIFOs neuerer Schnittstellenbausteine 
(16550).

von Christian R. (supachris)


Lesenswert?

Wieso nimmst du da keinen ELM323? Der ist doch extra dafür da.

von npn (Gast)


Lesenswert?

Christian R. schrieb:
> Wieso nimmst du da keinen ELM323? Der ist doch extra dafür da.

Vermutlich weil er schon paarmal gesagt hat, daß er nur 1-2 Abende hat, 
die Geschichte zum Laufen zu bringen...

von Kaj (Gast)


Lesenswert?

Mike schrieb:
> Das ist genau ein Viertel von 41.6 kbit/s. Macht doch Sinn. Die bei der
> ISO machen keine halben Sachen ;-(
Keine halben Sachen... aber wie du selber sagst: dafür machen sie 
viertel Sachen :D

von Christian R. (supachris)


Lesenswert?

npn schrieb:
> Vermutlich weil er schon paarmal gesagt hat, daß er nur 1-2 Abende hat,
> die Geschichte zum Laufen zu bringen...

OK, wenn man die Lieferzeit mit einrechnet, wirds echt knapp. Ich dachte 
die Zeitangabe sei netto.

von Steffen H. (steffenh)


Lesenswert?

Das Steuerzeichen Ctrl-Z... nicht schlecht, daran hab ich überhaupt 
nicht gedacht! Dann klappt das mit den Bordmitteln von DOS also nicht 
zuverlässig.

Ich hab gestern Abend ein paar Dinge erfolglos ausprobiert und mich 
heute Morgen dann dazu entschieden, das ganze mit Windows und Makros zu 
lösen. Bleiben die 60s Totzeit - ich habe in meinem Bekanntenkreis aber 
einen Laptop mit ausreichend kräftigem Akku auftreiben können. Ich 
hoffe, das reicht.

Herzlichen Dank für alle Tipps!!
Steffen

von Max D. (max_d)


Lesenswert?

Mit einem raspi sollten mit dem entsprechenden System die 10 s drinnen 
sein. Und unter Linux ist die serielle Schnittstelle einfach zugreifbar. 
Das sollte als einzeiler für die config und nochmal ein einzeiler in der 
Shell fürs loggen gehen.

von uwe (Gast)


Lesenswert?

Die FTDI können auch "fractional Divisor", also mit Nachkomma im Teiler.
Einfach mal googln : FTDI fractional divisor.

von Peter II (Gast)


Lesenswert?

uwe schrieb:
> Die FTDI können auch "fractional Divisor", also mit Nachkomma im Teiler.
> Einfach mal googln : FTDI fractional divisor.

nur wird er den bestimmt unter dos nicht zum laufen bringen.

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.