src.protocol package

Submodules

src.protocol.frame module

DLT645 协议帧结构模块。

本模块定义了 DLT645 协议帧的数据结构和相关常量。

src.protocol.frame.FRAME_START_BYTE = 104

帧起始字节

src.protocol.frame.FRAME_END_BYTE = 22

帧结束字节

src.protocol.frame.BROADCAST_ADDR = 170

广播地址

class src.protocol.frame.Frame(preamble=None, start_flag=0, addr=None, ctrl_code=0, data_len=0, data=None, check_sum=0, end_flag=0)[源代码]

基类:object

DLT645 协议帧结构类。

表示一个完整的 DLT645 协议数据帧。

帧格式:

前导码(FE) | 起始符(68H) | 地址域(6B) | 起始符(68H) | 控制码(1B) |
数据长度(1B) | 数据域(NB) | 校验和(1B) | 结束符(16H)
变量:
  • preamble -- 前导字节(通常为 0xFE 0xFE 0xFE 0xFE)。

  • start_flag -- 起始标志(0x68)。

  • addr -- 地址域(6字节)。

  • ctrl_code -- 控制码。

  • data_len -- 数据域长度。

  • data -- 数据域内容(已解码)。

  • check_sum -- 校验和。

  • end_flag -- 结束标志(0x16)。

初始化 Frame 实例。

参数:
  • preamble (bytearray) -- 前导字节,默认为空。

  • start_flag (int) -- 起始标志,默认为 0。

  • addr (bytearray) -- 地址域,默认为空(将初始化为6个0)。

  • ctrl_code (int) -- 控制码,默认为 0。

  • data_len (int) -- 数据域长度,默认为 0。

  • data (bytearray) -- 数据域内容,默认为空。

  • check_sum (int) -- 校验和,默认为 0。

  • end_flag (int) -- 结束标志,默认为 0。

property description: str

获取帧的描述信息。

解析控制码和数据标识,返回易读的操作描述。

返回:

描述字符串。

返回类型:

str

src.protocol.log module

src.protocol.protocol module

DL/T 645-2007 数据帧编码、校验与流式解析。

class src.protocol.protocol.DLT645Protocol[源代码]

基类:object

无状态的 DL/T 645 帧编解码器。

MAX_DATA_LENGTH = 255
MAX_PREAMBLE_LENGTH = 4
MIN_FRAME_LENGTH = 12
classmethod decode_data(data)[源代码]

移除数据域逐字节增加的 0x33 偏移。

返回类型:

bytes

classmethod encode_data(data)[源代码]

按协议为数据域逐字节增加 0x33 偏移。

返回类型:

bytes

classmethod calculate_checksum(data)[源代码]

计算从第一个 0x68 到数据域末尾的模 256 累加和。

返回类型:

int

classmethod build_frame(addr, ctrl_code, data, preamble_count=4)[源代码]

从解码后的地址、控制码和数据域构建完整帧。

返回类型:

bytearray

classmethod deserialize(raw)[源代码]

解析第一帧;数据不完整或没有合法帧时抛出 ValueError

返回类型:

Optional[Frame]

classmethod deserialize_with_remaining(raw)[源代码]

从字节流中解析一帧,并返回帧后的剩余数据。

无效噪声和损坏帧会被丢弃;不完整帧会从首个有效候选 0x68 起保留,供下一批数据继续拼接。

返回类型:

tuple[bytes, Optional[Frame]]

classmethod serialize(frame)[源代码]

序列化帧;前导 0xFE 不参与校验和计算。

返回类型:

bytes

Module contents