Pycharm实现645协议解析器(一)

本文介绍了如何在PyCharm中实现DLT645协议解析,包括其帧结构细节,以及如何配置Qt5环境创建用户界面。涵盖了地址解析、控制码、数据帧构建与校验等内容,并展示了如何配置外部工具以集成Qt Designer和PyUIC。

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

Pycharm实现645协议解析器

目前智能电网的645通信协议主要两个版本DLT645-97和DLT645-07,该协议主要用于电表抄表,采用为主-从结构的半双工通讯模式,硬件接口支持RS-485、载波等。

645协议帧结构

DL645协议帧报文和modbus类似,数据帧由,起始符、地址域、控制符、数据域长度、数据域、检验码、结束符组成,每个部分都由十六进制码构成,如下图
在这里插入图片描述1.帧起始符 68H

DLT645协议的数据帧每帧的开始都固定为0x68,作为数据的起始符方便接收方做数据解析。

2.地址域 A0~A5

地址域是用来表示电表地址,低位在前,高位在后;在485总线上可能挂着多个645设备,要找到指定的设备,必须要根据设备的地址查找。每台设备出厂会有自己的地址,也可以修改设备的通信地址。

3.控制码

1个字节,例如读取数据的控制码为0x11(00010001),读取通讯地址的控制码为0x13(00010011)。

4.数据长度L

1个字节,表示数据域的字节数,读取数据时L<= 200;写数据时L <= 50,L=0表示无数据域。

5.数据域

数据域为变长,字节数由数据长度L决定,传输时候。发送方需要加0x33,接收方需要减去0x33。

  1. CS校验码

1个字节,采用算术和进行校验。

7.结束符16H

DLT645的指令帧均已0x16作为结束符。

在发送帧信息之前,需要根据设备需要先发送前导码,前导码由0-4个FEH组成,所有数据项都是按照低字节在前,高字节在后的方式传输。

Pycharm配置基于Qt5的图形开发环境

用户首先要安装了Python以及PyQt5,如何安装,这边不做赘述,网上大把的案例可以参考,只是要记住安装目录在哪,下面将会用到该目录。安装好pyqt5 和pyuic的,然后再setting下的tools下配置external tools,如下图
在这里插入图片描述qt-designer的配置如下:

在这里插入图片描述Name :可以随便取,但从使用角度看,最后和目的相关,这叫Qt-Designer。

Program:
就是designer的路径。designer的路径就在python安装路径下,根据自己的安装路径进行配置即可

PYuic配置如下:

在这里插入图片描述PyUIC可以将.ui文件转换为.py文件,供py文件调用,配置方法如下图:

Name:自定,此处取PyUIC。

Program:
即pyuic5的文件路径,一般在在python安装目录的Scripts里面

Arguments
转换参数,此为关键,输入以下参数,表示指定输入输出文件的意思:

-o F i l e N a m e W i t h o u t E x t e n s i o n FileNameWithoutExtension FileNameWithoutExtension.py F i l e N a m e FileName FileName

说明输出为和ui文件同名的.py文件。

Working directory
即工作目录,将转换完的文件存在哪里,这边选和ui文件一样的目录就行:

F i l e D i r FileDir FileDir

至此,全部配置完毕。

下一节我们开始做界面,正式开始645协议解析器的功能实现。

DLT645协议解析器及modbus CRC和DLT 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
PyCharm实现大麦网抢票,通常需要结合Web Scraping技术和自动化工具,例如Selenium WebDriver。以下是个简化的步骤指南: 1. 安装必要的库: - PyCharm: 首先确保你已经在PyCharm上安装了Python环境,然后安装`selenium`、`webdriver_manager`(用于管理浏览器驱动)等库,可以使用`pip install selenium webdriver_manager`命令。 2. 下载并配置浏览器驱动: - Selenium需要对应浏览器的WebDriver才能操作浏览器。访问大麦网的官网,确认支持的浏览器版本,然后从这里下载对应版本的ChromeDriver或FirefoxDriver:https://sites.google.com/a/chromium.org/chromedriver/downloads 3. 编写脚本: - 使用Python编写个脚本,首先导入`selenium`和`webdriver_manager`: ```python from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager ``` - 创建浏览器实例并加载网站: ```python driver = webdriver.Chrome(ChromeDriverManager().install()) driver.get("http://damao.maoyan.com/") ``` 4. 自动化登录和找到抢票按钮: - 找到登录表单和密码输入框,填写账号密码并登录。如果页面有登录API,则可以直接模拟POST请求。 - 旦登录成功,定位到抢票页面上的抢票按钮元素,这可能需要解析HTML文档找到对应的CSS选择器或者XPath表达式。 5. 抢票动作: - 点击按钮,这通常是通过`.click()`方法实现: ```python ticket_button = driver.find_element_by_css_selector("#ticket-button") # 根据实际按钮选择器替换 ticket_button.click() ``` 6. 检查状态和处理异常: - 抢票过程可能会有网络延迟或其他不可预测的情况,添加适当的等待时间(如time.sleep())和错误处理代码。 7. 结束程序: - 等待定时间后检查抢票结果,如果成功则关闭浏览器,否则记录失败情况。 ```python driver.quit() ``` 注意:由于大麦网可能有反爬虫机制和严格的使用条款,直接抓取数据和自动化购票的行为可能违反服务协议,所以在实际操作前,请务必了解相关规定,并确保你的行为合法合规。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

cyjbj

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

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

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

打赏作者

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

抵扣说明:

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

余额充值