Pycharm实现645协议解析器(七)数据的接收和解析

本文介绍了如何在PyCharm中实现645协议的解析器,包括数据包的接收和解析。通过RS485通信,主机接收来自从机的响应数据,并使用Python的serial包读取。解析过程涉及帧头识别、地址信息、帧控制符、帧长度、帧负载、校验符和帧校验的检查,确保数据帧的完整性和正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Pycharm实现645协议解析器(七)数据的接收和解析

数据包接收

RS485属于半双工总线,在实际使用时一般采用主机轮询或令牌传递的方法来分配总线控制权,在主从通信交互过程中,RS485设备需要进行发送和接收的方向转换。比较通用的做法是,每个RS485设备在平时均处于接收状态,只有在自己有数据要发送时才转换到发送状态,数据发送完毕后再次切换回接收状态。在本项目中,软件运行电脑作为主机端,电表等终端设备作为从机端,主机发送数据后,切换485总线为接收模式,对应的终端从机,发送响应报文数据到主机,有python的serial包接收,实现过程如下:
try:
num = self.ser.inWaiting() #获取接收缓冲区数据大小
except: #异常处理
self.port_close()
QMessageBox.critical(self, ‘wrong data’, ‘接收错,端口异常关闭!’)
return None
if num > 0:
Rx_Frame_Data = self.ser.read(num) #读取数据信息
Rx_Num = len(Rx_Frame_Data ) #

数据接收完毕后,由后续数据包解析程序进行校验和解析

数据包解析

由于多机通讯的存在,必然会有线路的竞争,另外,线路干扰或硬件失误也难免存在,所以,在接收到的数据帧中,是否是完整、正确的645协议包数据,需要在接收数据解析中加以识别&

DLT645协议解析器及modbus CRCDLT CS校验码计算,支持两种输入格式,带空格不带空格。默认需要安装微软VS2012发布包。 比如输入FE FE FE FE 68 AA AA AA AA AA AA 68 13 00 DF 16,解析出结果如下: [11-05 08:39:58:676] 输入数据: FE FE FE FE 68 AA AA AA AA AA AA 68 13 00 DF 16 [11-05 08:39:58:681] 类型=上1结算日C相反向有功电能 [11-05 08:39:58:685] 类型值=76 [11-05 08:39:58:689] 获取结果= 0.00 另外可按键获取如下CRC [11-05 08:39:58:697] *********************************************** [11-05 08:40:08:268] 输入数据:FE FE FE FE 68 AA AA AA AA AA AA 68 13 00 DF 16 [11-05 08:40:08:276] DLT645 CRC=0xCC [11-05 08:40:08:283] *********************************************** [11-05 08:40:10:813] 输入数据:FE FE FE FE 68 AA AA AA AA AA AA 68 13 00 DF 16 [11-05 08:40:10:821] CRC(Modbus)=0x6FE5 [HIGH LOW]=[6F E5] [11-05 09:05:30:239] 输入数据: 68 30 65 00 00 00 00 68 11 04 33 33 33 33 46 16 [11-05 09:05:30:247] 类型=当前组合有功总电能 [11-05 09:05:30:254] 类型值=1 [11-05 09:05:30:264] 获取结果= 0.00 [11-05 09:06:25:098] 输入数据: 68 29 65 00 00 00 00 68 91 08 35 36 36 33 C9 CC 36 33 C9 16 [11-05 09:06:25:112] 类型=上2结算日组合无功1费率3电能 [11-05 09:06:25:127] 类型值=11 [11-05 09:06:25:142] 获取结果=399.96 [11-05 09:33:10:453] 输入数据: FE FE FE FE 68 29 65 00 00 00 00 68 11 04 35 35 34 33 44 16 [11-05 09:33:10:460] 类型=上2结算日正向有功费率2电能 [11-05 09:33:10:467] 类型值=5 [11-05 09:33:10:476] 获取结果= 0.00 [11-05 09:33:10:484] *********************************************** [11-05 09:33:32:065] 输入数据: FEFEFEFE68296500000000681104353534334416 [11-05 09:33:32:074] 类型=上2结算日正向有功费率2电能 [11-05 09:33:32:086] 类型值=5 [11-05 09:33:32:097] 获取结果= 0.00
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cyjbj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值