mirror of
https://gitee.com/js-yhsec/energy_storage.git
synced 2026-05-28 03:09:24 +08:00
78 lines
2.6 KiB
Python
78 lines
2.6 KiB
Python
|
|
import re
|
||
|
|
import json
|
||
|
|
|
||
|
|
def parse_datatype(text):
|
||
|
|
datatypes = ["int16", "uint16", "int32", "uint32", "int64", "uint64"]
|
||
|
|
for index, datatype in enumerate(datatypes):
|
||
|
|
left, separator, right = text.partition(datatype)
|
||
|
|
if len(separator) != 0:
|
||
|
|
return datatype, left + right
|
||
|
|
return "", text
|
||
|
|
|
||
|
|
|
||
|
|
def parse_from_file(filename):
|
||
|
|
data = ""
|
||
|
|
with open(filename, "r", encoding='utf-8') as f: # 打开文件
|
||
|
|
linedata = ""
|
||
|
|
for line in f: # 行遍历
|
||
|
|
line = line.strip()
|
||
|
|
#linedata = f.readline() # 读取文件的一行
|
||
|
|
flag = bool(re.search(r'0x[0-9A-Fa-f]{4}', line))
|
||
|
|
linedata += line.strip()
|
||
|
|
if flag:
|
||
|
|
# print(linedata)
|
||
|
|
# left, separator, right = linedata.partition("0x")
|
||
|
|
parts = re.split(r'(0x[0-9A-Fa-f]{4})', linedata)
|
||
|
|
linedata = ""
|
||
|
|
|
||
|
|
key = parts[1]
|
||
|
|
datatype, remark = parse_datatype(parts[0].strip())
|
||
|
|
remark = remark.replace("\t", " ").replace("\"", "")
|
||
|
|
|
||
|
|
item = {}
|
||
|
|
item["key"] = key
|
||
|
|
item["datatype"] = datatype
|
||
|
|
item["remark"] = remark
|
||
|
|
|
||
|
|
if len(data) > 0:
|
||
|
|
data += ",\n"
|
||
|
|
data += ("\t\t\t" + json.dumps(item, ensure_ascii=False))
|
||
|
|
return data
|
||
|
|
|
||
|
|
|
||
|
|
addritems = {}
|
||
|
|
addritems["EMS_YT"] = ["EMS遥调.txt", 1]
|
||
|
|
addritems["BCU_YX"] = ["BCU电池簇遥信.txt", 1]
|
||
|
|
addritems["BCU_YC"] = ["BCU电池簇遥测.txt", 1]
|
||
|
|
addritems["BMS_YC"] = ["BMS电池堆遥测.txt", 1]
|
||
|
|
addritems["EMS_YX"] = ["EMS遥信.txt", 1]
|
||
|
|
addritems["EMS_YC"] = ["EMS遥测.txt", 1]
|
||
|
|
addritems["EMS_YT"] = ["EMS遥调.txt", 1]
|
||
|
|
addritems["PCS_YX"] = ["PCS遥信.txt", 1]
|
||
|
|
addritems["PCS_YC"] = ["PCS遥测.txt", 1]
|
||
|
|
addritems["PCU_YX"] = ["PCU遥信.txt", 1]
|
||
|
|
addritems["PCU_YC"] = ["PCU遥测.txt", 1]
|
||
|
|
addritems["MEM_YC"] = ["多功能电表遥测.txt", 1]
|
||
|
|
addritems["TH_YC"] = ["温湿度状态遥测.txt", 1]
|
||
|
|
addritems["Fire40_YX"] = ["消防4.0遥信.txt", 1]
|
||
|
|
addritems["Cooling_YX"] = ["冷机遥信.txt", 1]
|
||
|
|
addritems["Cooling_YC"] = ["冷机遥测.txt", 1]
|
||
|
|
|
||
|
|
|
||
|
|
with open('registeraddr.json', 'w', encoding='utf-8') as f:
|
||
|
|
f.write("{")
|
||
|
|
index = 0
|
||
|
|
for key in addritems:
|
||
|
|
filename = addritems[key][0]
|
||
|
|
count = addritems[key][1]
|
||
|
|
print("parse: ", key, filename)
|
||
|
|
data = parse_from_file(filename)
|
||
|
|
if len(data) > 0:
|
||
|
|
data = "\n" + data + "\n\t"
|
||
|
|
if index != 0:
|
||
|
|
f.write(",")
|
||
|
|
f.write("\n\t\"" + key + "\": {\n\t\t\"count\":" + str(count) + ",\n\t\t\"addr\":[" + data + "\t]\n\t}")
|
||
|
|
index+=1
|
||
|
|
f.write("\n}")
|
||
|
|
|