mscomm控件读COMM报错

在Windows环境下,使用VB进行串口通信时,经常遇到使用MSComm控件读取COM口数据报错的问题。本文将探讨这个问题的常见原因,包括设置不当、硬件冲突以及软件兼容性等,并提供相应的解决方案,帮助开发者解决在手机通讯或终端设备输入输出时遇到的串口通信难题。
串口号设置了吗?

另先通过 Windows 自带的附件中的超级终端试一下看看能否接到数据。

用串口调试助手,是可以接收到数据的。用MSCOMM.PORTOPEN 可以找开端口,mscomm.inbuffercount有读数。但一到 mscomm.input就报error reading comm device

串口搞得头晕,豆三能不能给个串口多机通讯的实例?我搞晕死了,不知道那第九位数怎么发送和接收

VFP总是丢包,我就用了消极的方法:重复读取,超时就失败。VB好象比较灵的

不应该呀,我用过遥控器接收,读卡器等,未发现丢包等不正常现象。

VFP里设置数据位为8位,我要采用方式2通信,第9位数据通过设置校验位实现(标记为1,无为0),这就搞不懂了,是不是每次发送数据前先设置settings?接收的数据又在哪反映?

首先要保证波特率 校验位等与设备要求设置一样。

我当时做遥控器接收时是这样:
设置
.RThreshold=1 &&设置当接收缓冲区中接收到一个字符后,就产生一次OnComm事件。
这样只要缓冲区有字符就会触发OnComm事件,所以我在OnComm事件中做了循环,将Input()从缓冲区读到的字符覆给一个变量或属性,如:Thisform.Comment=Thisform.Comment+Strtran+Thisform.Ole_MsCom.Input()
然后再对这个变量和属性(Thisform.Comment)拆分或判断,因为一个完整的遥控器码是有结束符的,也可以说是固定长度的,这样就把一个个完整的遥控器码分解出来了。

如果送向串口的数据长度不固定或者没有结束符,此方法就不适合了。

我当时设置是当 缓冲区 接收到的字符正好是一个完整的 遥控器码+结束符 长度时产生一次OnComm事件,可是实际当产生OnComm事件,再到 Input() 取缓冲区时,如果这时连续向串口发数据(如 连续按遥控器),用Input() 取得缓冲区的数据就有可能多了字符,造成其中一次或几次按遥控器失效,所以就改为
.RThreshold=1 &&设置当接收缓冲区中接收到一个字符后,就产生一次OnComm事件。
我这是要多机通信用的。

1、所有的终端的SM2位置“1”,可以接收地址。
2、主机先向所有机器广播:请注意!现在发送的是地址码!8位数据+第九位是“1”,表示是地址帧
3、终端地址码相符的(肯定只有一个)将SM2位置“0”,可以继续接收后续数据,其他的仍保持SM2为“1”,对后来的数据不予理睬。
4、终端向主机发送数据,结束后发校验和,并置第9位(TB8)为“1”。
5、主机判断数据是否正确,决定发送复位信号或继续请求数据。
6、主机也可以继续向地址码相符的终端发送数据,8位数据+第九位是“0”,表示是数据帧

现在的问题就是:
1、在第2步和第6步时怎么样发送数据?VFP的第9位数据通过设置校验位实现(标记为1,无为0),波特率和数据位肯定是两边一致的,终端是单片机,上面说错了,是方式3(11位异步接收/发送方式),不是方式2。
2、第4步接收到终端的数据,第9位在哪?是不是也在Input()里面

原理很简单,单片机每隔5秒采集一次数据,并由数码管显示。若收到地址,则执行中断,将采集到的数据发给PC。
PC若能接收到完整数据,则继续发送下一个终端编号采集下一个数据,否则重试5次,若仍不能成功,则本次采集无效。采集行为由定时器按设定时间自动进行。
呵~~~这东西让我硬是糊弄出来了,温湿度自动监测系统。终端用温湿度传感器和单片机,电脑实时监控,超限声光报警,同时发送手机短信。现在还要继续改进,超温自动启动空调。画电路、制作电路板、购元件、焊接组装、设计外壳、终端程序、上位机程序、安装施工,调试校准,全是亲自干的。最痛苦的是:安装完成后,电脑上采集到的全是0!最后给拉了专用电源才解决。现在要解决自动调整的问题,这是不允许的,但我们应用是必须的,因为这东东就是为了应付验收,表演成功即可,不能出现异常,看起来不能异常!呵呵~~~~

来源:nba直播

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值