ich einige dumme Code haben einen Windows COM-Port für den Zugriff auf (nur einige Pseudo-Code der wichtigsten Funktionen):Zugriff auf COM-Port mit Windows-10
// open device:
COMMTIMEOUTS timeouts;
DCB ComSettings;
memset(&ComSettings,0,sizeof(ComSettings));
ComSettings.DCBlength=sizeof(DCB);
*fd=CreateFile(serialParams>port,GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
GetCommState(*fd,&ComSettings);
ComSettings.BaudRate=9600;
ComSettings.ByteSize=8;
ComSettings.Parity=NOPARITY;
ComSettings.fParity=0;
ComSettings.StopBits=ONESTOPBIT;
ComSettings.fOutX=FALSE;
ComSettings.fInX=FALSE;
ComSettings.fBinary=TRUE;
ComSettings.fDtrControl=DTR_CONTROL_DISABLE;
ComSettings.fRtsControl=RTS_CONTROL_DISABLE;
ComSettings.fAbortOnError=FALSE;
SetCommState(*fd,&ComSettings);
timeouts.ReadIntervalTimeout =MAXDWORD;
timeouts.ReadTotalTimeoutMultiplier =0;
timeouts.ReadTotalTimeoutConstant =0;
timeouts.WriteTotalTimeoutMultiplier=0;
timeouts.WriteTotalTimeoutConstant =250;
SetCommTimeouts(*fd, &timeouts);
Lesen von Daten aus seriellen Schnittstelle erfolgt mit
ReadFile()
und
WriteFile()
In meinem speziellen Fall ist das Gerät ein USB-Gerät mit dem Schreiben, das als seria verbindet l Interface und wo Geschwindigkeitseinstellungen und andere Dinge nicht wirklich wichtig sind.
Dieser Code funktioniert gut mit allen Windows-Varianten einschließlich 8.1, aber für Windows 10 berichten einige Benutzer, dass keine Kommunikation mit dem Gerät möglich ist. Leider habe ich nicht die zugehörige Win10-Version zum Testen.
Also meine Frage: Gibt es einige Probleme/wichtige Änderungen in Windows 10, die ein solches Verhalten verursachen könnten oder einige Änderungen in der seriellen Kommunikation erfordern?
Danke!
****** aktualisieren ************************************* *******************************
Nur als Update zu diesem: Funktion SetCommState() schlägt mit einem Fehler 87 (ERROR_INVALID_PARAMETER). Hier ist es egal, ob ich eigene Parameter setze, ob ich die von GetCommState() empfangenen Daten verwende oder ob ich die DCB-Struktur vollständig initialisiere und konfiguriere. Also ... ist das ein bekannter Fehler in SetCommState() von Win 10?
Nur zu beachten: es scheitert nur in 4 von 5 Fällen, also ist es kein systematischer Fehler, sondern ein zufälliger!
Ich weiß nicht, welchen Grund es gibt, diese Frage zu verwerfen ... aber nicht überraschend, dass diese Leute in den meisten Fällen gut genug sind, um keinen Kommentar abzugeben ... – Elmi