Ich habe deine Einstellungen übernommen:
Hat leider keine Veränderungen gebrachtCode:memset(&dcbSerialParams,0,sizeof(dcbSerialParams)); dcbSerialParams.DCBlength = sizeof(dcbSerialParams); dcbSerialParams.BaudRate = CBR_128000; // 9600 oder eine andere Baudrate dcbSerialParams.fParity = FALSE; dcbSerialParams.fBinary = TRUE; dcbSerialParams.Parity = NOPARITY; dcbSerialParams.StopBits = ONESTOPBIT; dcbSerialParams.fOutxCtsFlow = FALSE; dcbSerialParams.fOutxDsrFlow = FALSE; dcbSerialParams.fDtrControl = DTR_CONTROL_ENABLE; dcbSerialParams.fRtsControl = RTS_CONTROL_ENABLE; dcbSerialParams.fDsrSensitivity = FALSE; dcbSerialParams.fAbortOnError = FALSE; dcbSerialParams.ByteSize = 8; timeouts.ReadIntervalTimeout = MAXDWORD; // 0 ms Read-Timeout timeouts.ReadTotalTimeoutMultiplier = 0; timeouts.ReadTotalTimeoutConstant = 0; timeouts.WriteTotalTimeoutMultiplier = 1; // 1*2 ms Write Timeout timeouts.WriteTotalTimeoutConstant = 2;
Meine Einstellungen mit dem Timeout waren vorher:
Schwieriges ThemaCode:tbResult InitSerialPort(HWND hwnd) { LPCTSTR SeriellerPort = TEXT("COM4"); hSerial = CreateFile(SeriellerPort, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if(hSerial==INVALID_HANDLE_VALUE) { if(GetLastError()==ERROR_FILE_NOT_FOUND) { // Generate an error // Fehlercode ausgeben if(!GetProcessId(NULL)) { MessageBox(hwnd, (LPCWSTR)"Fehler bei LGetProcessId", (LPCWSTR)L"Fehler", MB_OK | MB_ICONEXCLAMATION); return TB_ERROR; } //serial port does not exist. Inform user. MessageBox(hwnd, (LPCWSTR)L"Fehler bei CreateFile. Serial Port existiert nicht!", (LPCWSTR)L"Fehler", MB_OK | MB_ICONEXCLAMATION); return TB_ERROR; } //some other error occurred. Inform user MessageBox(hwnd, (LPCWSTR)L"Fehler bei CreateFile. Sonstiger Fehler!", (LPCWSTR)L"Fehler", MB_OK | MB_ICONEXCLAMATION); return TB_ERROR; } if (!GetCommState(hSerial, &dcbSerialParams)) { //error getting state MessageBox(hwnd, (LPCWSTR)L"Fehler bei GetCommState!", (LPCWSTR)L"Fehler", MB_OK | MB_ICONEXCLAMATION); return TB_ERROR; } /* memset(&dcbSerialParams,0,sizeof(dcbSerialParams)); dcbSerialParams.DCBlength = sizeof(dcbSerialParams); dcbSerialParams.BaudRate = CBR_128000; // 9600 oder eine andere Baudrate dcbSerialParams.fParity = FALSE; dcbSerialParams.fBinary = TRUE; dcbSerialParams.Parity = NOPARITY; dcbSerialParams.StopBits = ONESTOPBIT; dcbSerialParams.fOutxCtsFlow = FALSE; dcbSerialParams.fOutxDsrFlow = FALSE; dcbSerialParams.fDtrControl = DTR_CONTROL_ENABLE; dcbSerialParams.fRtsControl = RTS_CONTROL_ENABLE; dcbSerialParams.fDsrSensitivity = FALSE; dcbSerialParams.fAbortOnError = FALSE; dcbSerialParams.ByteSize = 8; timeouts.ReadIntervalTimeout = MAXDWORD; // 0 ms Read-Timeout timeouts.ReadTotalTimeoutMultiplier = 0; timeouts.ReadTotalTimeoutConstant = 0; timeouts.WriteTotalTimeoutMultiplier = 1; // 1*2 ms Write Timeout timeouts.WriteTotalTimeoutConstant = 2; */ dcbSerialParams.BaudRate= CBR_128000; //CBR_57600; dcbSerialParams.ByteSize=8; dcbSerialParams.StopBits=ONESTOPBIT; dcbSerialParams.Parity=NOPARITY; dcbSerialParams.fOutxCtsFlow=0; dcbSerialParams.fOutxDsrFlow=0; if(!SetCommState(hSerial, &dcbSerialParams)) { //error setting serial port state MessageBox(hwnd, (LPCWSTR)L"Fehler bei GetCommState beim Parameter belegen!", (LPCWSTR)L"Fehler", MB_OK | MB_ICONEXCLAMATION); return TB_ERROR; } timeouts.ReadIntervalTimeout=50; timeouts.ReadTotalTimeoutConstant=50; timeouts.ReadTotalTimeoutMultiplier=10; timeouts.WriteTotalTimeoutConstant=50; timeouts.WriteTotalTimeoutMultiplier=10; if(!SetCommTimeouts(hSerial, &timeouts)) { //error occureed. Inform user MessageBox(hwnd, (LPCWSTR)L"Fehler bei Timeout!", (LPCWSTR)L"Fehler", MB_OK | MB_ICONEXCLAMATION); return TB_ERROR; } return TB_OK; }![]()






Zitieren


Lesezeichen