MFC 32位API函数实现串口通信,16进制接收时,接收的都是其ASIC码,求大神赐教
10进制收发都没问题,16进制发送时,我用串口调试助手接收都是正确的,只有16进制接收时有问题,求大神赐教,如何正确接收16进制数据。...
10进制收发都没问题,16进制发送时,我用串口调试助手接收都是正确的,只有16进制接收时有问题,求大神赐教,如何正确接收16进制数据。
展开
展开全部
十进制收发没有问题则十六进制就没有问题,应该是你对接收到的数据理解错误引起的。
追问
char lbuffer[10]; //用以提取接收缓冲区数据
。。。
若我用串口调试助手发送1234
当接收过之后
if(lbuffer[1] == 2){} //此if就进不去
if(lbuffer[1] == '2'){} //这个if可以进去
若我用串口调试助手发送16进制12 fe 34 ac
然后我接收的数据都是此16进制对应10进制ASIC码值
求继续赐教
追答
应该是调试助手发送数据的问题,应该是把16进制对应10进制ASIC码值发生出去,你可以对接收和发生的数据进行统计.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
“16进制发送时,我用串口调试助手接收都是正确的,只有16进制接收时有问题”
这是什么意思?MFC接收16有问题?
有可能你接收的是正常的,只是你看到的不正常。
就是说你确定你看到的是真实的吗?
这是什么意思?MFC接收16有问题?
有可能你接收的是正常的,只是你看到的不正常。
就是说你确定你看到的是真实的吗?
追问
char lbuffer[4]; //用以提取接收缓冲区数据
。。。
若我令lbuffer[4] = {0x12,0xfe,0x34,0xac};
然后发送出去,我的串口调试助手也只能按16进制接收正常
若我用串口调试助手发送16进制12 fe 34 ac
然后我接收的数据都是此16进制对应10进制ASIC码值if(lbuffer[1] == 0xfe){}是进不去的
求继续赐教
追答
是数据类型的问题。
char lbuffer[4];这里是char,而你想要显示的是16进制。你可以自己转一下。
最好用unsigned char。下面的代码,你可以学习借鉴下。
//ASCII To Char
unsigned char s[10] ;
s[0] = 0x35 ;
s[1] = 0x37 ;
s[2] = 0x61 ;
s[3] = 0 ;
scanf("%d",&s);
CString Str ;
for(int i=0;i<10;i++)
{
char c=(char)s[i];
Str +=c ;
}
MessageBox(Str);
//char to ASCII
char a;
int num;
int ix=0;
do{
cout<<"输入a: "<<endl;
cin>>a;
ix++;
num = a-'!'+33;//得到a对应的ASCII
cout<<a<<"的ASCII为: "<<num<<endl;
}while(ix=10);
//----
int Char2ASCII(char c)
{
return (c-'!'+33);
}
//----
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询