MFC 32位API函数实现串口通信,16进制接收时,接收的都是其ASIC码,求大神赐教

10进制收发都没问题,16进制发送时,我用串口调试助手接收都是正确的,只有16进制接收时有问题,求大神赐教,如何正确接收16进制数据。... 10进制收发都没问题,16进制发送时,我用串口调试助手接收都是正确的,只有16进制接收时有问题,求大神赐教,如何正确接收16进制数据。 展开
 我来答
归悦欣cf
2013-08-27 · TA获得超过1443个赞
知道大有可为答主
回答量:4250
采纳率:59%
帮助的人:1324万
展开全部
十进制收发没有问题则十六进制就没有问题,应该是你对接收到的数据理解错误引起的。
追问
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码值发生出去,你可以对接收和发生的数据进行统计.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
来自月岩仪态万千的比目鱼
2013-08-27 · TA获得超过1571个赞
知道小有建树答主
回答量:1221
采纳率:50%
帮助的人:969万
展开全部
“16进制发送时,我用串口调试助手接收都是正确的,只有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);
}
//----
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式