上位机串口程序以十六进制接收数据

来源:互联网 发布:macbook怎么删除软件 编辑:程序博客网 时间:2024/05/19 19:44

刚接触MFC,做了个串口通信的程序。由于是与单片机通信,需要以十六进制发送数据,为了验证在接收函数中把接收到的数据转换为十六进制显示。接收buf 1 之前定义为char型,比如发送1ABa,接收应该显示0x1a    0xba,但是实际接收显示的是0x1a   0xffffffba。后来把buf1改成BYTE类型,接收显示就正确了。不清楚为啥,猜想是不是char是有符号,把前面的都置1了。如果有大神知道,希望告诉下。


附上相应消息ON_COM_RECEIVE的接收函数

LRESULT CLMComTestDlg::OnComRecv(WPARAM, LPARAM)
{
char buf1[1024];//
BYTE *buf2;
//buf2=commDevice.ReadString(buf1,1024);
buf2=(BYTE*)MyComm_.getCnComm().ReadString (buf1,1024);
CString str(buf2);
int k=str.GetLength ();
for(int i=0;i<k;i++)
{
str.Format (_T("%x"),buf2[i]);//将接收到的char型数据转换为对应的十六进制 
   m_Rxstr.AddString (str);
}
    UpdateData(0);
static int cnt=0;
cnt=m_Rxstr.GetCount();
m_Rxstr.SetCurSel(cnt-1);
    

return 1;
}

0 0
原创粉丝点击