高分求助(急,分不够还可以再给,在线等待):串口数据接收问题

catechumen13 2005-06-21 11:32:45
我做了个串口通信测试程序
在接收数据时我用这样的方法。
unsigned char buf[100]为接收数据缓冲区;
用ReadFile(hCom,&buf[temp],length,&length,&m_OverlappedRead)从串口读取数据;
我这样处理接收到的数据并显示到文本框;
char stemp[100];
strcpy(stemp,(char *)buf);
m_strReceive+=stemp;
如果发送端是以ASCII码发送过来的,接收时是正常的,若换成十六进制发送,则接收时显示不出字符。
我该怎么做才能接收到对方发来的十六进制??请各位朋友帮帮忙,谢谢!!
...全文
121 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
我要飞得更高 2005-07-12
  • 打赏
  • 举报
回复
char sz[8] = "\0";
sprintf(sz , "%2.2x" , buf[0]);
就可以把第一位转换为16进制
casinosun 2005-07-12
  • 打赏
  • 举报
回复
转换为16进制就行了,搜一下,原来的帖子上有
一条晚起的虫 2005-07-04
  • 打赏
  • 举报
回复
先转化成16进制形式,然后,1-F一个一个替换,就行了(F - 11111111,1-00000001)
一条晚起的虫 2005-07-04
  • 打赏
  • 举报
回复
没有直接的格式,自己编个转化吧
catechumen13 2005-06-22
  • 打赏
  • 举报
回复
谢谢诸位帮忙,小弟问题顺利解决了。
但我想把接收的的数以二进制0和1的方式显示出来该怎么做?为这问题找了好多资料,不知道从哪着手?请诸位再指教小弟一下。
Mr-Chen 2005-06-22
  • 打赏
  • 举报
回复
直接把ASCII码转换为二进制码,这是一个数值转换问题
catechumen13 2005-06-21
  • 打赏
  • 举报
回复
谢谢sofdev(东聿) !
还是不行,我想把收到的二进制直接在对话框中显示出来,但不知道怎么做?
sofdev 2005-06-21
  • 打赏
  • 举报
回复
strcpy遇到'\0'就停止了,因此有可能不能拷完你的数据

unsigned char buf[100]为接收数据缓冲区;
用ReadFile(hCom,&buf[temp],length,&length,&m_OverlappedRead)从串口读取数据;
我这样处理接收到的数据并显示到文本框;
char stemp[100];
strcpy(stemp,(char *)buf);<---------这里改为memcpy(stemp,buf,length);
m_strReceive+=stemp;
dfyang 2005-06-21
  • 打赏
  • 举报
回复
buf[length] = '\0';//maybe no need
m_strReceive.Format("%s", buf);
一条晚起的虫 2005-06-21
  • 打赏
  • 举报
回复
CString DataIn ;
CString strFomat ;
for(i=0;i<&length;i++)
{
Temp.Format("%0x",buf[i]) ;
DataIn += Temp ;
}

2,643

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧