• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Serielle Schnittstelle in Datei umleiten

olnol

Alkmene
Registriert
28.12.09
Beiträge
30
Hallo zusammen. Ich möchte gerne die empfangenen Daten von einer RS232 Schnittstelle in eine Datei umleiten.
Umgesetzt habe ich es folgendermaßen: cat /dev/ttyS0 > datei.txt
Alles soweit so gut. Was mich nun stört ist, das jeder empfangene String der Datei hinzugefügt wird und die Datei damit ständig wächst. Ich möchte eig das immer nur eine Zeile in der Datei steht und diese durch ein neu empfangenen String immer überschrieben wird.

Kann mir jemand helfen?
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Ein Mac mit OS X und RS-232 Port? Du machst gerne Insider-Witze?

Mit simplen Shellbefehlen wird das überraschend kniffelig.
Was kömmt denn über die serielle rein? 7-bittiges ASCII oder 8-bittige Binärdaten? Undefiniert vielleicht?
 

olnol

Alkmene
Registriert
28.12.09
Beiträge
30
Das ganze ist ein Debian-Derivat auf einem Embedded System.
Zu Testzwecken habe ich einfach über Hyperterm beliebige ASCII-Strings über RS232 verschickt.
Ich möchte eben einfach das jeder empfange String den vorherigen in der Datei überschreibt.

> dieser Umleitungsoperator ist doch genau dafür gedacht, im Gegensatz zu >>

Warum geht es trotzdem nicht?
 

olnol

Alkmene
Registriert
28.12.09
Beiträge
30
Kann mir keiner helfen?
Brauche die Sache dringend.
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
> dieser Umleitungsoperator ist doch genau dafür gedacht, im Gegensatz zu >>
Warum geht es trotzdem nicht?
Weil der bestehende Inhalt der Datei erst dann durch > überschrieben wird, sobald du sie erneut öffnest.
Du hältst sie jedoch die ganze Zeit offen. Hereinkommende Daten werden damit bis in alle Ewigkeit nur hinten angefügt.

Du solltest erst mal klarstellen, welche Datentypen du damit verarbeiten willst. Es macht einen gewaltigen Unterschied, ob das mit "Newlines" separierte Textzeilen einer Unix Maschine, mit CR/LF terminierte Textzeilen einer DOS/Win Maschine, mit NUL-Bytes terminierte "C-Strings" oder vielleicht sogar nur "unsepariert" hereinkommende Datenpakete von immer wieder fester Grösse sind, die da mal an der Schnittstelle reinpurzeln werden. Oder vielleicht auch so was *richtig* exotisches wie die Kommunikation mit einem Modem, gesteuert durch Start/Stop-Bits und bestimmten vordefinierten, speziellen Zeichen-Sequenzen... die Möglichkeiten wie diese Daten strukturiert sein können sind schier unendlich, und alles davon wird irgendwo für irgendwas über solche Ports verwendet.
Danach muss man sich die passende Methode wählen um herauszufinden, wo genau deine "letzte Zeile" überhaupt beginnt und endet. Was du zu "Testzwecken" benutzt muss im finalen Einsatz nicht unbedingt das passende sein. Stimmt das nicht überein, ist die ganze Mühe für die Katz.

Ausserdem habe ich sowieso nicht den geringsten Dunst, was dir auf diesem Embedded-System überhaupt an installierten Tools und Features zur Verfügung steht, das machts doppelt spannend.
Hilfst du mir bitte etwas dabei, dir helfen zu können?
Also: Wer oder was genau ist der Absender dieser Daten? Ein bestimmtes Stück recht spezieller Peripherie-Hardware vielleicht, oder möchtest du das direkt an den gleichartigen Port eines PC koppeln?
Beschreib doch mal in einem einigermassen nachvollziehbaren Aufriss, was du dir da eigentlich zusammenbasteln möchtest, und mit welchen Mitteln.