首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

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

2012-02-10 
WINCE下串口接受16进制数莫名出错,求解EVC 4.0下编程串口通信发现当电脑16进制发送a5 aa aa aa aa 4d 这一

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);

热点排行