Schnittstellen - Seriell unter Win 2000
-
Halo,
ich versuche dei Serielle Schnittstelle unter Win 2000 anzusprechen, die Befehle die ich damals unter DOS nutzen konnte kennt der Borland C++ Builder 5 nichtmehr (sind veraltet). Über welche Befehle kann ich diese Schnittstelle ansprechen (Einstellungen auslesen & änder, daten senden & empfangen).
Ich hoffe ihr könnt mir helfen.
[ Dieser Beitrag wurde am 19.02.2002 um 17:06 Uhr von Jansen editiert. ]
-
Auf die Frage gibts auch langsam Rente images/smiles/icon_wink.gif
Also gut - hier die Funktionen:
CreateFile(), ReadFile(), WriteFile(), WaitCommEvent(), Get/SetCommConfig() und und und ...
Ansonsten siehe MSDN, Suchfunktion und Signature
RockNix///
[ Dieser Beitrag wurde am 04.02.2002 um 11:07 Uhr von RockNix editiert. ]
-
Hallo
auch unter SourceCode da ganz links oben gibt es etwas unter RS 232
Bitte schaut doch erstmal bevor ihr andere etwas nervt
Sorry wenn ich etwas genervt klingeMfG
Klaus
-
Hallo nochmals,
ich habe das mit dem Befehl CreateFile unter Win 2000 auprobiert, bekomm allerdings die Schnittstelle nicht geöffnet und kann deswegen keine Änderungen von z.B. der Baudrate vornehmen.
Woran kann das liegen?Snypoo
-
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