VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 959|回复: 3

MSComm控件串口数据处理问题

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-3-15 11:30:02 | 显示全部楼层 |阅读模式
外接设备发送到串口的数据是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型变
程序运行的时候回在这句出现异常,我看了很多资料都是这么写的,不知道为什么,请大家帮忙看看!!
回复

使用道具 举报

0

主题

2

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-6-15 00:00:01 | 显示全部楼层
这个……计算机可不管你是什么十进制、十六进制……,这些禁止都是人为了好交流认为规定出来的!
回复

使用道具 举报

0

主题

2

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-6-15 12:15:01 | 显示全部楼层
不过,如果是简单的串口应用,可以使用控件,较复杂的还是API好,灵活方便,而且MSCOMM控件在高速通信下有BUG
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-7-28 07:45:02 | 显示全部楼层
没人回答?
我读取的数据不完整怎么办?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表