c ++中的ReadFile,COM和NULL字符

时间:2010-02-24 11:40:44

标签: c++ winapi serial-port readfile

我在虚拟串口中遇到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 :(得分:0)

问题似乎不在于ReadFile(),而在于你使用tmp [],因为终止'\ 0'也恰好是0x00。

你的意思是“不像我预期的那样读”?你能更详细地描述这些症状吗?