MSComm控件串口数据处理问题

annywoody 2007-01-05 04:22:21
外接设备发送到串口的数据是16进制的,我以二进制的方式读取:
m_ComPort.SetInputMode(1);
读取后数据该怎么处理才能转换为10进制的数呢?
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //设置BYTE数组
CString strtemp;
if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{
variant_inp=m_ctrlComm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组


我这样写的时候
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变
程序运行的时候回在这句出现异常,我看了很多资料都是这么写的,不知道为什么,请大家帮忙看看!!
...全文
306 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
annywoody 2007-01-08
  • 打赏
  • 举报
回复
没人回答?
我读取的数据不完整怎么办?
alexmayer 2007-01-05
  • 打赏
  • 举报
回复
不过,如果是简单的串口应用,可以使用控件,较复杂的还是API好,灵活方便,而且MSCOMM控件在高速通信下有BUG
alexmayer 2007-01-05
  • 打赏
  • 举报
回复
至于MSCOMM的使用,推荐龚老师的网站www.gjwtech.com
alexmayer 2007-01-05
  • 打赏
  • 举报
回复
这个……计算机可不管你是什么十进制、十六进制……,这些禁止都是人为了好交流认为规定出来的!

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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