WINCE下串口接受16进制数莫名出错,求解
EVC 4.0下编程串口通信
发现当电脑16进制发送
a5 aa aa aa aa 4d 这一帧数据时,ARM接受正常
但是当发送
a5 01 3b 20 f8 e6 这一帧数据时,ARM收到的就是a513b20f8e6,第一位是0的数都没了,但是第二位是0的话还是能保留
请问这是怎么一回事?
接受这个数据的数组我用CString, unsigned char, BYTE变量都试过了,都没有解决这个问题。
我读取的函数是这样的
CString tp; 暂存变量
buf中是从上位机读的数
Data1[]数组是unsigned char, BYTE也试过了
RecvData1 是 CString 变量
void CMyFtpComDlg::OnUpRecvCom(CWnd *pWnd,BYTE *buf,DWORD buflen)
{
for(i = 0; i < (int)buflen; i++, buf++)
{
tp.Format(_T("%x"), *buf);
Data1[i] = *buf; //存放入数据
RecvData1 += tp;
}
}
我没觉得有什么问题啊
[解决办法]
改成tp.Format(_T("%02x"), *buf);