当前位置: 代码迷 >> WinCE >> WINCE下串口接受16进制数莫名出错,求解,该怎么解决
  详细解决方案

WINCE下串口接受16进制数莫名出错,求解,该怎么解决

热度:192   发布时间:2016-04-28 13:50:56.0
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);
  相关解决方案