Я использую встроенное аппаратное обеспечение (от TI: Piccolo Control Stick xxx69), которое использует FTDI USB к оборудованию последовательного конвертера.
На ПК у меня есть простое приложение VC ++, которое пытается установить связь с оборудованием через виртуальный COM-порт (VCOM: обычно COM7).
Я могу правильно подключиться к порту.
Я могу отправить данные из приложения / ПК на оборудование, и они получены правильно. (Таким образом, Tx на ПК работает нормально), приложение сначала открывает соединение, используя createfile(... ... ...)
API, а затем использует writefile(.. ... ..)
windows apis для записи в порт напрямую.
Удивительно, но я не могу читать с последовательного порта на приложение. Когда я звоню readfile(... ... ...)
api, возвращает статус TRUE, но читаются нулевые байты. Я попытался использовать программное обеспечение монитора API, которое показывает API ядра Ntreadfile(... ... ...)
, возвращает ошибку как STATUS_TIMEOUT" [0x00000102]
, Это удивительно, потому что запись работает, а чтение — нет, хотя данные есть в сети.
Данные находятся на линии, потому что, когда я использую обычное программное обеспечение гипертерминала, я могу правильно прочитать данные с контроллера и это видно. [Со стороны контроллера все в порядке, потому что мы можем видеть данные на гипертерминале.
Я не программист Windows, так как имею дело с микроконтроллерами. Таким образом, некоторая помощь в решении этой проблемы будет очень полезна.
С уважением,
-Варуна
Вот Ссылка
Вопрос решен. Мне пришлось добавить wait, пока InQueue> 0 (это означает, что в приемном буфере есть по крайней мере 1 байт) или тайм-аут (как безопасный выход) закончился. это будет блокировка вызова, но на данный момент это нормально для моего приложения. waitComm () не работает для меня здесь.
образец фрагмента:
while(1)
{
ClearCommError((HANDLE)*h_drv, (LPDWORD)&Err, &CST);
if((CST.cbInQue >0)||(count >1000000))
break;
count++;
}
Других решений пока нет …