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)。
初始化电表客户端服务。
- 参数:
client (Union[TcpClient, RtuClient]) -- 通信客户端实例(TcpClient 或 RtuClient)。
-
classmethod new_tcp_client(ip, port, timeout=30.0)[源代码]
创建TCP客户端
- 返回类型:
Optional[MeterClientService]
-
classmethod new_rtu_client(port, baudrate, databits, stopbits, parity, timeout)[源代码]
创建RTU客户端
- 返回类型:
Optional[MeterClientService]
-
classmethod new_meter_client_service(client)[源代码]
创建新的MeterService实例
- 返回类型:
Optional[MeterClientService]
-
get_time(t)[源代码]
从字节数据获取时间
- 返回类型:
datetime
-
set_address(address)[源代码]
设置设备地址
- 返回类型:
bool
-
set_password(password)[源代码]
设置设备密码, 修改数据的命令会带上密码发送出去
- 返回类型:
bool
-
change_password(old_password, new_password)[源代码]
修改设备密码
- 返回类型:
bool
-
read_00(di)[源代码]
读取电能
- 返回类型:
Optional[DataItem]
-
read_01(di)[源代码]
读取最大需量及发生时间
- 返回类型:
Optional[DataItem]
-
read_02(di)[源代码]
读取变量
- 返回类型:
Optional[DataItem]
-
read_03(di)[源代码]
读取事件记录
- 返回类型:
Optional[DataItem]
-
read_04(di)[源代码]
读取参变量
- 返回类型:
Optional[DataItem]
-
write_04(di, value, password)[源代码]
写参变量
- 返回类型:
Optional[DataItem]
-
read_address()[源代码]
读取通讯地址
- 返回类型:
Optional[DataItem]
-
write_address(new_address)[源代码]
写通讯地址
- 返回类型:
Optional[DataItem]
-
send_and_handle_request(frame_bytes)[源代码]
发送请求并处理响应(带超时控制)
- 返回类型:
Optional[DataItem]
- Args:
frame_bytes: 要发送的帧数据
- Returns:
DataItem: 成功时返回数据项
None: 超时或失败时返回
-
handle_response(frame)[源代码]
处理响应帧,包括异常帧检测
- 返回类型:
Optional[DataItem]
-
enable_message_capture(queue_size=100)[源代码]
启用报文捕获功能。
- 参数:
queue_size (int) -- 报文队列大小,默认100
- 返回类型:
None
-
disable_message_capture()[源代码]
禁用报文捕获功能。
- 返回类型:
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]
-
clear_captured_messages()[源代码]
清空所有捕获的报文。
- 返回类型:
None
-
get_message_capture_stats()[源代码]
获取报文捕获统计信息。
- 返回:
统计信息字典
- 返回类型:
dict