src.service.serversvc package

Submodules

src.service.serversvc.log module

src.service.serversvc.server_service module

DLT645 服务端服务模块。

本模块实现了 DLT645 协议的服务端业务服务功能,包括: - 处理客户端数据读取请求 - 处理客户端数据写入请求 - 通讯地址管理 - 密码验证和管理

class src.service.serversvc.server_service.MeterServerService(server, address=bytearray(b'\\x00\\x00\\x00\\x00\\x00\\x00'), password_manager=<src.model.types.dlt645_type.PasswordManager object>)[源代码]

基类:object

电表服务端服务类。

用于模拟 DLT645 电表设备,响应客户端的数据读写请求。

变量:
  • server -- 通信服务器(TCP 或 RTU)。

  • address -- 设备地址(6字节)。

  • password_manager -- 密码管理器。

  • clear_meter_event_records -- 电表清零事件记录列表。

  • event_records -- 事件记录列表。

初始化电表服务端服务。

参数:
  • server (Union[TcpServer, RtuServer]) -- 通信服务器实例(TcpServer 或 RtuServer)。

  • address (Optional[bytearray]) -- 设备地址,默认为全零。

  • password_manager (Optional[PasswordManager]) -- 密码管理器,默认创建新实例。

classmethod new_tcp_server(ip, port, timeout=5.0)[源代码]

创建 TCP 服务器

参数:
  • ip (str) -- IP 地址

  • port (int) -- 端口

  • timeout (float) -- 超时时间

返回类型:

MeterServerService

返回:

classmethod new_rtu_server(port, data_bits, stop_bits, baud_rate, parity, timeout)[源代码]

创建 RTU 服务器

参数:
  • port (str) -- 端口

  • data_bits (int) -- 数据位

  • stop_bits (int) -- 停止位

  • baud_rate (int) -- 波特率

  • parity (str) -- 校验位

  • timeout (float) -- 超时时间

返回类型:

MeterServerService

返回:

classmethod new_meter_server_service(server)[源代码]

创建新的MeterServerService实例

参数:

server (Union[TcpServer, RtuServer]) -- 服务器实例(TCP或RTU)

返回类型:

MeterServerService

返回:

MeterServerService实例

set_time(data_bytes)[源代码]
set_address(address)[源代码]

写通讯地址

参数:

address (str)

返回:

set_password(password)[源代码]

写密码

参数:

password (str)

返回类型:

None

返回:

set_00(di, value)[源代码]

写电能量

参数:
  • di (int) -- 数据项

  • value (float) -- 值

返回类型:

bool

返回:

set_01(di, demand)[源代码]

写最大需量及发生时间

参数:
  • di (int) -- 数据项

  • demand (Demand) -- 值

返回类型:

bool

返回:

set_02(di, value)[源代码]

写变量

参数:
  • di (int) -- 数据项

  • value (float) -- 值

返回类型:

bool

返回:

set_03(di, value)[源代码]

写事件记录

参数:
返回类型:

bool

返回:

set_04(di, value)[源代码]

写参变量

参数:
返回类型:

bool

返回:

get_data_item(di)[源代码]

获取数据项

参数:

di (int) -- 数据项

返回类型:

Optional[DataItem]

返回:

handle_request(frame)[源代码]

处理读数据请求

参数:

frame

返回:

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

Module contents