src.service.clientsvc package
Submodules
src.service.clientsvc.client_service module
DLT645 客户端服务模块。
本模块实现了 DLT645 协议的客户端业务服务功能,包括: - 电能数据读取 - 需量数据读取 - 变量数据读取 - 事件记录读取 - 参变量读写 - 通讯地址读写 - 密码管理
- class src.service.clientsvc.client_service.MeterClientService(client)[源代码]
基类:
object电表客户端服务类。
用于与 DLT645 电表设备进行通信,提供数据读写等业务功能。
- 变量:
address -- 设备地址(6字节)。
password_manager -- 密码管理器。
operation_code -- 操作码(4字节)。
client -- 通信客户端(TCP 或 RTU)。
初始化电表客户端服务。
- classmethod new_rtu_client(port, baudrate, databits, stopbits, parity, timeout)[源代码]
创建RTU客户端
- 返回类型:
- broadcast_time_sync(dt=None)[源代码]
广播校时命令(C=08H,数据域YYMMDDhhmmss)。
按 DL/T645-2007 第6节:广播校时使用广播地址 999999999999H, 数据域为 6 字节压缩 BCD 码(YY MM DD hh mm ss,自然顺序), 从站不要求应答,因此只发送不等待响应。
- 参数:
dt (Optional[datetime]) -- 校时时间,默认当前时间。
- 返回:
发送成功返回 True,失败返回 False。
- 返回类型:
- freeze(month=None, day=None, hour=None, minute=None, broadcast=False)[源代码]
冻结命令(C=16H,数据域MMDDhhmm)。
按 DL/T645-2007 第7节:数据域为 4 字节压缩 BCD 码(MM DD hh mm), 各字段缺省时取当前时间;可传 99 表示周期定时冻结: - 99DDhhmm:以月为周期定时冻结 - 9999hhmm:以日为周期定时冻结 - 999999mm:以小时为周期定时冻结 - 99999999:瞬时冻结
- change_baud_rate(baud)[源代码]
更改通信速率命令(C=17H,数据域1字节通信速率特征字)。
按 DL/T645-2007 第8节:数据域为 1 字节特征字(见附录C), 从站正常应答帧中的数据与请求帧中的特征字必须相同。 标准速率:1200/2400/4800/9600/19200 bps。
- clear_demand(di, password)[源代码]
最大需量清零命令(C=19H,数据域DI+密码)。
按 DL/T645-2007 第10节:数据域为 4 字节数据标识 + 4 字节密码, 将当前最大需量及发生时间数据清零。需 04 级及以上权限。
- clear_meter(password)[源代码]
电表清零命令(C=1AH,数据域DI+密码)。
按 DL/T645-2007 第11节:数据域为 4 字节数据标识(00000000H) + 4 字节密码,清空电能量、最大需量及发生时间、冻结量、 事件记录、负荷记录等数据(电表清零事件记录不被清除)。
- clear_event(password, operator_code='00000000', di=4294967295)[源代码]
事件清零命令(C=1BH,数据域密码+操作者代码+数据标识)。
按 DL/T645-2007 第12节:数据域为 4 字节密码 + 4 字节操作者代码 + 4 字节数据标识。数据标识为 FFFFFFFFH 表示事件总清零; 分项事件清零时数据标识为事件记录数据标识(DI0 用 FF 表示)。
- send_and_handle_request(frame_bytes)[源代码]
发送请求并处理响应(带超时控制)
- Args:
frame_bytes: 要发送的帧数据
- Returns:
DataItem: 成功时返回数据项 None: 超时或失败时返回
- get_captured_messages(count=0)[源代码]
获取捕获的报文列表。
- 参数:
count (int) -- 要获取的数量,0表示全部
- 返回:
报文列表
- 返回类型:
List[MessageRecord]
- get_captured_tx_messages(count=0)[源代码]
获取捕获的发送报文列表。
- 参数:
count (int) -- 要获取的数量,0表示全部
- 返回:
发送报文列表
- 返回类型:
List[MessageRecord]
- get_captured_rx_messages(count=0)[源代码]
获取捕获的接收报文列表。
- 参数:
count (int) -- 要获取的数量,0表示全部
- 返回:
接收报文列表
- 返回类型:
List[MessageRecord]
- get_captured_pairs(count=0)[源代码]
获取捕获的TX/RX配对列表。
- 参数:
count (int) -- 要获取的数量,0表示全部
- 返回:
配对列表
- 返回类型:
List[MessagePair]