траблы с COM-портом
От: BarMan  
Дата: 14.05.02 06:17
Оценка:
Здравствуте уважаемые.

Такая ф-я творится.. Читаю данные с КОМ-порта, под NT4.0 с бар-код ридера, затем мне эти данные нужно вбивать в активную строку... Я использовал для этого просто keybd_event И самое тупое, что в дебуге все работает, а в реальности фигню творит! На первом чтении почему-то только первые 8 байт выдает и останавливается, нормально читать начинает только с третьего раза...
Вот код:

DWORD dwCommEvent;
DWORD dwRead;
char chRead;

OVERLAPPED osReader = {0};
osReader.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);

SetCommMask (hCom, EV_RXCHAR);
if (WaitCommEvent(hCom, &dwCommEvent, NULL)){

while (ReadFile(hCom, &chRead, 1, &dwRead, &osReader)) {

if (chRead==NULL) {
ResetEvent (&osReader);
SetCommMask (hCom, EV_TXEMPTY);
break;
}


keybd_event(chRead, 0x45, KEYEVENTF_EXTENDEDKEY | 0,0);
keybd_event(chRead, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);

}

}





Код на самом деле немного другой... Это как бы основная суть. Но просто даже, почему такое может быть? Что только 8 байт и все... А если зациклить, то дальше нормально читает. Причем в дебуге сразу нормально все читает.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.