更新配置, 修改录波报文解析模式;
添加序列数值帧显示模式; 修复帧搜索索引越界问题;
This commit is contained in:
@@ -236,6 +236,10 @@ def display_data(modbus_map: dict, address: int, data: list):
|
||||
temp = [data[2], data[3], data[0], data[1]]
|
||||
item = struct.unpack('>f', bytes(temp))[0]
|
||||
data_len = 2
|
||||
elif current_map[1] == 7:
|
||||
""" 正序数值表示 """
|
||||
data_len = current_map[2]
|
||||
item = " ".join(map(lambda x: str(x), data[:2 * data_len]))
|
||||
|
||||
if len_max < len(data_label):
|
||||
len_max = len(data_label)
|
||||
@@ -276,7 +280,7 @@ def find_frame_modbus(buffer, address, frame_defines: dict=frame_modbus):
|
||||
else:
|
||||
raise Exception("Unknow Modbus Define type.")
|
||||
|
||||
if calculator.checksum(buffer[i:i+j-2]) == (buffer[i+j-1] * 0x100 + buffer[i+j-2]):
|
||||
if ((i+j) <= len_buffer) and calculator.checksum(buffer[i:i+j-2]) == (buffer[i+j-1] * 0x100 + buffer[i+j-2]):
|
||||
pos_frame, len_frame = i, j
|
||||
break
|
||||
|
||||
@@ -378,9 +382,11 @@ def check_frame_dlt645(frame, block=None):
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
frame_slave = '01 07 02 00 00 A7 00 F0 A1 A4 1F DC 0B 1D 27 08 0F CB A7 49 03 99 09 C6 87 10 FB 08 86 71 9F 2A 2F BB 8F 69 4D 5C 9F 90 51 8A 8B D3 E0 85 9F 2B C1 9A 7E A3 22 9B 29 EE 6B 70 28 D3 31 F6 EF 78 43 8A DF FC F3 8C 13 02 31 F4 65 B5 EE 46 80 F2 E9 D4 E9 C8 F2 84 13 3A DF 50 1D 45 53 52 1D 89 6F F8 CB 7F 56 28 DF A2 11 D4 47 93 04 04 FF AB 35 1F C3 BA D2 F0 65 F2 F6 A3 AC A5 A2 AF AF 3E 88 65 EC 7B 35 62 DA 4A CF A4 69 A5 9E C7 70 E6 DC DD BE 49 DD DA 09 CE 42 18 5C 57 86 12 E0 A0 74 5F 5C F7 35 B3 FE 7C 51 94 5C 57 28 1A 86 1E 9F DE F6 B2 4B A9 29 E6 30 EA F2 BB E6 72 81 E9 80 3A DE FC DC C2 F8 8E 30 F4 66 B3 25 12 30 FA 90 09 3C 8C 1D FD 49 8E 4A 58 1C 17 48 54 CF 6A DE B4 05 7F 3D DD 68 F2 7E C2 CE 01 11 D6 DE 5E 7C 27 10 FE 28 28 3E 06 4D C8 01 07 02 00 00 A7 F4 08'
|
||||
buffer_test = trans_str_to_list("62 01 03 25 1C 00 01 03 3A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 01 F3 00 06 00 12 01 DB 00 19 00 BA 00 00 24 62 00 00 25 1C 00 00 00 0F 00 01 00 07 00 2B 02 4D FD 6C FD 6C 01 20 01 20 73 08 4D FD 6C FD")
|
||||
buffer_test1 = trans_str_to_list("01 03 3A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 01 F4 00 06 00 13 01 DB 00 1A 00 D5 00 00 25 AE 00 00 26 83 00 00 00 0C FF FF 00 56 00 72 02 1D FD 6C FD 6C 01 26 01 26 94 E3")
|
||||
buffer_test2 = trans_str_to_list("01 06 00 60 00 00 89 D4 94 E3")
|
||||
buffer_test3 = trans_str_to_list(frame_slave)
|
||||
modbus_map = {
|
||||
# 1 - Hex
|
||||
# 2 - Int16
|
||||
@@ -480,4 +486,4 @@ if __name__ == "__main__":
|
||||
'addr_dev' : 0x01,
|
||||
'data_define': modbus_map,
|
||||
}
|
||||
check_frame_modbus(bytearray(buffer_test2), block)
|
||||
check_frame_modbus(bytearray(buffer_test3), block)
|
||||
|
||||
Reference in New Issue
Block a user