fopen auf seriellem Port (64 Bit Linux)
-
Hallo,
ich habe ein Programm, dass auf ein Gerät über die serielle Schnittstelle zugreift. Unter 32 Bit Linux (SuSE 10.3) funktioniert es prima, unter 64 Bit Linux friert es beim Öffnen von /dev/ttyS0 ein. Ich habe das Problem jetzt soweit eingegrenzt, dass es wohl an fopen liegt. Testprogramm:
#include <cstdio> #include <iostream> int main() { FILE *sPort = fopen ("/dev/ttyS0","r+"); if (sPort) { std::cout << "Serial port opened successfully"<< std::endl; fclose(sPort); } else std::cout << "Cound not open serial port"<< std::endl; return 0; }
Unter 32 Bit erhalte ich "Serial port opened successfully", unter 64 Bit bleibt das Programm hängen, ohne das etwas ausgegeben wird. Unter beiden Systemen habe ich die Rechte, auf den seriellen Port zuzugreifen.
$ ls -l /dev/ttyS0 crw-rw---- 1 root uucp 4, 64 2008-04-25 15:21 /dev/ttyS0 $ groups users uucp dialout video
Hat jemand eine Idee, woran es liegt und was man dagegen tun kann? Googeln hat leider nicht weitergeholfen.
-
Hallo,
glaubt es oder nicht, aber ich musste die Maschine rebooten, dann lief es. (Sowas Blödes, das ist doch kein Windows!)
Keine Ahnung, was geklemmt hat. Mit minicom konnte ich problemlos mit dem Gerät reden, deshalb war ich davon ausgegangen, dass die Schnittstelle ordentlich funktioniert und nicht irgendwie geblockt ist. War aber wohl doch der Fall.Sorry for bothering you.
-
cocomonkey schrieb:
Mit minicom konnte ich problemlos mit dem Gerät reden, deshalb war ich davon ausgegangen, dass die Schnittstelle ordentlich funktioniert und nicht irgendwie geblockt ist. War aber wohl doch der Fall.
vielleicht minicom unsauber beendet und dann blieb /dev/ttyS? geblockt. es gibt ein tool, mit dem man sehen kann, welche Prozesse bzw. uid ein File Ressource blocken kann, aber ich kann mich nicht beim besten Willen an den Namen erinnern