Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Serielle Schnittstelle einlesen

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Matt-Ratze
Gast





BeitragVerfasst am: 19. Aug 2003 5:57   Titel: Serielle Schnittstelle einlesen

Grüß Euch!

Folgendes bekomme ich nicht in den Griff:
Ein Datenlogger liefert jedes Ereignis Zeilenweise an eine serielle Schnittstelle. Mit "Minicom" kann ich die
Daten wunderbar einlesen und in ein File mitschreiben, dazu mußten nur die richtigen Schnittstellenparameter eingestellt werden schon lief es.
Verursacht durch einen nachgewiesenen Fehler in der Software des Loggers, kommt es vor, daß immer wieder falsch formatierte Zeilen ausgegeben werden. Ausserdem aktualisiert Minicom das von ihm geschriebene Logfile nicht sofort, sondern nach einem mir noch nicht bekannten Muster, könnte ein Seitenumbruch sein, oderso.

Nun wäre mein Ziel, nicht mehr minicom zu benutzen, sondern ein Shellskript, welches direkt von der seriellen schnittstelle liest und mittels Grep die fehlerhaften Zeilen ausfilzt und an ein Logfile anhängt. Dieses File steht dann in einem Samba-Share, damit es über´s Netz erreichbar ist.

Nun habe ich in meiner Naivität mit setserial die Schnittstellenparameter gesetzt und versucht mit
cat /dev/ttyS0 > Datei an die Ausgaben des Loggers zu kommen, aber so einfach scheint es nicht zu
sein. Im Shell-Skript Buch v. Ditchen habe ich zu dem Thema nix passendes gefunden, div. Suchmaschinen konnten mir nicht weiterhelfen.

Habt ihr mir eine Anregung, wie ich das Problem lösen könnte?

Grüße
Matt-Ratze
 

Jochen
Gast





BeitragVerfasst am: 19. Aug 2003 7:42   Titel: Re: Serielle Schnittstelle einlesen

Die einfachste Lösung ist es, erst mal zu googlen:

http://people.redhat.com/johnsonm/ttywatch.html
http://www.conserver.com/

Conserver scheint schon Overkill zu sein, ttywatch scheint recht gut auf Dein Problem zu passen.

Wenn Du wirklich selbst etwas machen willst, kann ich nur auf meine Jahre zurückliegende Erfahrungen zurückgreifen, einem CASIO FX-850P seine Basicprogramme zu Sicherheitszwecken zu entlocken... Wichtig wäre für Dich erst mal "man stty". Ausserdem ist wichtig zu wissen, dass die Einstellungen, die man mittels stty macht, so lange halten, wie das Device offen ist. Schliesst man es, fällt es wieder auf Default-Werte. In einem Shellskript sieht das dann ungefähr so aus (ohne Gewähr, da alles aus dem Gedächtnis):
code:

#!/bin/bash
# In einer Subshell () stty aufrufen, dass das TTY verstellt, das an stdin(!) liegt.

( stty 9600 ; cat >logfile) </dev/ttyS0 &
OPEN_PID=$!
trap 'kill $OPENPID ; exit 0' 1 2 15
while true ; do sleep 24h ; done

 

Matt-Ratze
Gast





BeitragVerfasst am: 19. Aug 2003 12:00   Titel: Re: Serielle Schnittstelle einlesen

Hallo Jochen,
vielen Dank für Deine schnelle Antwort,
dann werde ich Deinen Hinweisen gleich nachgehen,
und meine Ergebnisse hier posten.

Ich melde mich.

Grüße
Matt-Ratze
 

Matt-Ratze
Gast





BeitragVerfasst am: 26. Aug 2003 12:02   Titel: Re: Serielle Schnittstelle einlesen

Hallo Jochen,
Dein Tip war genial und hat mein Problem auf Anhieb geloest. Alles wird sauber eingelesen.
Die Bedienung des Programms ist so einfach, daß es muessig waere es hier zu posten.

http://people.redhat.com/johnsonm/ttywatch.html war die Loesung.

Als RedHat-Paket hat es auf SuSE 8.2 sofort funktioniert.

Danke u. Gruß

Matt-Ratze
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy