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
ohne den sourcecode zu kennen gar nicht.
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
Ja. Und wie sieht nun der Sourcecode aus?
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 :-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.