ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
19 мая
54083 Топик полностью
Николай Коровин (17.03.2006 02:17, просмотров: 1) ответил Николай Коровин на Ксю, ночь на дворе, откуда ты тут? :) Смеяться будешь, пока копировал, заметил влепленную с недосыпа опечатку :) Ожило :)
Шагнем дальше: можно ли эту заразу заставить работать на скоростях выше 115200, если порт это явно умеет? volatile BOOL Data_Cmd, Len_Cmd; UINT CntrCommandLost; HANDLE hCom; int InitCom(char* Com, int ComBaud) { DCB dcb; COMMTIMEOUTS TO; BOOL fSuccess; Data_Cmd = FALSE; Len_Cmd = FALSE; CntrCommandLost = 1; hCom = CreateFile((const char *)Com, GENERIC_READ | GENERIC_WRITE, 0, // comm devices must be opened w/exclusive-access NULL, // no security attrs OPEN_EXISTING, // comm devices must use OPEN_EXISTING 0, // not overlapped I/O NULL // hTemplate must be NULL for comm devices ); if (hCom == INVALID_HANDLE_VALUE) { return 0; } GetCommState(hCom,&dcb); dcb.BaudRate = ComBaud; dcb.ByteSize = 8; dcb.Parity = NOPARITY; dcb.StopBits = ONESTOPBIT; dcb.fOutxCtsFlow=0; dcb.fOutxDsrFlow=0; dcb.fDsrSensitivity=0; dcb.fDtrControl=DTR_CONTROL_DISABLE; dcb.fOutX=0; dcb.fInX=0; dcb.fRtsControl=RTS_CONTROL_DISABLE; dcb.fAbortOnError=0; fSuccess = SetCommState( hCom, &dcb); if(!fSuccess) return 0; // fail PurgeComm(hCom,PURGE_TXCLEAR|PURGE_RXCLEAR); GetCommTimeouts( hCom,&TO); TO.ReadIntervalTimeout=MAXDWORD; TO.ReadTotalTimeoutMultiplier=0; TO.ReadTotalTimeoutConstant=0; SetCommTimeouts( hCom,&TO); return 1; } далее if (InitCom ("COM1", 115200)) { * * * retry: WriteFile (hCom,&B,1,&M,NULL); if (!M) goto retry; }