Wie öffnet man eine Schnittstelle mehrmals?
-
Habe ein Problem mit der 2fachen Öffnung einer seriellen Schnittstelle. Ich will sie 2fach öffnen um getrennt von einander von ihr zu lesen und zu schreiben. Hab in der MSDN schon geschaut bei CREATEFILE aber komme nicht weiter, es funktioniert nicht mit den einstellungen FILE_SHARE_READ | FILE_SHARE_WRITE.
Könnte mir da jemand helfen? Wäre sehr dankbar dafür.
Wenn ihr noch Details braucht sagt bescheid:)
-
When the process uses CreateFile to open a communications resource, it must specify certain values for the following parameters:
The fdwShareMode parameter must be zero, opening the resource for exclusive access.Aber was willst du gleichzeitig lesen und schreiben
Evtl. hilft es dir auch einfach die Schnittstelle overlapped zu verwenden 
-
ich will über diese Schnittstelle zyklische Protokolle versenden und empfangen und beides von einander unabhängig steuern können, daher dachte ich wäre ein 2facher zugriff praktischer. was passiert genau bei overlapped? Arbeitet das lesen und schreiben dann auch gleichzeitig oder wie?
Wie verwende ich dann die schnittstelle overlapped?
-
Bei CreateFile in dwFlagsAndAttributes einfach FILE_FLAG_OVERLAPPED (mit)angeben - und dann:
The file is being opened or created for asynchronous I/O. When the operation is finished, the event specified to the call in the OVERLAPPED structure is set to the signaled state. Operations that take a significant amount of time to process return ERROR_IO_PENDING.
If this flag is specified, the file can be used for simultaneous read and write operations. The system does not maintain the file pointer, therefore you must pass the file position to the read and write functions in the OVERLAPPED structure or update the file pointer.If this flag is not specified, then I/O operations are serialized, even if the calls to the read and write functions specify an OVERLAPPED structure.
Ob man damit allerding dann wirklich gleichzeitig lesen und schreiben kann weiß ich nicht

-
"Mehrfach öffnen" ist nicht möglich. Auch wenn es möglich wäre, wie sollen denn die empfangenen Bytes wissen, zu welchen Programm sie gehören? Du brauchst in jedem Fall irgend eine EINZELNE Instanz, die die Protokolle erkennt und trennt (beim Empfang). Mehrfach Schreiben (aber eben nur auf eine EINMAL geöffnete Schnittstelle) ist kein Problem, es wird alles "kanalisiert", also nacheinander gesendet. Gleichzeitig Senden und Empfangen geht wie schon beschrieben mit OVERLAPPED.
Blackbird
-
Danke euch beiden erstmal für eure tipps, dann muss ich mal schauen wie ich das hinbekomme, schätze mal dass ich dann auf getrennte threads zurückgreifen muss, die mir das Senden und Empfangen organisieren.
Also Danke nochmal