000
27.07.2004, 13:24 Uhr
~Chavez
Gast
|
Horrido! Bin grad dabei eine Aplikation von Win32 auf Linux zu portieren, die mit einem Gerät über eine serielle Schnittstelle kommunizieren soll. Unter Win32 wird "CreateFile", "WriteFile", "ReadFile" und "SetCommState" verwendet und das ganze funktioniert. Ich habe unter Linux "open","write","read" und "tcsetattr" verwendet (also quasi einfach die Win32 Aufrufe ersetzt), Es sollte eigentlich 57600Baud, 8 Databits, keine Parity und 1 StopBit verwenden. Mein Versuch dabei:
C++: |
tcgetattr(fd, &options); cfsetispeed(&options, B57600); cfsetospeed(&options, B57600); options.c_cflag |= (CLOCAL | CREAD); options.c_cflag &= ~PARENB; options.c_cflag &= ~CSTOPB; options.c_cflag &= ~CSIZE; options.c_cflag |= CS8; //options.c_cflag &= ~CNEW_RTSCTS; options.c_iflag &= ~(IXON | IXOFF | IXANY); if(tcsetattr(fd, TCSANOW, &options) == -1) printf("\nFehler setDevice\n");
|
Problem ist: Mein Programm schreibt zwar die gleich Anzahl an Bytes mit "write" wie das Win32 Programm, bekommt aber keine Antwort (read = -1). Das ist sehr nervig udn deswegen wäre ich für etwas Hilfe sehr dankbar Gruß Chavez
|