Символы ReadFile, COM и NULL в c ++ - PullRequest
       27

Символы ReadFile, COM и NULL в c ++

1 голос
/ 24 февраля 2010

У меня проблема с функцией ReadFile в виртуальном последовательном порту:

char tmp[128];
int multiplo=0;
DWORD err;
COMSTAT stt;

ClearCommError(hcom, &err, &stt);
do{
    if(ReadFile(hcom, tmp, stt.cbInQue, &err, NULL)){
        tmp[err] = '\0';
        memcpy(bfIn+multiplo, tmp, err);
        multiplo = multiplo + err;
    }else
        return 0;
}while(err > 0);

этот код работает, когда ReadFile получает действительный символ, такой как 0x01, 0x02, 0x03 ... но есть проблема с 0x00, код не читается так, как я ожидал, я пробую с гипертерминалом, и он отлично работает.

Я определил в структуре dcb:

dcb.fNull = false;

но все же у меня та же проблема, любая помощь?

1 Ответ

0 голосов
/ 02 декабря 2010

Кажется, проблема не в ReadFile (), а в том, что вы используете tmp [], так как завершающий '\ 0' тоже бывает 0x00.читать, как я ожидал "?Можете ли вы описать симптомы более подробно?

...