ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
26 апреля
873474
IBAH (25.09.2018 13:40, просмотров: 3719)
Не могу победить WinAPI для Ком-порта! Задача- хочу функции "читай байт" из порта "писать байт в порт", решил начать с писать открываю порт handle = CreateFile ( port, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL ); if(handle == INVALID_HANDLE_VALUE) {return FALSE; } if(!SetupComm(handle, SizeBuffer, SizeBuffer)) {return FALSE; } if(!GetCommState(handle, &dcb)) {return FALSE; } dcb.BaudRate = BaudRate; dcb.fBinary = TRUE; dcb.fOutxCtsFlow = FALSE; dcb.fOutxDsrFlow = FALSE; dcb.fDtrControl = DTR_CONTROL_DISABLE;//DTR_CONTROL_HANDSHAKE; dcb.fDsrSensitivity = FALSE; dcb.fNull = FALSE; dcb.fRtsControl = RTS_CONTROL_DISABLE; dcb.fAbortOnError = FALSE; dcb.ByteSize = ByteSize; dcb.Parity = Parity; dcb.StopBits = StopBits; if(!SetCommState(handle, &dcb)){return FALSE; } if(!GetCommTimeouts(handle, &CommTimeOuts)) {return FALSE; } CommTimeOuts.ReadIntervalTimeout = 0; CommTimeOuts.ReadTotalTimeoutMultiplier = 0; CommTimeOuts.ReadTotalTimeoutConstant = 0; CommTimeOuts.WriteTotalTimeoutMultiplier = 0; CommTimeOuts.WriteTotalTimeoutConstant = 0; if(!SetCommTimeouts(handle, &CommTimeOuts)) {return FALSE; } пытаюсь писать в порт Put('Q'); Put('W'); Put('E'); Put('R'); где void Put(unsigned char a) { unsigned char tmp=a; unsigned long tmp2; ClearCommError(handle, &tmp2, &ComState); WriteFile(handle, &a, 1, &tmp2, &Overlap); } на выходе вижу только букву Q и тишина... Игрался с таймаутами, таймауты записи ни на что не влияют! Меняешь таймауты чтения, Выскакивает QR, или QW Что я делаю не так!?