串口接收数据及时返回问题(电能表测试的上位机应用程序)

本文介绍了作者在开发电能表测试上位机应用程序时遇到的串口接收数据问题及解决方案。使用MSComm控件,通过设置RThreshold属性,当接收到1个字节时触发事件,读取数据帧并解析长度,从而实现及时返回。程序通过数0xFE的个数确定数据帧结构,并在完整接收数据后进行处理。
摘要由CSDN通过智能技术生成

毕业来到电表公司只有半年,初出茅庐,才刚刚接触上位机应用程序,串口接收返回问题一开始就成为了本人程序开发的第一只拦路虎。经过不懈的努力,终于找到解决的方法,在此与同行分享一下鄙人陋见,欢迎大家批评指教!

 

开发条件

1、1G 金丝顿内存,AMD Athlon 64位3500+处理器;

2、Microsoft VC6.0开发平台;

3、232转485电路模块;

4、符合97版645电能表通讯规约的三相复费率电能表(RS485通讯)。

 

目前流行的串口操作方法有两种:文件操作法和MSComm控件法。前者主要利用VC提供的API文件操作函数对串口设备进行操作,后者利用MSComm类对串口设备进行操作。与文件操作法相比,MSComm控件法有着快速可靠处理的事件响应方法,再加上运用简单的优点,本方法选用MSComm法。

 

先简单介绍一下电能表通讯的数据帧。根据97版645电能表通讯规约的规定,电能表的通讯帧由以下部分组成:1字节长度的开始字节(0x68)+6字节长度地址域+1字节长度数据开始字节(0x68)+1字节长度的控制域+1字节长度的数据长度指示字节+指示长度的数据+1字节长度的校验字节+1字节长度的结束字节(0x16)。从以上分析可知,如果得到数据域长度字节,便可得知整个数据帧的长度。

 

程序编写。在设置好串口通讯参数后,并成功打开串口设备。将MSComm控件的RThreshold属性设置为1(SetRTreshold(1)语句),也就是说,只要串口

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值