Вот COM открытие порта часть:серийный выпуск COM порт @ чтение
portHandle=CreateFileA(portName, GENERIC_READ|GENERIC_WRITE,0, NULL, OPEN_EXISTING, 0, NULL);
if (portHandle == INVALID_HANDLE_VALUE)
{
return -1;
}
COMMCONFIG Win_CommConfig;
COMMTIMEOUTS Win_CommTimeouts;
unsigned long confSize = sizeof(COMMCONFIG);
Win_CommConfig.dwSize = confSize;
GetCommConfig(portHandle, &Win_CommConfig, &confSize);
Win_CommConfig.dcb.Parity = 0;
Win_CommConfig.dcb.fRtsControl = RTS_CONTROL_DISABLE;
Win_CommConfig.dcb.fOutxCtsFlow = FALSE;
Win_CommConfig.dcb.fOutxDsrFlow = FALSE;
Win_CommConfig.dcb.fDtrControl = DTR_CONTROL_DISABLE;
Win_CommConfig.dcb.fDsrSensitivity = FALSE;
Win_CommConfig.dcb.fNull=FALSE;
Win_CommConfig.dcb.fTXContinueOnXoff = FALSE;
Win_CommConfig.dcb.fInX=FALSE;
Win_CommConfig.dcb.fOutX=FALSE;
Win_CommConfig.dcb.fBinary=TRUE;
Win_CommConfig.dcb.DCBlength = sizeof(DCB);
if (baudrate != -1)
{
Win_CommConfig.dcb.BaudRate = baudrate;
}
Win_CommConfig.dcb.ByteSize = 8;
Win_CommTimeouts.ReadIntervalTimeout = 50;
Win_CommTimeouts.ReadTotalTimeoutMultiplier = 0;
Win_CommTimeouts.ReadTotalTimeoutConstant = 110;
Win_CommTimeouts.WriteTotalTimeoutMultiplier = 0;
Win_CommTimeouts.WriteTotalTimeoutConstant = 110;
SetCommConfig(portHandle, &Win_CommConfig, sizeof(COMMCONFIG));
SetCommTimeouts(portHandle,&Win_CommTimeouts);
return 0;
Он соединяется нормально, мне удалось выпустить некоторые AT comamnds и считаны OK \ п> ответы, даже один из верхнего уровня протокол (OBD2: команда 0100\r
) получает правильный ответ. Но когда я пытаюсь выполнить другие команды, такие как сканирование поддерживаемых pids (например, 0000\n
, 0101\n
, 0202\n
и т. Д.), Все это либо отгоняет то, что я пишу, либо просто время. Выдача одной и той же последовательности команд из гипертерминала работает правильно. Эти последовательные порты представляют собой виртуальные смоделированные порты, если это имеет значение - http://com0com.sourceforge.net/. Что мне не хватает? Возможно, некоторые чтения/настройки/сброса некоторых из контактов? Прошло некоторое время с тех пор, как я последний раз смешивался с RS232 ... Спасибо!
EDIT: просто попробовал scantool на https://www.scantool.net/downloads/diagnostic-software/, и он тоже работал нормально.