Schnittstellen - Seriell unter Win 2000
-
versuchs mal so:
DCB dcbCommPort; // open comm port hComm = CreateFile("COM2", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0); // beenden wenn port nicht geöffnet werden kann if(hComm == INVALID_HANDLE_VALUE) Application->Terminate(); // set comm timeouts GetCommTimeouts(hComm,&ctmoOld); ctmoNew.ReadTotalTimeoutConstant = 100; ctmoNew.ReadTotalTimeoutMultiplier = 0; ctmoNew.WriteTotalTimeoutMultiplier = 0; ctmoNew.WriteTotalTimeoutConstant = 0; SetCommTimeouts(hComm, &ctmoNew); // settings dcbCommPort.DCBlength = sizeof(DCB); GetCommState(hComm, &dcbCommPort); BuildCommDCB("9600,N,8,1", &dcbCommPort); SetCommState(hComm, &dcbCommPort);
-
Da stellt sich die Frage ob du CreateFIle richtig verwendet hast... ...code?
-junix
-
Hallo roN,
wenn ich das ganze so versuche, wie Du es vorgeschlagen hast, kann immernoch nicht die Schnittstelle angesprochen werden.
Worann kann das Liegen?Snypoo
-
Gibts eine Fehlermeldung? Wie sprichst du denn die Schnittstelle an? Würdest du meine Fragen vielleicht auch mal beantworten?
-junix
-
junix hat recht, erzähl mal WAS nicht funktioniert. Fehlermeldungen usw.
-
Ich Spreche die Schnittstelle mittels
hComm = CreateFile("COM1"
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);an, wie roN es auch Schon vorgeschlagen hat und bekomme dann schon direckt "INVALID_HANDLE_VALUE" wieder.
Durch "if(hComm == INVALID_HANDLE_VALUE) Application->Terminate();"
wird meine Anwendung sofort wieder geschlossen. Alle weiteren Befehle kann ich garnicht erst anwenden, da das Programm garnicht erst soweit Läuft.Snypoo
-
...okay, das hilft doch schon einiges weiter.
hast du eine anwendung offen die ebenfalls auf die serielle schnittstelle zugreift? (hyperterminal usw.?)
-
Das einzige was ich zur zeit Offen habe ist der Borland C++ Builder 5 und die Win32 Developer´s References.
-
Na endlich mal was konkretes. Nun gut.
Folgende Frage:
Hast du unter W2k auch die Rechte um auf den ComPort zugreifen zu können?-junix
-
Ich weiß nicht ob ich Die rechte habe, wo kann ich das denn erfahren?
-
..hömm...kann man das überhaupt sperren? *g*
ich hab' keine ahnung wie du das nachsehen kannst.
ähm, du kannst mittels GetLastError erfahren was für ein Fehler das es ist. schau mal unter msdn.microsoft.com/library auschau nach der funktion
-
Hallo,
ich habe jetzt rausgefunden, das ich den Zugriff auf die Serielle Schnittstelle so nur dann vornehmen kann, wenn das Service Pack 2 installiert worden ist.
Snypoo
-
dann funktioniert jetzt alles?!?
-
Ja und nochmals Danke für die Hinweise!
Snypoo