Comport 2x auf einem PC öffnen
-
Hi all,
ist es möglich einen Comport 2 mal auf einen PC zu öffnen, und Daten zu
verschicken?
Ich versuche es zurzeit mit CreateFile und Overlapped. Das öffnen und warten auf
Daten mit dem 1. Programm funktioniert, aber wenn ich das 2. Programm starte,
und den Port ein zweites mal öffnen will dann liefert GetLastError Code 5
"Access is denied."Darum möchte ich wissen, ob es überhaupt möglich ist einen Port 2x zu öffnen,
und wenn ja wie?
-
Haste auch den Share-Mode richtig angegeben?
-
Das ist der dritte Parameter bei OpenFile() oder?
Bisher hate ich den immer auf 0.
Ich probiers aber mal aus.
-
Ich habe es jetzt bei beiden mit FILE_SHARE_DELETE | FILE_SHARE_READ versucht,
immer noch das gleiche Ergebnis.std::ostringstream Str; Str << "Comport " << ComNr; mCom = CreateFile(/*GetPN(ComNr)*/"COM1", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE,NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL); if(!PortIsOpen()) { Str << " konnte nicht geöffnen werden: Fehlercode " << GetLastError(); BASEEXCEPTION(Str.str(), "ComPort::OpenCom()"); /*BASEEXCEPTION ist ein Macro, welches eine Exceptionklasse wirft }
-
http://msdn.microsoft.com/library/en-us/devio/base/communications_resource_handles.asp
If the specified resource is currently being used by another process, CreateFile fails.
...
The fdwShareMode parameter must be zero, opening the resource for exclusive access.
-
Wenn ich das mit meinem bescheidenen Englisch verstanden habe, dann
kann man "Communication Resources" nur exklusiv für ein Programm öffnen
und man muss den Parameter "dwShareMode" auf 0 setzen.
-
Oder gibt es noch eine andere Möglichkeit auf den Comport zuzugreifen?