Serielle Schnittstelle unter Linux
-
Hallo!
Kann ich (unter Linux) die serielle Schnittstelle nur mit C ansprechen,
oder gibt es auch eine reine C++ Variante?
Alle Beispiele, die ich bis jetzt gesehen habe, beinhalten einen C Code.
-
Vielleicht wäre das hier was für dich?
-
Danke, werd ich mir mal anschauen. Wundert mich, dass es bei Debian nicht
an Bord ist. Aber es gibt ein Package libezv24. Oder ist die nur für Mobil-
telefone?
-
Naja, libezv24 ist ja, soweit ich das sehen kann, reines C. Davon wolltest du doch wegkommen, oder?
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Die libserial scheint ja für diesen Zweck geeignet zu sein. Abre sie
verhält sich teilweise schon seltsam. Manchmal blockiert alles. Vor allem
beim Lesen.
Folgender Testcode:#include <iostream> #include <cstdlib> #include <SerialPort.h> using namespace std; int main(int argc, char *argv[]) { SerialPort SP("/dev/ttyS1"); if (SP.IsOpen()) { SP.Close(); } SP.Open(SerialPort::BAUD_19200, SerialPort::CHAR_SIZE_8, SerialPort::PARITY_NONE, SerialPort::STOP_BITS_1, SerialPort::FLOW_CONTROL_HARD); SP.WriteByte('x'); cout << SP.ReadLine(); return 0; }
Die beiden Schnittstellen habe ich mit miniterm verbunden. Das "x" kommt
bei miniterm an. Doch alles was ich in miniterm schreibe, kommt nicht
bei meinem Programm an.Mein späterer Anwendungsfall ist folgender:
Ich schicke einem Gerät eine Zeichenkette. Das Gerät antwortet. Das hat
auch funktioniert. Jetzt schicke ich die selbe Zeichenkette nochmal, es
kommt keine Antwort mehr, obwohl das Gerät antwortet. Am Terminator liegt
es nicht.
-
Die libezv24 arbeitet bei mir etwas besser. Allerdings ist sie in C
implementiert. Der grosse Nachteil ist, dass ich beim Lesen von ganzen
Zeilen wissen sollte, wieviele Zeichen gesendet werden. Wenn ich generell
255 Zeichen angebe, kommt es zu erheblichen Verzögerungen, wenn z. B. nur
3 Zeichen gesendet werden.
Welches ist denn generell die beste Möglichkeit zur Kommunikation über
die serielle Schnittstelle, unabhängig davon ob C oder C++?