Merge branch 'main' of https://124.70.178.159/andy/checker_gen1
This commit is contained in:
@@ -120,7 +120,7 @@
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>DLGUARM</Key>
|
||||
<Name>d</Name>
|
||||
<Name>4</Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
@@ -153,12 +153,36 @@
|
||||
<Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024 -FS08000000 -FL0100000 -FP0($$Device:STM32F407VGTx$CMSIS\Flash\STM32F4xx_1024.FLM))</Name>
|
||||
</SetRegEntry>
|
||||
</TargetDriverDllRegistry>
|
||||
<Breakpoint/>
|
||||
<Breakpoint>
|
||||
<Bp>
|
||||
<Number>0</Number>
|
||||
<Type>0</Type>
|
||||
<LineNumber>99</LineNumber>
|
||||
<EnabledFlag>1</EnabledFlag>
|
||||
<Address>134399730</Address>
|
||||
<ByteObject>0</ByteObject>
|
||||
<HtxType>0</HtxType>
|
||||
<ManyObjects>0</ManyObjects>
|
||||
<SizeOfObject>0</SizeOfObject>
|
||||
<BreakByAccess>0</BreakByAccess>
|
||||
<BreakIfRCount>1</BreakIfRCount>
|
||||
<Filename>.\source\rt_thread\board.c</Filename>
|
||||
<ExecCommand></ExecCommand>
|
||||
<Expression>\\checker_gen1_app\source/rt_thread/board.c\99</Expression>
|
||||
</Bp>
|
||||
</Breakpoint>
|
||||
<WatchWindow1>
|
||||
<Ww>
|
||||
<count>0</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>g_tempptr</ItemText>
|
||||
</Ww>
|
||||
</WatchWindow1>
|
||||
<MemoryWindow1>
|
||||
<Mm>
|
||||
<WinNumber>1</WinNumber>
|
||||
<SubType>0</SubType>
|
||||
<ItemText>errbit</ItemText>
|
||||
<SubType>8</SubType>
|
||||
<ItemText>file</ItemText>
|
||||
<AccSizeX>0</AccSizeX>
|
||||
</Mm>
|
||||
</MemoryWindow1>
|
||||
@@ -370,7 +394,24 @@
|
||||
<Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024 -FS08000000 -FL0100000 -FP0($$Device:STM32F407VGTx$CMSIS\Flash\STM32F4xx_1024.FLM))</Name>
|
||||
</SetRegEntry>
|
||||
</TargetDriverDllRegistry>
|
||||
<Breakpoint/>
|
||||
<Breakpoint>
|
||||
<Bp>
|
||||
<Number>0</Number>
|
||||
<Type>0</Type>
|
||||
<LineNumber>99</LineNumber>
|
||||
<EnabledFlag>1</EnabledFlag>
|
||||
<Address>0</Address>
|
||||
<ByteObject>0</ByteObject>
|
||||
<HtxType>0</HtxType>
|
||||
<ManyObjects>0</ManyObjects>
|
||||
<SizeOfObject>0</SizeOfObject>
|
||||
<BreakByAccess>0</BreakByAccess>
|
||||
<BreakIfRCount>0</BreakIfRCount>
|
||||
<Filename>.\source\rt_thread\board.c</Filename>
|
||||
<ExecCommand></ExecCommand>
|
||||
<Expression></Expression>
|
||||
</Bp>
|
||||
</Breakpoint>
|
||||
<WatchWindow1>
|
||||
<Ww>
|
||||
<count>0</count>
|
||||
@@ -1428,7 +1469,7 @@
|
||||
|
||||
<Group>
|
||||
<GroupName>lwip</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
|
@@ -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)
|
||||
|
||||
|
@@ -144,13 +144,14 @@ class port:
|
||||
def send(self,cmd:int,data:bytearray):
|
||||
self.cmd=cmd
|
||||
self.cmd_no+=1
|
||||
# print("send:",data.hex(","))
|
||||
self.ser.write(self.encode(data))
|
||||
d=self.encode(data)
|
||||
# print("send:",d.hex(","))
|
||||
self.ser.write(d)
|
||||
# 测试批检仪
|
||||
def checker_test(self,times:int):
|
||||
def checker_test(self,times:int,scheme:str):
|
||||
print("批检仪测试:")
|
||||
tick=0
|
||||
save=checker_save.save()
|
||||
save=checker_save.save(scheme)
|
||||
data=bytearray()
|
||||
while(tick<times):
|
||||
tick+=1
|
||||
@@ -173,5 +174,6 @@ class port:
|
||||
if __name__ == "__main__":
|
||||
p=port()
|
||||
# 批检仪测试
|
||||
p.open("com5",115200)
|
||||
p.checker_test(5)
|
||||
# p.open("com5",115200)
|
||||
p.open("utcp",115200)
|
||||
p.checker_test(5,"file/EX_Coder_Test_2023-07-4.json")
|
||||
|
407
python/file/EX_Coder_Test_2023-07-4.json
Normal file
407
python/file/EX_Coder_Test_2023-07-4.json
Normal file
@@ -0,0 +1,407 @@
|
||||
{
|
||||
"PlanID": 48500867,
|
||||
"PlanBrief": "模拟工厂注码",
|
||||
"CheckSoftVersion": [
|
||||
1
|
||||
],
|
||||
"CheckHardVersion": [
|
||||
1
|
||||
],
|
||||
"TimeOutS": 4,
|
||||
"TimeOutM": 10,
|
||||
"TimeOutUI": 12,
|
||||
"TaskIDMax": 26,
|
||||
"TaskArray": [
|
||||
{
|
||||
"TaskID": 0,
|
||||
"TaskBrief": "电源准备",
|
||||
"TaskIndex": 0,
|
||||
"ParamCount": 1,
|
||||
"ParamInfo": [
|
||||
"预设电压1"
|
||||
],
|
||||
"ParamVal": [
|
||||
88
|
||||
],
|
||||
"TestStandard": [],
|
||||
"ReturnCount": 0,
|
||||
"ReturnInfo": [],
|
||||
"ErrJumpTo": 255,
|
||||
"ExecuteErrCode": 254,
|
||||
"ResultErrCode": [],
|
||||
"RetryCount": 0
|
||||
},
|
||||
{
|
||||
"TaskID": 1,
|
||||
"TaskBrief": "上电充能",
|
||||
"TaskIndex": 1,
|
||||
"ParamCount": 3,
|
||||
"ParamInfo": [
|
||||
"总线电压",
|
||||
"采样超时0.1ms",
|
||||
"计时启停ADC"
|
||||
],
|
||||
"ParamVal": [
|
||||
88,
|
||||
5000,
|
||||
400
|
||||
],
|
||||
"TestStandard": [
|
||||
{
|
||||
"Max": 95,
|
||||
"Min": 80
|
||||
},
|
||||
{
|
||||
"Max": 800,
|
||||
"Min": 100
|
||||
}
|
||||
],
|
||||
"ReturnCount": 2,
|
||||
"ReturnInfo": [
|
||||
"总线电压",
|
||||
"大于启停的时间"
|
||||
],
|
||||
"ErrJumpTo": 255,
|
||||
"ExecuteErrCode": 254,
|
||||
"ResultErrCode": [
|
||||
23,
|
||||
22
|
||||
],
|
||||
"RetryCount": 0
|
||||
},
|
||||
{
|
||||
"TaskID": 5,
|
||||
"TaskBrief": "写配置参数(正式删除)",
|
||||
"TaskIndex": 2,
|
||||
"ParamCount": 4,
|
||||
"ParamInfo": [
|
||||
"UID长度",
|
||||
"密码长度",
|
||||
"电流挡位",
|
||||
"版本号"
|
||||
],
|
||||
"ParamVal": [
|
||||
8,
|
||||
4,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"TestStandard": [],
|
||||
"ReturnCount": 0,
|
||||
"ReturnInfo": [],
|
||||
"ErrJumpTo": 13,
|
||||
"ExecuteErrCode": 28,
|
||||
"ResultErrCode": [],
|
||||
"RetryCount": 1
|
||||
},
|
||||
{
|
||||
"TaskID": 32,
|
||||
"TaskBrief": "加载配置",
|
||||
"TaskIndex": 3,
|
||||
"ParamCount": 0,
|
||||
"ParamInfo": [],
|
||||
"ParamVal": [],
|
||||
"TestStandard": [
|
||||
{
|
||||
"Max": 8,
|
||||
"Min": 8
|
||||
},
|
||||
{
|
||||
"Max": 4,
|
||||
"Min": 4
|
||||
},
|
||||
{
|
||||
"Max": 1,
|
||||
"Min": 1
|
||||
}
|
||||
],
|
||||
"ReturnCount": 3,
|
||||
"ReturnInfo": [
|
||||
"UID长度",
|
||||
"密码长度",
|
||||
"版本号"
|
||||
],
|
||||
"ErrJumpTo": 255,
|
||||
"ExecuteErrCode": 29,
|
||||
"ResultErrCode": [
|
||||
29,
|
||||
29,
|
||||
29,
|
||||
255
|
||||
],
|
||||
"RetryCount": 0
|
||||
},
|
||||
{
|
||||
"TaskID": 4,
|
||||
"TaskBrief": "扫描UID",
|
||||
"TaskIndex": 4,
|
||||
"ParamCount": 2,
|
||||
"ParamInfo": [
|
||||
"UID长度",
|
||||
"使1/失0UID对比"
|
||||
],
|
||||
"ParamVal": [
|
||||
8,
|
||||
0
|
||||
],
|
||||
"TestStandard": [],
|
||||
"ReturnCount": 0,
|
||||
"ReturnInfo": [],
|
||||
"ErrJumpTo": 255,
|
||||
"ExecuteErrCode": 24,
|
||||
"ResultErrCode": [],
|
||||
"RetryCount": 0
|
||||
},
|
||||
{
|
||||
"TaskID": 11,
|
||||
"TaskBrief": "桥丝检测",
|
||||
"TaskIndex": 5,
|
||||
"ParamCount": 0,
|
||||
"ParamInfo": [],
|
||||
"ParamVal": [],
|
||||
"TestStandard": [
|
||||
{
|
||||
"Max": 240,
|
||||
"Min": 0
|
||||
}
|
||||
],
|
||||
"ReturnCount": 1,
|
||||
"ReturnInfo": [
|
||||
"桥丝ADC"
|
||||
],
|
||||
"ErrJumpTo": 255,
|
||||
"ExecuteErrCode": 30,
|
||||
"ResultErrCode": [
|
||||
30
|
||||
],
|
||||
"RetryCount": 0
|
||||
},
|
||||
{
|
||||
"TaskID": 8,
|
||||
"TaskBrief": "充能统计",
|
||||
"TaskIndex": 6,
|
||||
"ParamCount": 5,
|
||||
"ParamInfo": [
|
||||
"充电挡位",
|
||||
"统计超时",
|
||||
"电流判线AD",
|
||||
"充电结束值0.1uA",
|
||||
"充电超时0.1S"
|
||||
],
|
||||
"ParamVal": [
|
||||
34,
|
||||
5000,
|
||||
100,
|
||||
600,
|
||||
5
|
||||
],
|
||||
"TestStandard": [
|
||||
{
|
||||
"Max": 4000,
|
||||
"Min": 1000
|
||||
},
|
||||
{
|
||||
"Max": 600,
|
||||
"Min": 120
|
||||
},
|
||||
{
|
||||
"Max": 100,
|
||||
"Min": 10
|
||||
}
|
||||
],
|
||||
"ReturnCount": 3,
|
||||
"ReturnInfo": [
|
||||
"充能值0.1ms",
|
||||
"充末电流0.1uA",
|
||||
"最大充电电流0.1mA"
|
||||
],
|
||||
"ErrJumpTo": 255,
|
||||
"ExecuteErrCode": 254,
|
||||
"ResultErrCode": [
|
||||
34,
|
||||
35,
|
||||
32,
|
||||
255
|
||||
],
|
||||
"RetryCount": 0
|
||||
},
|
||||
{
|
||||
"TaskID": 24,
|
||||
"TaskBrief": "状态码检测",
|
||||
"TaskIndex": 7,
|
||||
"ParamCount": 2,
|
||||
"ParamInfo": [
|
||||
"比较掩码",
|
||||
"比较位"
|
||||
],
|
||||
"ParamVal": [
|
||||
130,
|
||||
0
|
||||
],
|
||||
"TestStandard": [
|
||||
{
|
||||
"Max": 255,
|
||||
"Min": 0
|
||||
}
|
||||
],
|
||||
"ReturnCount": 1,
|
||||
"ReturnInfo": [
|
||||
"状态值"
|
||||
],
|
||||
"ErrJumpTo": 15,
|
||||
"ExecuteErrCode": 46,
|
||||
"ResultErrCode": [
|
||||
46
|
||||
],
|
||||
"RetryCount": 0
|
||||
},
|
||||
{
|
||||
"TaskID": 26,
|
||||
"TaskBrief": "复位",
|
||||
"TaskIndex": 8,
|
||||
"ParamCount": 0,
|
||||
"ParamInfo": [],
|
||||
"ParamVal": [],
|
||||
"TestStandard": [],
|
||||
"ReturnCount": 0,
|
||||
"ReturnInfo": [],
|
||||
"ErrJumpTo": 255,
|
||||
"ExecuteErrCode": 254,
|
||||
"ResultErrCode": [],
|
||||
"RetryCount": 0
|
||||
},
|
||||
{
|
||||
"TaskID": 9,
|
||||
"TaskBrief": "设置现场值",
|
||||
"TaskIndex": 9,
|
||||
"ParamCount": 3,
|
||||
"ParamInfo": [
|
||||
"编号",
|
||||
"延时",
|
||||
"孔号"
|
||||
],
|
||||
"ParamVal": [
|
||||
20,
|
||||
100,
|
||||
20
|
||||
],
|
||||
"TestStandard": [],
|
||||
"ReturnCount": 0,
|
||||
"ReturnInfo": [],
|
||||
"ErrJumpTo": 255,
|
||||
"ExecuteErrCode": 254,
|
||||
"ResultErrCode": [],
|
||||
"RetryCount": 0
|
||||
},
|
||||
{
|
||||
"TaskID": 19,
|
||||
"TaskBrief": "时钟校准",
|
||||
"TaskIndex": 10,
|
||||
"ParamCount": 3,
|
||||
"ParamInfo": [
|
||||
" 1快速0全",
|
||||
"校准周期",
|
||||
"校准时长"
|
||||
],
|
||||
"ParamVal": [
|
||||
0,
|
||||
1000,
|
||||
110
|
||||
],
|
||||
"TestStandard": [],
|
||||
"ReturnCount": 0,
|
||||
"ReturnInfo": [],
|
||||
"ErrJumpTo": 255,
|
||||
"ExecuteErrCode": 254,
|
||||
"ResultErrCode": [],
|
||||
"RetryCount": 0
|
||||
},
|
||||
{
|
||||
"TaskID": 24,
|
||||
"TaskBrief": "状态码检测",
|
||||
"TaskIndex": 11,
|
||||
"ParamCount": 2,
|
||||
"ParamInfo": [
|
||||
"比较掩码",
|
||||
"比较位"
|
||||
],
|
||||
"ParamVal": [
|
||||
10,
|
||||
10
|
||||
],
|
||||
"TestStandard": [
|
||||
{
|
||||
"Max": 255,
|
||||
"Min": 0
|
||||
}
|
||||
],
|
||||
"ReturnCount": 1,
|
||||
"ReturnInfo": [
|
||||
"状态值"
|
||||
],
|
||||
"ErrJumpTo": 255,
|
||||
"ExecuteErrCode": 46,
|
||||
"ResultErrCode": [
|
||||
255
|
||||
],
|
||||
"RetryCount": 0
|
||||
},
|
||||
{
|
||||
"TaskID": 10,
|
||||
"TaskBrief": "比对现场值",
|
||||
"TaskIndex": 12,
|
||||
"ParamCount": 4,
|
||||
"ParamInfo": [
|
||||
"编号",
|
||||
"延时",
|
||||
"孔号",
|
||||
"1使/0失反馈采集"
|
||||
],
|
||||
"ParamVal": [
|
||||
20,
|
||||
100,
|
||||
20,
|
||||
1
|
||||
],
|
||||
"TestStandard": [
|
||||
{
|
||||
"Max": 1700,
|
||||
"Min": 800
|
||||
},
|
||||
{
|
||||
"Max": 400,
|
||||
"Min": 150
|
||||
}
|
||||
],
|
||||
"ReturnCount": 2,
|
||||
"ReturnInfo": [
|
||||
"最大反馈电流",
|
||||
"最大反馈时间"
|
||||
],
|
||||
"ErrJumpTo": 255,
|
||||
"ExecuteErrCode": 255,
|
||||
"ResultErrCode": [
|
||||
43,
|
||||
44,
|
||||
255,
|
||||
255
|
||||
],
|
||||
"RetryCount": 0
|
||||
},
|
||||
{
|
||||
"TaskID": 27,
|
||||
"TaskBrief": "关总线",
|
||||
"TaskIndex": 13,
|
||||
"ParamCount": 0,
|
||||
"ParamInfo": [],
|
||||
"ParamVal": [],
|
||||
"TestStandard": [],
|
||||
"ReturnCount": 0,
|
||||
"ReturnInfo": [],
|
||||
"ErrJumpTo": 255,
|
||||
"ExecuteErrCode": 254,
|
||||
"ResultErrCode": [],
|
||||
"RetryCount": 0
|
||||
}
|
||||
]
|
||||
}
|
407
python/file/EX三码绑定测试2023-07-3.json
Normal file
407
python/file/EX三码绑定测试2023-07-3.json
Normal file
@@ -0,0 +1,407 @@
|
||||
{
|
||||
"PlanID": 48435330,
|
||||
"PlanBrief": "模拟工厂注码",
|
||||
"CheckSoftVersion": [
|
||||
1
|
||||
],
|
||||
"CheckHardVersion": [
|
||||
1
|
||||
],
|
||||
"TimeOutS": 4,
|
||||
"TimeOutM": 10,
|
||||
"TimeOutUI": 12,
|
||||
"TaskIDMax": 26,
|
||||
"TaskArray": [
|
||||
{
|
||||
"TaskID": 0,
|
||||
"TaskBrief": "电源准备",
|
||||
"TaskIndex": 0,
|
||||
"ParamCount": 1,
|
||||
"ParamInfo": [
|
||||
"预设电压1"
|
||||
],
|
||||
"ParamVal": [
|
||||
88
|
||||
],
|
||||
"TestStandard": [],
|
||||
"ReturnCount": 0,
|
||||
"ReturnInfo": [],
|
||||
"ErrJumpTo": 255,
|
||||
"ExecuteErrCode": 254,
|
||||
"ResultErrCode": [],
|
||||
"RetryCount": 0
|
||||
},
|
||||
{
|
||||
"TaskID": 1,
|
||||
"TaskBrief": "上电充能",
|
||||
"TaskIndex": 1,
|
||||
"ParamCount": 3,
|
||||
"ParamInfo": [
|
||||
"总线电压",
|
||||
"采样超时0.1ms",
|
||||
"计时启停ADC"
|
||||
],
|
||||
"ParamVal": [
|
||||
88,
|
||||
5000,
|
||||
400
|
||||
],
|
||||
"TestStandard": [
|
||||
{
|
||||
"Max": 95,
|
||||
"Min": 80
|
||||
},
|
||||
{
|
||||
"Max": 800,
|
||||
"Min": 100
|
||||
}
|
||||
],
|
||||
"ReturnCount": 2,
|
||||
"ReturnInfo": [
|
||||
"总线电压",
|
||||
"大于启停的时间"
|
||||
],
|
||||
"ErrJumpTo": 255,
|
||||
"ExecuteErrCode": 254,
|
||||
"ResultErrCode": [
|
||||
23,
|
||||
22
|
||||
],
|
||||
"RetryCount": 0
|
||||
},
|
||||
{
|
||||
"TaskID": 5,
|
||||
"TaskBrief": "写配置参数(正式删除)",
|
||||
"TaskIndex": 2,
|
||||
"ParamCount": 4,
|
||||
"ParamInfo": [
|
||||
"UID长度",
|
||||
"密码长度",
|
||||
"电流挡位",
|
||||
"版本号"
|
||||
],
|
||||
"ParamVal": [
|
||||
8,
|
||||
4,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"TestStandard": [],
|
||||
"ReturnCount": 0,
|
||||
"ReturnInfo": [],
|
||||
"ErrJumpTo": 13,
|
||||
"ExecuteErrCode": 28,
|
||||
"ResultErrCode": [],
|
||||
"RetryCount": 1
|
||||
},
|
||||
{
|
||||
"TaskID": 32,
|
||||
"TaskBrief": "加载配置",
|
||||
"TaskIndex": 3,
|
||||
"ParamCount": 0,
|
||||
"ParamInfo": [],
|
||||
"ParamVal": [],
|
||||
"TestStandard": [
|
||||
{
|
||||
"Max": 8,
|
||||
"Min": 8
|
||||
},
|
||||
{
|
||||
"Max": 4,
|
||||
"Min": 4
|
||||
},
|
||||
{
|
||||
"Max": 1,
|
||||
"Min": 1
|
||||
}
|
||||
],
|
||||
"ReturnCount": 3,
|
||||
"ReturnInfo": [
|
||||
"UID长度",
|
||||
"密码长度",
|
||||
"版本号"
|
||||
],
|
||||
"ErrJumpTo": 255,
|
||||
"ExecuteErrCode": 29,
|
||||
"ResultErrCode": [
|
||||
29,
|
||||
29,
|
||||
29,
|
||||
255
|
||||
],
|
||||
"RetryCount": 0
|
||||
},
|
||||
{
|
||||
"TaskID": 4,
|
||||
"TaskBrief": "扫描UID",
|
||||
"TaskIndex": 4,
|
||||
"ParamCount": 2,
|
||||
"ParamInfo": [
|
||||
"UID长度",
|
||||
"使1/失0UID对比"
|
||||
],
|
||||
"ParamVal": [
|
||||
8,
|
||||
0
|
||||
],
|
||||
"TestStandard": [],
|
||||
"ReturnCount": 0,
|
||||
"ReturnInfo": [],
|
||||
"ErrJumpTo": 255,
|
||||
"ExecuteErrCode": 24,
|
||||
"ResultErrCode": [],
|
||||
"RetryCount": 0
|
||||
},
|
||||
{
|
||||
"TaskID": 11,
|
||||
"TaskBrief": "桥丝检测",
|
||||
"TaskIndex": 5,
|
||||
"ParamCount": 0,
|
||||
"ParamInfo": [],
|
||||
"ParamVal": [],
|
||||
"TestStandard": [
|
||||
{
|
||||
"Max": 240,
|
||||
"Min": 0
|
||||
}
|
||||
],
|
||||
"ReturnCount": 1,
|
||||
"ReturnInfo": [
|
||||
"桥丝ADC"
|
||||
],
|
||||
"ErrJumpTo": 255,
|
||||
"ExecuteErrCode": 30,
|
||||
"ResultErrCode": [
|
||||
30
|
||||
],
|
||||
"RetryCount": 0
|
||||
},
|
||||
{
|
||||
"TaskID": 8,
|
||||
"TaskBrief": "充能统计",
|
||||
"TaskIndex": 6,
|
||||
"ParamCount": 5,
|
||||
"ParamInfo": [
|
||||
"充电挡位",
|
||||
"统计超时",
|
||||
"电流判线AD",
|
||||
"充电结束值0.1uA",
|
||||
"充电超时0.1S"
|
||||
],
|
||||
"ParamVal": [
|
||||
34,
|
||||
5000,
|
||||
100,
|
||||
600,
|
||||
5
|
||||
],
|
||||
"TestStandard": [
|
||||
{
|
||||
"Max": 4000,
|
||||
"Min": 1000
|
||||
},
|
||||
{
|
||||
"Max": 600,
|
||||
"Min": 200
|
||||
},
|
||||
{
|
||||
"Max": 100,
|
||||
"Min": 10
|
||||
}
|
||||
],
|
||||
"ReturnCount": 3,
|
||||
"ReturnInfo": [
|
||||
"充能值0.1ms",
|
||||
"充末电流0.1uA",
|
||||
"最大充电电流0.1mA"
|
||||
],
|
||||
"ErrJumpTo": 255,
|
||||
"ExecuteErrCode": 254,
|
||||
"ResultErrCode": [
|
||||
34,
|
||||
35,
|
||||
32,
|
||||
255
|
||||
],
|
||||
"RetryCount": 0
|
||||
},
|
||||
{
|
||||
"TaskID": 24,
|
||||
"TaskBrief": "状态码检测",
|
||||
"TaskIndex": 7,
|
||||
"ParamCount": 2,
|
||||
"ParamInfo": [
|
||||
"比较掩码",
|
||||
"比较位"
|
||||
],
|
||||
"ParamVal": [
|
||||
130,
|
||||
0
|
||||
],
|
||||
"TestStandard": [
|
||||
{
|
||||
"Max": 255,
|
||||
"Min": 0
|
||||
}
|
||||
],
|
||||
"ReturnCount": 1,
|
||||
"ReturnInfo": [
|
||||
"状态值"
|
||||
],
|
||||
"ErrJumpTo": 15,
|
||||
"ExecuteErrCode": 46,
|
||||
"ResultErrCode": [
|
||||
46
|
||||
],
|
||||
"RetryCount": 0
|
||||
},
|
||||
{
|
||||
"TaskID": 26,
|
||||
"TaskBrief": "复位",
|
||||
"TaskIndex": 8,
|
||||
"ParamCount": 0,
|
||||
"ParamInfo": [],
|
||||
"ParamVal": [],
|
||||
"TestStandard": [],
|
||||
"ReturnCount": 0,
|
||||
"ReturnInfo": [],
|
||||
"ErrJumpTo": 255,
|
||||
"ExecuteErrCode": 254,
|
||||
"ResultErrCode": [],
|
||||
"RetryCount": 0
|
||||
},
|
||||
{
|
||||
"TaskID": 9,
|
||||
"TaskBrief": "设置现场值",
|
||||
"TaskIndex": 9,
|
||||
"ParamCount": 3,
|
||||
"ParamInfo": [
|
||||
"编号",
|
||||
"延时",
|
||||
"孔号"
|
||||
],
|
||||
"ParamVal": [
|
||||
20,
|
||||
100,
|
||||
20
|
||||
],
|
||||
"TestStandard": [],
|
||||
"ReturnCount": 0,
|
||||
"ReturnInfo": [],
|
||||
"ErrJumpTo": 255,
|
||||
"ExecuteErrCode": 254,
|
||||
"ResultErrCode": [],
|
||||
"RetryCount": 0
|
||||
},
|
||||
{
|
||||
"TaskID": 19,
|
||||
"TaskBrief": "时钟校准",
|
||||
"TaskIndex": 10,
|
||||
"ParamCount": 3,
|
||||
"ParamInfo": [
|
||||
" 1快速0全",
|
||||
"校准周期",
|
||||
"校准时长"
|
||||
],
|
||||
"ParamVal": [
|
||||
0,
|
||||
1000,
|
||||
110
|
||||
],
|
||||
"TestStandard": [],
|
||||
"ReturnCount": 0,
|
||||
"ReturnInfo": [],
|
||||
"ErrJumpTo": 255,
|
||||
"ExecuteErrCode": 254,
|
||||
"ResultErrCode": [],
|
||||
"RetryCount": 0
|
||||
},
|
||||
{
|
||||
"TaskID": 24,
|
||||
"TaskBrief": "状态码检测",
|
||||
"TaskIndex": 11,
|
||||
"ParamCount": 2,
|
||||
"ParamInfo": [
|
||||
"比较掩码",
|
||||
"比较位"
|
||||
],
|
||||
"ParamVal": [
|
||||
10,
|
||||
10
|
||||
],
|
||||
"TestStandard": [
|
||||
{
|
||||
"Max": 255,
|
||||
"Min": 0
|
||||
}
|
||||
],
|
||||
"ReturnCount": 1,
|
||||
"ReturnInfo": [
|
||||
"状态值"
|
||||
],
|
||||
"ErrJumpTo": 255,
|
||||
"ExecuteErrCode": 46,
|
||||
"ResultErrCode": [
|
||||
255
|
||||
],
|
||||
"RetryCount": 0
|
||||
},
|
||||
{
|
||||
"TaskID": 10,
|
||||
"TaskBrief": "比对现场值",
|
||||
"TaskIndex": 12,
|
||||
"ParamCount": 4,
|
||||
"ParamInfo": [
|
||||
"编号",
|
||||
"延时",
|
||||
"孔号",
|
||||
"1使/0失反馈采集"
|
||||
],
|
||||
"ParamVal": [
|
||||
20,
|
||||
100,
|
||||
20,
|
||||
1
|
||||
],
|
||||
"TestStandard": [
|
||||
{
|
||||
"Max": 170,
|
||||
"Min": 80
|
||||
},
|
||||
{
|
||||
"Max": 400,
|
||||
"Min": 150
|
||||
}
|
||||
],
|
||||
"ReturnCount": 2,
|
||||
"ReturnInfo": [
|
||||
"最大反馈电流",
|
||||
"最大反馈时间"
|
||||
],
|
||||
"ErrJumpTo": 255,
|
||||
"ExecuteErrCode": 255,
|
||||
"ResultErrCode": [
|
||||
43,
|
||||
44,
|
||||
255,
|
||||
255
|
||||
],
|
||||
"RetryCount": 0
|
||||
},
|
||||
{
|
||||
"TaskID": 27,
|
||||
"TaskBrief": "关总线",
|
||||
"TaskIndex": 13,
|
||||
"ParamCount": 0,
|
||||
"ParamInfo": [],
|
||||
"ParamVal": [],
|
||||
"TestStandard": [],
|
||||
"ReturnCount": 0,
|
||||
"ReturnInfo": [],
|
||||
"ErrJumpTo": 255,
|
||||
"ExecuteErrCode": 254,
|
||||
"ResultErrCode": [],
|
||||
"RetryCount": 0
|
||||
}
|
||||
]
|
||||
}
|
Binary file not shown.
560
python/file/judge-xt.lua
Normal file
560
python/file/judge-xt.lua
Normal file
@@ -0,0 +1,560 @@
|
||||
---@diagnostic disable: lowercase-global, undefined-global
|
||||
|
||||
|
||||
|
||||
|
||||
-- 芯跳赋码仪错误判定脚本
|
||||
|
||||
|
||||
|
||||
-- 方案配置文件:
|
||||
-- cfg_name
|
||||
-- 检测数据
|
||||
-- check_data
|
||||
-- 当前路径
|
||||
-- get_path()
|
||||
-- 打印表
|
||||
-- prints:print_t()
|
||||
-- json解码
|
||||
-- json:decode()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-- 读取方案配置信息
|
||||
-- print(cfg_name)
|
||||
check_cfg_file=io.open(cfg_name,"r")
|
||||
check_cfg_str=check_cfg_file:read("*a")
|
||||
check_cfg_file:close()
|
||||
json_table = json:decode(check_cfg_str)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-- 表长度
|
||||
function len(t)
|
||||
local res=0
|
||||
if(t==nil)then return 0 end
|
||||
for k,v in pairs(t) do
|
||||
res=res+1
|
||||
end
|
||||
return res
|
||||
end
|
||||
|
||||
-- 截取数组
|
||||
function mid(array,start,length)
|
||||
if(len(array)<(start+length-1)) then
|
||||
print("mid:out of range",start,length)
|
||||
return nil
|
||||
end
|
||||
return table.pack(table.unpack(array,start,start+length-1))
|
||||
end
|
||||
|
||||
|
||||
-- 把n插入t中,不允许重复
|
||||
function insert(t,n)
|
||||
for k,v in pairs(t) do
|
||||
if(v==n) then
|
||||
return
|
||||
end
|
||||
end
|
||||
table.insert(t,n)
|
||||
end
|
||||
|
||||
|
||||
-- 删除t中的值n
|
||||
function del(t,n)
|
||||
for k,v in pairs(t) do
|
||||
if(v==n) then
|
||||
table.remove(t,k)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- 删除t中除n之外的所有值
|
||||
function only(t,n)
|
||||
for k,v in pairs(t) do
|
||||
if(v~=n) then
|
||||
-- table.remove(t,k)
|
||||
t[k]=nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
-- 计算2的n次幂
|
||||
function exp2(n)
|
||||
local ret=1
|
||||
for i=1,n,1 do
|
||||
ret=ret*2
|
||||
end
|
||||
return ret
|
||||
end
|
||||
|
||||
|
||||
-- 计算参数错误占用的字节
|
||||
function clac_cfg_errbytenum()
|
||||
local num=0
|
||||
local tasks=json_table["TaskArray"]
|
||||
for i=1,len(tasks),1 do
|
||||
num=num+tasks[i]["ReturnCount"]
|
||||
end
|
||||
return math.floor((num+7)/8)
|
||||
end
|
||||
|
||||
|
||||
|
||||
-- 8个字节描述执行结果0成功,1失败
|
||||
function find_ack(index,acks)
|
||||
if(index>len(acks)*8) or index<1 then
|
||||
print("index out of range.index=",index)
|
||||
return false
|
||||
end
|
||||
local temp=acks[math.floor((index-1)/8)+1]
|
||||
local i=(index-1)%8
|
||||
if ((math.floor((temp % exp2(i+1))/exp2(i)))~=0) then
|
||||
return false
|
||||
else
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- 展示任务回复,0成功,1失败
|
||||
function show_acks(acks)
|
||||
-- prints:print_a(acks)
|
||||
print("return_ack:(0:ok;1:err)")
|
||||
local str=""
|
||||
for i=1,len(json_table["TaskArray"]),1 do
|
||||
local ack=find_ack(i,acks)
|
||||
if ack==true then
|
||||
str=str.."0, "
|
||||
else
|
||||
str=str.."1, "
|
||||
end
|
||||
end
|
||||
print(str)
|
||||
end
|
||||
|
||||
|
||||
|
||||
-- 统计指定index之前应该跳过的数据长度和当前index的返回长度
|
||||
function calc_skip(index,tasks)
|
||||
local len=0
|
||||
-- for i=1,table.getn(tasks),1 do
|
||||
local i=1
|
||||
while i<index do
|
||||
-- for i=1,index,1 do
|
||||
-- print("calc_skip,index=",index,"i=",i)
|
||||
len=len+tasks[i]["ReturnCount"]
|
||||
i=i+1
|
||||
end
|
||||
-- print("calc_skip,len=",len)
|
||||
return len*2,tasks[index]["ReturnCount"]*2
|
||||
end
|
||||
|
||||
|
||||
|
||||
-- 找到指定index的任务返回数和值,把两个字节合并为一个值
|
||||
function find_return(index)
|
||||
local data=check_data
|
||||
local skip_len,len=calc_skip(index,json_table["TaskArray"])
|
||||
local ret={}
|
||||
local temp=mid(data,skip_len+1+8+check_erryternum,len)
|
||||
if(temp==nil) then return ret end
|
||||
-- print("find_return,temp=")
|
||||
-- prints:print_a(temp)
|
||||
local len_t=math.floor(len/2)
|
||||
for i=1,len_t,1 do
|
||||
ret[i]=temp[i*2-1]+(temp[i*2]*exp2(8))
|
||||
end
|
||||
return ret
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
-- Checker_PowerPrapare, //0 电源准备
|
||||
-- XT_Test_PowerOn, //1 上电充能
|
||||
-- XT_Test_SetBusV, //2 设置总线电压
|
||||
-- XT_Test_BaseCur, //3 获取总线电流
|
||||
-- XT_Test_ScanUID, //4 扫描UID
|
||||
-- XT_Test_WriteChipCfg, //5 写配置参数
|
||||
-- XT_Test_CheckChipCfg, //6 验证配置
|
||||
-- XT_Test_BindTestCode, //7 模拟注码
|
||||
-- XT_Test_ChgEnergy, //8 充能统计
|
||||
-- XT_Test_WriteRunField, //9 写现场值 网络id 延时
|
||||
-- XT_Test_CheckRunField, //10 比对现场值
|
||||
-- XT_Test_Resister, //11 桥丝通断检测
|
||||
-- XT_Test_Cap, //12 电容容量统计
|
||||
-- Checker_WaitDelay, //13 延时等待
|
||||
-- XT_Test_WriteShell, //14 写管壳号/工厂信息
|
||||
-- XT_Test_WriteUID, //15 写UID
|
||||
-- XT_Test_WritePWD, //16 写密码
|
||||
-- XT_Test_CheckBackFlag, //17 写入/检测备份区标志
|
||||
-- XT_Test_ReadBackFlag, //18 读取备份区数据
|
||||
-- XT_Test_Trim, //19 校准
|
||||
-- XT_Test_EnCommEndCur, //20 使能通讯末电流采集
|
||||
-- XT_Test_GetCommEndCur, //21 获取通讯末电流
|
||||
-- XT_Test_Discharge, //22 放电
|
||||
-- XT_Test_OneLineCheck, //23 在线检测
|
||||
-- XT_Test_CheckState, //24 状态检测
|
||||
-- XT_Test_Boom, //25 起爆
|
||||
-- XT_Test_Reset, //26 复位
|
||||
-- XT_Test_PowerOFF, //27 关总线
|
||||
-- XT_Test_LockCmdC, //28 芯片锁存
|
||||
-- XT_Test_CodeBindEn, //29 使能赋码设备
|
||||
-- XT_Test_InputCheck, //30 在线检测
|
||||
-- XT_Test_CheckPWD, //31 密码验证
|
||||
-- XT_Test_LoadChipCfg, //32 加载芯片配置
|
||||
-- XT_Test_CapVoltage, //33 电容压差测试
|
||||
-- Checker_ResistorSample, //34 桥丝电阻测试
|
||||
-- XT_Test_UID_PWD_Bind, //35 检测过程中注码
|
||||
-- XT_Test_UID_PWD_Verify, //36 验证注码
|
||||
|
||||
|
||||
|
||||
-- 根据任务id找到下一个任务
|
||||
function find_index(index,task_id)
|
||||
-- print("find_index:index=",index)
|
||||
local tasks=json_table["TaskArray"]
|
||||
-- prints:print_t(tasks)
|
||||
for i=index,len(tasks),1 do
|
||||
if(tasks[i]["TaskID"]==task_id) then
|
||||
return tasks[i]
|
||||
end
|
||||
end
|
||||
print("find_index err:index=",index,"task_id=",task_id)
|
||||
return nil
|
||||
end
|
||||
|
||||
|
||||
-- 检测器异常,1
|
||||
-- 主电容异常,2
|
||||
-- 接触异常,3
|
||||
-- 桥丝阻值异常,4
|
||||
-- 芯片异常,5
|
||||
-- 其他异常,6
|
||||
|
||||
|
||||
-- 判断上电错误,返回下一个检测任务,nil停止检测
|
||||
function Checker_PowerPrapare(task,err_code)
|
||||
if(find_ack(task["TaskIndex"]+1,mid(check_data,1,8))==false)then
|
||||
-- 上电错误只能是检测器异常,检测结束
|
||||
print("task failed.index=",task["TaskIndex"])
|
||||
only(err_code,1)
|
||||
return nil
|
||||
else
|
||||
-- 上电正常,排除检测器异常
|
||||
-- del(err_code,1)
|
||||
print("check poweron")
|
||||
-- 下一步是上电充能
|
||||
return find_index(task["TaskIndex"]+2,1)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- 判断上电充能错误,返回下一个检测任务,nil停止检测
|
||||
function XT_Test_PowerOn(task,err_code)
|
||||
local ret_value={}
|
||||
if(find_ack(task["TaskIndex"]+1,mid(check_data,1,8))==false)then
|
||||
-- 上电充能异常
|
||||
del(err_code,0)
|
||||
print("task failed.index=",task["TaskIndex"])
|
||||
-- 下一步检测电流
|
||||
return find_index(task["TaskIndex"]+2,3)
|
||||
else
|
||||
-- 充能流程正常,返回第一个值是电压,第二个值是充能时间
|
||||
ret_value=find_return(task["TaskIndex"]+1)
|
||||
prints:print_a(ret_value)
|
||||
-- 电压无法上升,检测器异常
|
||||
if(ret_value[1]<task["TestStandard"][1]["Min"]) then
|
||||
print("voltage too low",ret_value[1])
|
||||
only(err_code,1)
|
||||
return nil
|
||||
end
|
||||
-- 充电时间过长,进一步检测电流,判断开路还是短路
|
||||
if(ret_value[2]>39000) then
|
||||
del(err_code,0)
|
||||
print("check current")
|
||||
return find_index(task["TaskIndex"]+2,3)
|
||||
elseif(ret_value[2]<1) then
|
||||
-- 新小板程序在开路时会返回0,保险起见还是看一下电流
|
||||
del(err_code,0)
|
||||
print("check current")
|
||||
return find_index(task["TaskIndex"]+2,3)
|
||||
end
|
||||
---- 排除检测板异常
|
||||
del(err_code,1)
|
||||
print("check chip UID")
|
||||
-- 下一步检测UID
|
||||
return find_index(task["TaskIndex"]+2,4)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
-- 扫描uid,成功则芯片正常,返回下一个检测任务,nil停止检测
|
||||
function XT_Test_ScanUID(task,err_code)
|
||||
if(find_ack(task["TaskIndex"]+1,mid(check_data,1,8))==false)then
|
||||
-- 通信失败,返回芯片异常,检测结束
|
||||
print("task failed.task_index=",task["TaskIndex"])
|
||||
only(err_code,5)
|
||||
return nil
|
||||
else
|
||||
-- ret_value=find_return(task["TaskIndex"]+1)
|
||||
-- -- 最大反馈时间在范围之外,芯片异常
|
||||
-- if(ret_value[2]<task["TestStandard"][2]["Min"]) or (ret_value[2]>task["TestStandard"][2]["Max"]) then
|
||||
-- only(err_code,5)
|
||||
-- return nil
|
||||
-- end
|
||||
|
||||
print("check charge")
|
||||
return find_index(task["TaskIndex"]+2,8)
|
||||
--print("读取芯片代码")
|
||||
--return find_index(task["TaskIndex"]+2,6)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-- 判断低压电流,返回下一个检测任务,nil停止检测
|
||||
function XT_Test_BaseCurLow(task,err_code)
|
||||
if(find_ack(task["TaskIndex"]+1,mid(check_data,1,8))==false)then
|
||||
-- 电流检测错误只能是检测器异常,检测结束
|
||||
print("task failed.task_index=",task["TaskIndex"])
|
||||
only(err_code,1)
|
||||
return nil
|
||||
else
|
||||
-- 返回正向电流,反向电流
|
||||
ret_value=find_return(task["TaskIndex"]+1)
|
||||
print("current:",ret_value[1])
|
||||
-- 电流为0,开路,返回接触异常
|
||||
if(ret_value[1]<10) and (ret_value[2]<10)then
|
||||
only(err_code,3)
|
||||
return nil
|
||||
-- 电流过大,短路,返回芯片异常
|
||||
elseif((ret_value[1]>task["TestStandard"][1]["Max"]) and (ret_value[1]<1500))
|
||||
or ((ret_value[2]>task["TestStandard"][2]["Max"]) and (ret_value[2]<1500))
|
||||
then
|
||||
only(err_code,5)
|
||||
return nil
|
||||
elseif((ret_value[1]>1500) and (ret_value[2]>1500))then
|
||||
only(err_code,3)
|
||||
return nil
|
||||
end
|
||||
-- 排除接触异常
|
||||
del(err_code,3)
|
||||
print("read chip UID")
|
||||
-- 下一步检测芯片
|
||||
return find_index(task["TaskIndex"]+2,4)
|
||||
-- print("读取芯片代码")
|
||||
-- return find_index(task["TaskIndex"]+2,6)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- 检测充能,失败则电容异常
|
||||
function JQ_Test_ChgEnergy(task,err_code)
|
||||
if(find_ack(task["TaskIndex"]+1,mid(check_data,1,8))==false)then
|
||||
-- 充能错误只能是检测器异常,检测结束
|
||||
print("task failed.task_index=",task["TaskIndex"])
|
||||
only(err_code,1)
|
||||
return nil
|
||||
else
|
||||
ret_value=find_return(task["TaskIndex"]+1)
|
||||
if((ret_value[1]>task["TestStandard"][1]["Max"]) or (ret_value[1]<task["TestStandard"][1]["Min"])) then
|
||||
only(err_code,2)
|
||||
return nil
|
||||
end
|
||||
if((ret_value[2]>task["TestStandard"][2]["Max"]) or (ret_value[2]<task["TestStandard"][2]["Min"])) then
|
||||
only(err_code,2)
|
||||
return nil
|
||||
end
|
||||
if((ret_value[3]>task["TestStandard"][3]["Max"]) or (ret_value[3]<task["TestStandard"][3]["Min"])) then
|
||||
only(err_code,2)
|
||||
return nil
|
||||
end
|
||||
print("judge end")
|
||||
only(err_code,0)
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- 定义占位函数,不应该调用
|
||||
function JQ_Test_Empty(task,err_code)
|
||||
print("err function call,task index=",task["TaskIndex"])
|
||||
insert(err_code,6)
|
||||
return nil
|
||||
end
|
||||
|
||||
|
||||
-- 这个数组根据方案检测顺序确定
|
||||
tasks_judge_fun={
|
||||
Checker_PowerPrapare,--0
|
||||
XT_Test_PowerOn,--1
|
||||
JQ_Test_Empty,--2
|
||||
JQ_Test_Empty,--3
|
||||
XT_Test_ScanUID,--4
|
||||
JQ_Test_Empty,--5
|
||||
JQ_Test_ChgEnergy,--6
|
||||
JQ_Test_Empty,--7
|
||||
JQ_Test_Empty,--8
|
||||
JQ_Test_Empty,--9
|
||||
JQ_Test_Empty,--10
|
||||
JQ_Test_Empty,--11
|
||||
JQ_Test_Empty,--12
|
||||
JQ_Test_Empty,--13
|
||||
}
|
||||
|
||||
|
||||
|
||||
-- 取得表中第一个值
|
||||
function get_err_code(err_code)
|
||||
for k,v in pairs(err_code) do
|
||||
if(v~=nil) then
|
||||
return v
|
||||
end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
-- 根据任务依次判断
|
||||
function judge()
|
||||
local fun_index=1
|
||||
local err_code={0,1,2,3,4,5}
|
||||
-- 找到上电任务
|
||||
local task=find_index(1,0)
|
||||
while true do
|
||||
if(task==nil)then
|
||||
if(len(err_code)>1)then
|
||||
-- 如果找不到任务,则应该是方案错误,这里返回其他异常
|
||||
print("can not find task,fun_index=",fun_index)
|
||||
insert(err_code,6)
|
||||
end
|
||||
break
|
||||
end
|
||||
fun_index=task["TaskIndex"]+1
|
||||
task=tasks_judge_fun[fun_index](task,err_code)
|
||||
end
|
||||
return err_code
|
||||
end
|
||||
|
||||
-- 判断一个任务的子错误
|
||||
function judge_task(task,data)
|
||||
local range=task["TestStandard"]
|
||||
local ret={}
|
||||
-- print("judge task")
|
||||
if range~=nil then
|
||||
-- print("judge task")
|
||||
for i=1,len(range),1 do
|
||||
if(data[i]<range[i]["Min"]) or (data[i]>range[i]["Max"]) then
|
||||
-- print("task=",task["TaskBrief"],"out of range:")
|
||||
-- print("err code=",task["ResultErrCode"][i])
|
||||
table.insert(ret,task["ResultErrCode"][i])
|
||||
end
|
||||
end
|
||||
end
|
||||
return ret
|
||||
end
|
||||
|
||||
|
||||
-- 依次判断主错误
|
||||
function judge_list()
|
||||
local acks=mid(check_data,1,8)
|
||||
for i=1,len(json_table["TaskArray"]),1 do
|
||||
local ack=find_ack(i,acks)
|
||||
local task_p=json_table["TaskArray"][i]
|
||||
local ret_value=find_return(i)
|
||||
local err_code=judge_task(task_p,ret_value)
|
||||
if ack==false then
|
||||
table.insert(err_code,task_p["ExecuteErrCode"])
|
||||
end
|
||||
if len(err_code)>0 then
|
||||
print("task:",task_p["TaskBrief"],"err_code:")
|
||||
prints:print_a(err_code)
|
||||
return get_err_code(err_code)
|
||||
end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
|
||||
-- 要校验小板的版本号,方案的版本号
|
||||
-- 脚本产生的异常从210开始,0xd2
|
||||
|
||||
function check_env()
|
||||
-- 校验输入数据的长度
|
||||
local skip,l=calc_skip(len(json_table["TaskArray"]),json_table["TaskArray"])
|
||||
-- print("requier len=",skip+l)
|
||||
local num_requre=skip+l+8+check_erryternum
|
||||
if(num_requre>len(check_data)) then
|
||||
print("check data too less.",num_requre,len(check_data))
|
||||
return "数据长度与方案不符",210
|
||||
end
|
||||
-- if(json_table["PlanID"]~=PLAN_ID) then
|
||||
-- print("plan id check err.")
|
||||
-- return "方案ID不符",211
|
||||
-- end
|
||||
return "ok",0
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function main()
|
||||
check_erryternum=clac_cfg_errbytenum()
|
||||
local err_str_table={"检测器异常","主电容异常","接触异常","桥丝阻值异常","芯片异常"}
|
||||
local ch_err,ch_code=check_env()
|
||||
if(ch_code~=0) then
|
||||
return ch_err,ch_code
|
||||
end
|
||||
-- 展示任务执行结果
|
||||
show_acks(mid(check_data,1,8))
|
||||
-- 开始判定
|
||||
local err_code=judge()
|
||||
if(len(err_code)>1) then
|
||||
prints:print_a(err_code)
|
||||
return "检测项目不足,无法判定",212
|
||||
end
|
||||
prints:print_a(err_code)
|
||||
local err=get_err_code(err_code)
|
||||
if(err~=nil) then
|
||||
if(err==0) then
|
||||
err=judge_list()
|
||||
if(err==nil)then
|
||||
return "ok",0
|
||||
else
|
||||
return "具体错误待定义",err
|
||||
end
|
||||
else
|
||||
return err_str_table[err],err
|
||||
end
|
||||
else
|
||||
print("err:err_code is none.")
|
||||
return "数据不合规",213
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- 先返回错误描述,再返回错误码
|
||||
return main()
|
||||
|
||||
|
||||
|
@@ -441,12 +441,12 @@ if __name__ == "__main__":
|
||||
# u.init("utcp:7777")
|
||||
# u.send_file(0xee,"file/JQ_JCXB_V54.bin")
|
||||
# u.send_file(0xed,"../Objects/checker_gen1_app_20230602.bin")
|
||||
u.cmd=0x01
|
||||
u.cmd=0x34
|
||||
print(u.encode(bytearray([0x0a,0x00])).hex(' '))
|
||||
# with open("file/EX三码绑定测试2023-06-26.json","rb") as f:
|
||||
# with open("file/EX三码绑定测试2023-07-3.json","rb") as f:
|
||||
# json_obj=json.loads(f.read())
|
||||
# d=scheme_to_byte(json_obj)
|
||||
# # print("len=",len(d),d.hex(","))
|
||||
# print("len=",len(d),d.hex(","))
|
||||
# d+=scheme_to_host(json_obj)
|
||||
|
||||
|
||||
|
@@ -129,4 +129,7 @@
|
||||
解决不插网线会导致程序重启的bug
|
||||
2023.6.28
|
||||
要实现重复注相同码不报错的功能,重复检测不报错,要使用两套方案
|
||||
2023.7.3
|
||||
检测错误码
|
||||
解决tcp下升级方案死机的问题,原因是内存没有回收导致的内存不足
|
||||
|
@@ -6,8 +6,8 @@
|
||||
|
||||
|
||||
|
||||
#define BUILD_DATE "2023-06-28 18:04:06"
|
||||
#define SOFT_VERSION "0.01"
|
||||
#define BUILD_DATE "2023-07-04 09:17:01"
|
||||
#define SOFT_VERSION "0.10"
|
||||
|
||||
|
||||
|
||||
|
@@ -4,6 +4,13 @@ import datetime
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
|
||||
|
||||
|
||||
# 定义软件版本号
|
||||
SOFT_VERION = "0.10"
|
||||
|
||||
|
||||
|
||||
# 定义mod文件的名称和路径
|
||||
MOD_FILE="mod_signals.c"
|
||||
MOD_PATH="./source/task/"
|
||||
@@ -126,7 +133,7 @@ def creat_compile_info(dst:str):
|
||||
f.write("#ifndef compiler_info__\n")
|
||||
f.write("#define compiler_info__\n\n\n\n\n\n\n")
|
||||
f.write("#define BUILD_DATE \""+utc_time+"\"\n")
|
||||
f.write("#define SOFT_VERSION \"0.01\"\n")
|
||||
f.write("#define SOFT_VERSION \""+SOFT_VERION+"\"\n")
|
||||
f.write("\n\n\n\n\n\n\n#endif\n")
|
||||
|
||||
|
||||
|
@@ -9,7 +9,7 @@
|
||||
|
||||
|
||||
|
||||
#define ARR_MAX_PRINT_LEN 20
|
||||
#define ARR_MAX_PRINT_LEN 50
|
||||
|
||||
#define ARRAY_APPEND_SKIP 50
|
||||
|
||||
|
@@ -144,12 +144,17 @@ void *malloc(uint32_t size)
|
||||
{
|
||||
mallco_dev *self=&g_self;
|
||||
uint32_t offset;
|
||||
int used=0;
|
||||
void *ret_addr=NULL;
|
||||
offset=mem_malloc(size);
|
||||
if (offset!=0XFFFFFFFF)
|
||||
{
|
||||
ret_addr=(void*)((uint32_t)self->membase+offset);
|
||||
}
|
||||
else{
|
||||
used=mem_perused();
|
||||
param_check(used);
|
||||
}
|
||||
return ret_addr;
|
||||
}
|
||||
|
||||
|
@@ -319,13 +319,19 @@ static void check_end(ucport_def *u,port_mcu *src,void *data,int ack,char *err_s
|
||||
uint32_t errcode=0;
|
||||
uint8_t *ack_d=&w->ack[(addr)*6];
|
||||
ack_d[0]=addr+slave_addr_off();
|
||||
ack_d[1]=ack;
|
||||
if(ack==-1) ack_d[1]=208; // 208表示通信超时
|
||||
else ack_d[1]=ack==0?0:209;// 209表示小板返回了命令失败
|
||||
// TODO: 还有4字节数据
|
||||
if(data)
|
||||
{
|
||||
errcode=in_range_err(arr_data(data)+8+8,arr_data(data));
|
||||
ack_d[2]=errcode&0xff;
|
||||
ack_d[3]=(errcode>>8)&0xff;
|
||||
ack_d[4]=(errcode>>16)&0xff;
|
||||
ack_d[5]=(errcode>>24)&0xff;
|
||||
if(ack_d[1]==0) ack_d[1]=ack_d[2];
|
||||
}else{
|
||||
}
|
||||
|
||||
w->ack_num++;
|
||||
if(w->ack_num>=10)
|
||||
|
@@ -371,6 +371,9 @@ static void when_scheme_done(ucport_def *u)
|
||||
DBG_WARN("can not fond variable \"tran\"");
|
||||
return;
|
||||
}
|
||||
DBG_LOG("memused:%d",mem_perused());
|
||||
rt_thread_mdelay(100);
|
||||
DBG_LOG("memused:%d",mem_perused());
|
||||
for(int i=0;i<PORT_NUM;i++)
|
||||
{
|
||||
// 只给在线设备升级方案
|
||||
|
Reference in New Issue
Block a user