checker_save.py 根据实际方案来调整保存数据,可以调用lua脚本来判定
添加xt赋码仪检测脚本,还有点问题
This commit is contained in:
@@ -2,21 +2,69 @@
|
||||
import lupa
|
||||
from lupa import LuaRuntime
|
||||
import execjs
|
||||
import json
|
||||
|
||||
|
||||
|
||||
|
||||
def lua_test(lua_file:str,json_file:str,data:bytearray):
|
||||
# 初始化lua运行环境
|
||||
lua = LuaRuntime(unpack_returned_tuples=True)
|
||||
# 初始化全局变量 json
|
||||
save_json=lua.eval("function(a) json=a end")
|
||||
with open("file/json.lua",encoding="utf-8") as f:
|
||||
save_json(lua.execute(f.read()))
|
||||
# 初始化全局变量 prints
|
||||
save_prints=lua.eval("function(a) prints=a end")
|
||||
with open("file/prints.lua",encoding="utf-8") as f:
|
||||
save_prints(lua.execute(f.read()))
|
||||
# 初始化全局变量 cfg_name
|
||||
lua.execute("cfg_name=\""+json_file+"\"\n")
|
||||
# 初始化全局变量 check_data
|
||||
s=data.hex(' ')
|
||||
# print("输入数据",s)
|
||||
s=s.replace(" ",",0x")
|
||||
s="0x"+s
|
||||
lua.execute("check_data={"+s+"}\n")
|
||||
# 执行判定脚本
|
||||
with open(lua_file,encoding="utf-8") as f:
|
||||
a,b=lua.execute(f.read())
|
||||
print(a,b)
|
||||
|
||||
|
||||
|
||||
|
||||
class save:
|
||||
def __init__(self) -> None:
|
||||
pass
|
||||
def __init__(self,scheme:str) -> None:
|
||||
self.scheme=scheme
|
||||
with open(scheme,"rb") as f:
|
||||
self.json_obj=json.loads(f.read())
|
||||
|
||||
# 计算返回参数个数
|
||||
def calc_retnum(self):
|
||||
num=0
|
||||
for i in self.json_obj["TaskArray"]:
|
||||
num=num+i["ReturnCount"]
|
||||
return num
|
||||
# 计算超限错误字节个数
|
||||
def calc_parerrnum(self):
|
||||
return (self.calc_retnum()+7)//8
|
||||
|
||||
# 调用这个函数保存数据
|
||||
def save(self,data:bytearray):
|
||||
d=data[1:]
|
||||
ret_num=self.calc_retnum()*2+8+self.calc_parerrnum()
|
||||
for i in range(20):
|
||||
self.save_item(d[i*28:i*28+28])
|
||||
self.save_item(d[i*ret_num:i*ret_num+ret_num])
|
||||
def save_item(self,d:bytearray):
|
||||
# print("save_item",d.hex(" "))
|
||||
errnum=self.calc_parerrnum()
|
||||
s='=\"'+d[0:8].hex()+'\"'+','
|
||||
s+='=\"'+self.hex2bit(d[8:10])+'\"'+','
|
||||
s+=self.hex2int(d[10:])
|
||||
print(d[8:10].hex(' '))
|
||||
s+='=\"'+self.hex2bit(d[8:8+errnum])+'\"'+','
|
||||
s+=self.hex2int(d[8+errnum:])
|
||||
# print(d[8:8+errnum].hex(' '))
|
||||
print(s)
|
||||
lua_test("file/judge-xt.lua",self.scheme,d)
|
||||
with open("./file/save.csv","+a") as f:
|
||||
f.write(s+'\n')
|
||||
def hex2int(self,d:bytearray):
|
||||
@@ -40,25 +88,6 @@ class save:
|
||||
|
||||
|
||||
|
||||
def lua_test():
|
||||
# 初始化lua运行环境
|
||||
lua = LuaRuntime(unpack_returned_tuples=True)
|
||||
# 初始化全局变量 json
|
||||
save_json=lua.eval("function(a) json=a end")
|
||||
with open("file/json.lua",encoding="utf-8") as f:
|
||||
save_json(lua.execute(f.read()))
|
||||
# 初始化全局变量 prints
|
||||
save_prints=lua.eval("function(a) prints=a end")
|
||||
with open("file/prints.lua",encoding="utf-8") as f:
|
||||
save_prints(lua.execute(f.read()))
|
||||
# 初始化全局变量 cfg_name
|
||||
lua.execute("cfg_name=\"file/checker_ye_cfg.json\"\n")
|
||||
# 初始化全局变量 check_data
|
||||
lua.execute("check_data={0xB5,0x96,0xEC,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x21,0x00,0x12,0x01,0x00,0x00,0x00,0x00,0xB5,0x00,0xB1,0x00,0x6B,0x00,0x00,0x00,0xA5,0x02,0xA4,0x02,0x00,0x00,0xA4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}\n")
|
||||
# 执行判定脚本
|
||||
with open("file/judge.lua",encoding="utf-8") as f:
|
||||
a,b=lua.execute(f.read())
|
||||
print(a,b)
|
||||
|
||||
|
||||
def js_test():
|
||||
@@ -71,7 +100,10 @@ def js_test():
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sa=save()
|
||||
print(sa.hex2bit(bytes([0xab,0xcd])))
|
||||
# lua_test()
|
||||
js_test()
|
||||
# sa=save()
|
||||
# print(sa.hex2bit(bytes([0xab,0xcd])))
|
||||
# js_test()
|
||||
check_data=bytearray([0xB5,0x96,0xEC,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x21,0x00,0x12,0x01,0x00,0x00,0x00,0x00,0xB5,0x00,0xB1,0x00,0x6B,0x00,0x00,0x00,0xA5,0x02,0xA4,0x02,0x00,0x00,0xA4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00])
|
||||
lua_test("file/judge-xt.lua","file/EX_Coder_Test_2023-07-4.json".encode("gbk").decode("utf-8"),check_data)
|
||||
# lua_test("file/judge-xt.lua","file/checker_ye_cfg.json",check_data)
|
||||
|
||||
|
Reference in New Issue
Block a user