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