串口读数据的问题

Nosoft12345 2015-07-22 09:09:21
笔记本:在win 8上,USB口转COM口

通过MS提供的CMSCOMM 控件读取硬件设备返回的数据。

现在的问题是:在读取vResponse=m_MSComm1.get_Input();

这里就会异常,奔溃。

但在其他的机器上没这样的问题,可能是只在个别的机器上有这个,问题,

然后,我增加了try catch(_com_error e) 来捕获异常,但根本无法捕获异常。

=======================以下是初始化=================================================
m_MSComm1.put_CommPort(g_nComNum);//指定串口号
m_MSComm1.put_InBufferSize(BUFSIZE);//指定接收缓冲区大小
m_MSComm1.put_OutBufferSize(BUFSIZE);//指定发送缓冲区大小
if(!m_MSComm1.get_PortOpen())
{
m_MSComm1.put_PortOpen(true);
}
//m_MSComm1.IgnorNullChar(FALSE);
m_MSComm1.put_InputMode(1);//1:设置二进制模式,0:文本模式
m_MSComm1.put_Settings(_T("115200,N,8,1"));// 通信参数设置
//原则上put_RThreshold参数值>=put_InputLen参数值,一般两者相等即可,设成单次接收的最少字节数。
m_MSComm1.put_RThreshold(1);//当接收缓冲区中字符数达到该值时,MSComm控件设置Commevent属性为ComEvReceive,并产生OnComm事件
m_MSComm1.put_SThreshold(0);//512//为了在三次连续串口通信中改变CommEvent的状态为1而不总是2
m_MSComm1.put_InputLen(0);//触发OnComm事件后m_MSComm1.get_Input()一次从接收缓冲区中读取字节数,设为0表示一次接收接收缓冲区的所有数据
m_MSComm1.get_Input();//先预读缓冲区以清除残留数据
SetCommMask(m_MSComm1,EV_RXCHAR);
...全文
128 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Pokeeeer 2015-07-22
  • 打赏
  • 举报
回复
引用 6 楼 Nosoft12345 的回复:
[quote=引用 5 楼 UAVGCS 的回复:] 一楼应该是正解,我之前做串口的时候曾经遇到过这个问题,如果在只是在个别机器上crash,很可能是当前运行环境的问题,我之前问题就出现在误删了某个注册表,重搭个环境之后解决了......只是个人意见,具体问题还得楼主自己调查!
你是怎么重搭的环境?赐教[/quote] 就是重做个系统,重按软件驱动什么的。。。很久之前的事了,念书时候的事,具体真记的不是很清楚了
Nosoft12345 2015-07-22
  • 打赏
  • 举报
回复
引用 5 楼 UAVGCS 的回复:
一楼应该是正解,我之前做串口的时候曾经遇到过这个问题,如果在只是在个别机器上crash,很可能是当前运行环境的问题,我之前问题就出现在误删了某个注册表,重搭个环境之后解决了......只是个人意见,具体问题还得楼主自己调查!
你是怎么重搭的环境?赐教
Pokeeeer 2015-07-22
  • 打赏
  • 举报
回复
一楼应该是正解,我之前做串口的时候曾经遇到过这个问题,如果在只是在个别机器上crash,很可能是当前运行环境的问题,我之前问题就出现在误删了某个注册表,重搭个环境之后解决了......只是个人意见,具体问题还得楼主自己调查!
Nosoft12345 2015-07-22
  • 打赏
  • 举报
回复
引用 2 楼 zhao0210 的回复:
getlasterror()
兄弟,系统直接奔溃了。不能让你getLasterror的
阿源是少年 2015-07-22
  • 打赏
  • 举报
回复
引用 3 楼 Nosoft12345 的回复:
[quote=引用 2 楼 zhao0210 的回复:] getlasterror()
兄弟,系统直接奔溃了。不能让你getLasterror的 [/quote]
么特里亚 2015-07-22
  • 打赏
  • 举报
回复
getlasterror()
worldy 2015-07-22
  • 打赏
  • 举报
回复
应该是USB串口驱动程序有问题,重新安装一下和你的当前操作系统兼容的驱动程序;如果不行并且你确认在别的机器上没问题,那么估计的换一种USB串口
Nosoft12345 2015-07-22
  • 打赏
  • 举报
回复
引用 9 楼 UAVGCS 的回复:
[quote=引用 8 楼 Nosoft12345 的回复:] [quote=引用 7 楼 UAVGCS 的回复:] [quote=引用 6 楼 Nosoft12345 的回复:] [quote=引用 5 楼 UAVGCS 的回复:] 一楼应该是正解,我之前做串口的时候曾经遇到过这个问题,如果在只是在个别机器上crash,很可能是当前运行环境的问题,我之前问题就出现在误删了某个注册表,重搭个环境之后解决了......只是个人意见,具体问题还得楼主自己调查!
你是怎么重搭的环境?赐教[/quote] 就是重做个系统,重按软件驱动什么的。。。很久之前的事了,念书时候的事,具体真记的不是很清楚了[/quote] 除了这个,还有别的办法吗?毕竟让用户做系统,有时用户未必配合。[/quote] 我没有很好的解决方法,我当时的问题只是环境的问题。。。而且我也并不能确定你的问题就是环境的问题,只是可能性比较大,还是先优化代码然后调查一下吧[/quote] 非常感谢你细心的回复。 我这个,个人觉得也是环境或系统的问题,因为在其他的机器上都没有这个问题。 应该不会出现,如果系统环境没问题,程序运行出现的结果还不一样。
Pokeeeer 2015-07-22
  • 打赏
  • 举报
回复
引用 8 楼 Nosoft12345 的回复:
[quote=引用 7 楼 UAVGCS 的回复:] [quote=引用 6 楼 Nosoft12345 的回复:] [quote=引用 5 楼 UAVGCS 的回复:] 一楼应该是正解,我之前做串口的时候曾经遇到过这个问题,如果在只是在个别机器上crash,很可能是当前运行环境的问题,我之前问题就出现在误删了某个注册表,重搭个环境之后解决了......只是个人意见,具体问题还得楼主自己调查!
你是怎么重搭的环境?赐教[/quote] 就是重做个系统,重按软件驱动什么的。。。很久之前的事了,念书时候的事,具体真记的不是很清楚了[/quote] 除了这个,还有别的办法吗?毕竟让用户做系统,有时用户未必配合。[/quote] 我没有很好的解决方法,我当时的问题只是环境的问题。。。而且我也并不能确定你的问题就是环境的问题,只是可能性比较大,还是先优化代码然后调查一下吧
Nosoft12345 2015-07-22
  • 打赏
  • 举报
回复
引用 7 楼 UAVGCS 的回复:
[quote=引用 6 楼 Nosoft12345 的回复:] [quote=引用 5 楼 UAVGCS 的回复:] 一楼应该是正解,我之前做串口的时候曾经遇到过这个问题,如果在只是在个别机器上crash,很可能是当前运行环境的问题,我之前问题就出现在误删了某个注册表,重搭个环境之后解决了......只是个人意见,具体问题还得楼主自己调查!
你是怎么重搭的环境?赐教[/quote] 就是重做个系统,重按软件驱动什么的。。。很久之前的事了,念书时候的事,具体真记的不是很清楚了[/quote] 除了这个,还有别的办法吗?毕竟让用户做系统,有时用户未必配合。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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