2010-02-24 72 views
1

我有一个虚拟串口与ReadFile函数问题中的NULL字符:ReadFile的,COM和C++

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的得到有效的性格像0×01,0×02,×03 ......但是有是一个0x00的问题,代码不像我想象的那样阅读,我尝试使用超级终端,这是完美的。

我在DCB结构定义了:

dcb.fNull = false; 

但我仍然有同样的问题,任何帮助吗?

回答

0

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

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

+0

感谢您的答案,代码工作没有问题,问题是当我读'多',但我修好了。 – armandfp 2010-12-21 14:22:54