Linux, g++/gcc : Senden und Empfangen über serielle, aber schnell --- Blocking problem (=langsam)

Gast #1274860
Hallo,
ich versuche gerade ein C++/C Programm zu schreiben,
dass mit einem AVR ATMEGA64 über die serielle kommuniziert.

Ab und an, wenn ein Taster am AVR gedrückt wird, sendet der AVR
ein paar Bytes zum PC.
In der restlichen Zeit nutzt der Computer den AVR als
RS232/Rs485 Konverter, sprich er sendet dem AVR Daten, die dieser
kurz analysiert (ganz primitives failsafe) und auf den RS485 BUS legt.

So,
wenn ich nun im Hauptthread fröhlich meine Daten sende geht alles.
Geschwindigkeit ist ok.

Lasse ich mein PC programm aber in einem extra Thread auch ab und zu
auf die serielle Schnittstelle lauschen, dann geht meine 
Sendeperformance in
die Knie.

Kann man das irgendwie verhindern?

 Viele Grüße
 Daniel
Gast #1275228
ich arbeite nur mit den linux funktionen open, write und read (siehe 
manpages).
Ich öffne das mit:
fd = open(port, O_RDWR | O_NOCTTY | O_NDELAY);

Sprich im main() ne endlosschleife und dann je nach events nen write(fd, 
buffer, length).


Und im parallel laufenden Thread halt auch ne endlosschleife mit nem 
read(fd, buffer, length).

 gruß
 Daniel
Gast #1275829
so rein auf verdacht, ohne den sourcode zu kennen (wink mit dem 
zunpfahl): du hast einen gepufferten i/o. du must mit termios den puffer 
abstellen - ha, verrate ich dir aber nicht wie die funktion heißt, ich 
zeg ja meinen sourcecode nicht her :-)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.