赋码仪错误判断
This commit is contained in:
@@ -3,6 +3,8 @@ import lupa
|
||||
from lupa import LuaRuntime
|
||||
import execjs
|
||||
import json
|
||||
import datetime
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
|
||||
|
||||
@@ -18,8 +20,16 @@ def lua_test(lua_file:str,json_file:str,data:bytearray):
|
||||
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")
|
||||
# lua.execute("cfg_name=\""+json_file+"\"\n")
|
||||
|
||||
# 初始化配置字符串
|
||||
save_cfg_str=lua.eval("function(a) check_cfg_str=a end")
|
||||
with open(json_file,encoding="utf-8") as f:
|
||||
a=f.read()
|
||||
save_cfg_str(a)
|
||||
|
||||
# 初始化全局变量 check_data
|
||||
s=data.hex(' ')
|
||||
# print("输入数据",s)
|
||||
@@ -28,15 +38,20 @@ def lua_test(lua_file:str,json_file:str,data:bytearray):
|
||||
lua.execute("check_data={"+s+"}\n")
|
||||
# 执行判定脚本
|
||||
with open(lua_file,encoding="utf-8") as f:
|
||||
a,b=lua.execute(f.read())
|
||||
print(a,b)
|
||||
lua.execute(f.read())
|
||||
a,b=lua.globals().main()
|
||||
return a,b
|
||||
return "脚本执行失败",0xd1
|
||||
|
||||
|
||||
|
||||
|
||||
class save:
|
||||
def __init__(self,scheme:str) -> None:
|
||||
def __init__(self,scheme:str,script:str) -> None:
|
||||
self.scheme=scheme
|
||||
self.script=script
|
||||
self.save_file=scheme.split(".")[0]+".csv"
|
||||
print("save file:",self.save_file)
|
||||
with open(scheme,"rb") as f:
|
||||
self.json_obj=json.loads(f.read())
|
||||
|
||||
@@ -54,24 +69,34 @@ class save:
|
||||
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*ret_num:i*ret_num+ret_num])
|
||||
def save_item(self,d:bytearray):
|
||||
slave_num=len(d)//ret_num
|
||||
for i in range(slave_num):
|
||||
print("slave:",i+1)
|
||||
self.save_item(i+1,d[i*ret_num:i*ret_num+ret_num])
|
||||
|
||||
# 保存一个条目
|
||||
def save_item(self,slave_addr:int,d:bytearray):
|
||||
# print("save_item",d.hex(" "))
|
||||
errnum=self.calc_parerrnum()
|
||||
s='=\"'+d[0:8].hex()+'\"'+','
|
||||
s=str(slave_addr)+','
|
||||
s+='=\"'+d[0:8].hex()+'\"'+','
|
||||
s+='=\"'+self.hex2bit(d[8:8+errnum])+'\"'+','
|
||||
s+=self.hex2int(d[8+errnum:])
|
||||
# print(d[8:8+errnum].hex(' '))
|
||||
a,b=lua_test(self.script,self.scheme,d)
|
||||
s=s+a+','+str(b)
|
||||
print(s)
|
||||
lua_test("file/judge-xt.lua",self.scheme,d)
|
||||
with open("./file/save.csv","+a") as f:
|
||||
with open(self.save_file,"+a") as f:
|
||||
f.write(s+'\n')
|
||||
|
||||
# 把两个字节拼为一个int
|
||||
def hex2int(self,d:bytearray):
|
||||
s=""
|
||||
for i in range(len(d)//2):
|
||||
s+=str(d[i*2]|(d[i*2+1]<<8))+','
|
||||
return s
|
||||
|
||||
# 把数据转换为二进制字符串
|
||||
def hex2bit(self,d:bytearray):
|
||||
s=""
|
||||
for i in range(len(d)*8):
|
||||
|
Reference in New Issue
Block a user