diff --git a/updata/console_uart.py b/updata/console_uart.py index 7b9accd..85c3a30 100644 --- a/updata/console_uart.py +++ b/updata/console_uart.py @@ -228,6 +228,7 @@ class console_dlg(QObject): self.cmd_list.append("cp "+self.find_file_by_type(".bin")+" /home/root/config/checker_slave.bin") self.cmd_list.append("cp "+self.find_file_by_type("scheme.json")+" /home/root/config/checker_ye_cfg.json") self.cmd_list.append("cp cfg.json /home/root/config/cfg.json") + self.cmd_list.append("cp "+self.find_file_by_type(".sh")+" /home/root/config/checker_app_pre.sh") self.cmd_list.append("cp "+self.find_file_by_type(".axf")+" /lib/firmware/checker_m4.axf") self.cmd_list.append("cp "+self.find_file_by_type(".dtb")+" /boot/stm32mp157d-atk.dtb") self.cmd_list.append("cp "+self.find_file_by_type(".py")+ " /home/root/daemon.py") diff --git a/updata/prot_table.py b/updata/runtask_table.py similarity index 84% rename from updata/prot_table.py rename to updata/runtask_table.py index 5bfe6f6..8779a76 100644 --- a/updata/prot_table.py +++ b/updata/runtask_table.py @@ -4,12 +4,43 @@ import prottcp as pt + +#参数数据类型 +_g_params_type =[ + "str", + "int8", + "int16", + "int32", + "hex", + "none" +] + + + + # task_id,errcode,par_count,ret_count _g_ew_task_table=[ -("电源准备",0,1,10,0), -("延时等待",1,1,2,1), -("测量桥丝阻值",2,4,1,1), -("上电充能",3,2,3,2), +("电源准备",0,1,10,0,{ + "参数类型":"int16", + "返回值类型":"none", + "参数描述":"检测前校准检测过程中需要使用的电压,便于检测过程中快速输出电压,范围55~270(0.1V)", + "返回值描述":"无返回值" +}), +("延时等待",1,1,2,1,{ + "参数类型":"int16", + "返回值类型":"int16", + "参数描述":"延时时间(0.1s),置1打开电流监控", + "返回值描述":"打开电流监控时的电流波动ADC值" +}), +("测量桥丝阻值",2,4,1,1,{ + "参数类型":"int16", + "返回值类型":"int16", + "参数描述":"测量方式:0 4线制;1 2线1-4通;2 2线2-3通;5 读取电阻校准值", + "返回值描述":"打开电流监控时的电流波动ADC值" +}), +("上电充能",3,2,3,2,{ + +}), ("设置总线电压",4,1,1,1), ("获取总线电流",5,1,0,2), ("使能MTP",6,5,1,0), @@ -289,14 +320,19 @@ def coder_check_decode_sn(data:bytearray): if __name__ == "__main__": u=pt.protu() - # # 检测并写入流水号 - # data=coder_check_write_sn(2,12345) + # 检测并写入流水号 + # data=coder_check_write_sn(0,12345) - # 检测并读取工厂信息和延时 - data=coder_check_read_fatinfo(2) - - u.cmd=0x21 - data=u.encode(data) - print(data.hex(' ')) + # # 检测并读取工厂信息和延时 + # data=coder_check_read_fatinfo(0) + # data=bytearray.fromhex("0d 00 00 0d 01 1f 0a 01 18 02 0a 05 01 14 00 04 00") + # u.cmd=0x21 + # data=u.encode(data) + # print(data.hex(' ')) + def fun(): + return "fun_test" + d={"fun":fun + } + print(d["fun"]()) diff --git a/updata/runtask_win.py b/updata/runtask_win.py new file mode 100644 index 0000000..f97bea1 --- /dev/null +++ b/updata/runtask_win.py @@ -0,0 +1,60 @@ +from math import * +import dearpygui.dearpygui as dpg +import dearpygui.demo as demo + +dpg.create_context() +dpg.create_viewport(title='Custom Title', width=800, height=800) + +# demo.show_demo() + + +sindatax = [] +sindatay = [] +cosdatay = [] +for i in range(100): + sindatax.append(i/100) + sindatay.append(0.5 + 0.5*sin(50*i/100)) + cosdatay.append(0.5 + 0.75*cos(50*i/100)) + + +def _on_demo_close(sender, app_data, user_data): + dpg.delete_item(sender) + dpg.delete_item("__demo_texture_container") + dpg.delete_item("__demo_colormap_registry") + dpg.delete_item("__demo_hyperlinkTheme") + +def show(): + dpg.add_texture_registry(label="Demo Texture Container", tag="__demo_texture_container") + dpg.add_colormap_registry(label="Demo Colormap Registry", tag="__demo_colormap_registry") + with dpg.theme(tag="__demo_hyperlinkTheme"): + with dpg.theme_component(dpg.mvButton): + dpg.add_theme_color(dpg.mvThemeCol_Button, [0, 0, 0, 0]) + dpg.add_theme_color(dpg.mvThemeCol_ButtonActive, [0, 0, 0, 0]) + dpg.add_theme_color(dpg.mvThemeCol_ButtonHovered, [29, 151, 236, 25]) + dpg.add_theme_color(dpg.mvThemeCol_Text, [29, 151, 236]) + + def _log(sender, app_data, user_data): + print(f"sender: {sender}, \t app_data: {app_data}, \t user_data: {user_data}") + with dpg.window(label="Dear PyGui Demo", width=800, height=500, on_close=_on_demo_close, pos=(0, 0), tag="__demo_id"): + # create plot + dpg.add_text("Anti-aliasing can be enabled from the plot's context menu (see Help).", bullet=True) + with dpg.plot(label="Line Series", height=400, width=-1): + + # optionally create legend + dpg.add_plot_legend() + + # REQUIRED: create x and y axes + dpg.add_plot_axis(dpg.mvXAxis, label="x") + + with dpg.plot_axis(dpg.mvYAxis, label="y"): + + # series belong to a y axis + dpg.add_line_series(sindatax, sindatay, label="0.5 + 0.5 * sin(x)") + dpg.add_line_series(sindatax, cosdatay, label="0.5 + 0.75 * cos(x)") + + +show() +dpg.setup_dearpygui() +dpg.show_viewport() +dpg.start_dearpygui() +dpg.destroy_context() diff --git a/updata/task_table.py b/updata/task_table.py new file mode 100644 index 0000000..58a5c46 --- /dev/null +++ b/updata/task_table.py @@ -0,0 +1,677 @@ + + +import task_table_fun as ttf + + + + + + + + +_g_ew_task_table=[ + { + "TaskID":0, + "TaskName":"电源准备", + "TaskBrief":"电压范围5.5V~27V,分辨率0.1V", + "ParamInfo":"预设电压列表,最多10个", + "ReturnInfo":"无返回值", + "ReturnSize":0, + "inputfun":ttf.input_task0, + "outputfun":ttf.output_task0 + }, + { + "TaskID":1, + "TaskName":"延时等待", + "TaskBrief":"延时时间返回0s~6553s,分辨率0.1S。波动DAC换算 Vad/4096*3.3/100/11", + "ParamInfo":["延时时间0.1s","使1/失0电流监控"], + "ReturnInfo":["电流波动DAC"], + "ParamType":"int16", + "RetType":"int16" + }, + { + "TaskID":2, + "TaskName":"桥丝电阻测试", + "TaskBrief":"测量桥丝阻值,可配置测量模式: 0 4线制; 1 2线1-4通;2 2线2-3通;5 返回电阻校准值", + "ParamInfo":["测量模式"], + "ReturnInfo":["电阻0.01Ω"], + "ParamType":"int16", + "RetType":"int16" + }, + { + "TaskID":3, + "TaskName":"上电充能", + "TaskBrief":"统计模块的上电充能,具有电压设置功能,采集档位 R10_0p1mA_1p6mA_UC", + "ParamInfo":["总线电压0.1V","超时时间 0.1ms","充电结束时的AD值"], + "ReturnInfo":["总线电压0.1V","总线电流低于设置AD值的时间"], + "ParamType":"int16", + "RetType":"int16" + }, + { + "TaskID":4, + "TaskName":"设置总线电压", + "TaskBrief":"设置总线电压", + "ParamInfo":["总线电压"], + "ReturnInfo":["总线电压"], + "ParamType":"int16", + "RetType":"int16" + }, + { + "TaskID":5, + "TaskName":"获取总线电流", + "TaskBrief":"测量总线基本电流", + "ParamInfo":[], + "ReturnInfo":["总线正电流 0.1uA","总线反电流 0.1uA"], + "ParamType":"none", + "RetType":"int16" + }, + { + "TaskID":6, + "TaskName":"使能MTP", + "TaskBrief":"使能MTP擦写,0失能/1使能", + "ParamInfo":["是否使能"], + "ReturnInfo":[], + "ParamType":"int16", + "RetType":"none" + }, + { + "TaskID":7, + "TaskName":"扫描UID", + "TaskBrief":"扫描总线上的电子模块", + "ParamInfo":["UID长度","是否使能UID对比","是否使能反馈监控"], + "ReturnInfo":["最大反馈电流","最大反馈时间","最小反馈电流","最小反馈时间","UID 0~1","UID 2~3","UID 4~5","UID 6~7"], + "ParamType":"int16", + "RetType":"int16" + }, + { + "TaskID":8, + "TaskName":"写配置参数", + "TaskBrief":"写模块运行时的配置参数", + "ParamInfo":["起爆MOS选择 0内部/1外部","通信信号源 0:rxh 1:rxl 2:rx","通信模式 1:差分 2:单端","起爆日志标记周期 0:不标记 1:5ms 2:10ms 3:20ms 4:50ms 5:10ms 6:150ms 7:200ms","UID长度","密码长度","模块版本"], + "ReturnInfo":[], + }, + { + "TaskID":9, + "TaskName":"检测配置参数", + "TaskBrief":"检测模块运行时的配置参数", + "ParamInfo":["起爆MOS选择 0内部/1外部","通信信号源 0:rxh 1:rxl 2:rx","通信模式 1:差分 2:单端","起爆日志标记周期 0:不标记 1:5ms 2:10ms 3:20ms 4:50ms 5:10ms 6:150ms 7:200ms","UID长度","密码长度","模块版本"], + "ReturnInfo":[], + }, + { + "TaskID":10, + "TaskName":"验证配置", + "TaskBrief":"验证配置", + "ParamInfo":["掩码低2byte","掩码高2byte","比较低2byte","比较高2byte"], + "ReturnInfo":[], + }, + { + "TaskID":11, + "TaskName":"模拟注码", + "TaskBrief":"写入测试用的UID和密码,此任务之前要先写配置参数", + "ParamInfo":[], + "ReturnInfo":[], + }, + { + "TaskID":12, + "TaskName":"模拟注码验证", + "TaskBrief":"写入测试用的UID和密码,此任务之前要先写三码数据", + "ParamInfo":[], + "ReturnInfo":[], + }, + { + "TaskID":13, + "TaskName":"芯片自检", + "TaskBrief":"芯片自检", + "ParamInfo":["自检模式","自检时间ms"], + "ReturnInfo":["自检模式0x08的回读数据"], + }, + { + "TaskID":14, + "TaskName":"状态检测", + "TaskBrief":"状态码比较", + "ParamInfo":["掩码参数","比较结果值"], + "ReturnInfo":["状态值低2byte","状态值高2byte"], + }, + { + "TaskID":15, + "TaskName":"充电", + "TaskBrief":"充电", + "ParamInfo":["充电模式","充电分组"], + "ReturnInfo":[], + }, + { + "TaskID":16, + "TaskName":"放电", + "TaskBrief":"放电", + "ParamInfo":[], + "ReturnInfo":[], + }, + { + "TaskID":17, + "TaskName":"写延时", + "TaskBrief":"写延时", + "ParamInfo":["延时ms"], + "ReturnInfo":[], + }, + { + "TaskID":18, + "TaskName":"读延时", + "TaskBrief":"读延时", + "ParamInfo":[], + "ReturnInfo":["延时值ms"], + }, + { + "TaskID":19, + "TaskName":"时钟校准", + "TaskBrief":"时钟校准", + "ParamInfo":["校准周期ms","校准脉冲数"], + "ReturnInfo":["校准值,真实值的4倍"], + }, + { + "TaskID":20, + "TaskName":"设置通信地址", + "TaskBrief":"设置通信地址", + "ParamInfo":["通信地址","设置模式 0:系统 1:UID配置地址 2:快速配置","延时"], + "ReturnInfo":["延时"], + }, + { + "TaskID":21, + "TaskName":"状态巡检", + "TaskBrief":"测试系统只能巡检一个地址,起始地址应该大于1,结束地址小于1024,两个地址差值应该小于256", + "ParamInfo":["起始地址","结束地址","状态码"], + "ReturnInfo":["地址结果"], + }, + { + "TaskID":22, + "TaskName":"起爆使能", + "TaskBrief":"起爆使能", + "ParamInfo":[], + "ReturnInfo":[], + }, + { + "TaskID":23, + "TaskName":"起爆检测", + "TaskBrief":"起爆", + "ParamInfo":["采样超时0.01ms","起爆电流AD","延迟采样ms"], + "ReturnInfo":["等待时间 0.01ms"], + }, + { + "TaskID":24, + "TaskName":"写入缓存数据", + "TaskBrief":"写入缓存数据", + "ParamInfo":["MTP地址","缓存地址","写入字节数"], + "ReturnInfo":[], + }, + { + "TaskID":25, + "TaskName":"验证缓存数据", + "TaskBrief":"验证缓存数据", + "ParamInfo":["MTP地址","缓存地址","写入字节数"], + "ReturnInfo":[], + }, + { + "TaskID":26, + "TaskName":"关总线", + "TaskBrief":"关总线", + "ParamInfo":[], + "ReturnInfo":[], + }, + { + "TaskID":27, + "TaskName":"升级", + "TaskBrief":"EW模块升级 升级模式 0:无app时升级 1:无条件升级", + "ParamInfo":["充电时间 ms","app启动时间 ms","总线关断时间 ms","升级模式"], + "ReturnInfo":["错误代码"], + "CommTestCmd":"ResistorSample", + }, + { + "TaskID":28, + "TaskName":"充能统计", + "TaskBrief":"充能统计", + "ParamInfo":["充电挡位","充电超时0.1us","充电电流判线 AD值","充末电流结束值 0.1uA","充电最长时间 0.1s","充电高压保持时间 0.1s"], + "ReturnInfo":["充能值 0.1ms","充末电流 0.1uA","充电最大电流 0.1mA","充电抖动幅值 adv"], + }, + { + "TaskID":29, + "TaskName":"异常判定", + "TaskBrief":"对已检项目进行异常判定,如果异常判定结果不在过滤范围内,则此任务失败", + "ParamInfo":["过滤值1","过滤值2","过滤值3","过滤值4","过滤值5","过滤值6","过滤值7","过滤值8","过滤值9","过滤值10",], + "ReturnInfo":[], + }, + { + "TaskID":30, + "TaskName":"重新执行任务", + "TaskBrief":"重新执行指定序号的任务,本次执行会覆盖之前的结果", + "ParamInfo":["需要重新执行的任务序号"], + "ReturnInfo":[], + }, + { + "TaskID":31, + "TaskName":"写三码数据", + "TaskBrief":"写入缓存的三码数据,此任务之前要先写配置参数", + "ParamInfo":[], + "ReturnInfo":[], + }, + { + "TaskID":32, + "TaskName":"校验三码数据", + "TaskBrief":"验证写入的三码数据,此任务之前要先写三码数据", + "ParamInfo":[], + "ReturnInfo":[], + "CommTestCmd":"ResistorSample", + }, + { + "TaskID":33, + "TaskName":"配置三码数据到小板", + "TaskBrief":"先把三码数据写入小板缓存,然后才能使用三码绑定任务", + "ParamInfo":["uid,pwd长度","数据0,1","数据2,3","数据4,5","数据6,7","数据8,9","数据10,11","数据12,13","数据14,15","数据16,17",], + "ReturnInfo":[], + }, + { + "TaskID":34, + "TaskName":"任务插槽", + "TaskBrief":"程序可以动态添加要执行的任务,此任务将执行所有序号匹配的动态任务", + "ParamInfo":["插槽序号"], + "ReturnInfo":[], + }, + { + "TaskID":35, + "TaskName":"读取MTP", + "TaskBrief":"从指定mtp地址读取数据", + "ParamInfo":["mtp地址(4byte寻址)","读取长度(byte)",], + "ReturnInfo":["数据0,1","数据2,3","数据4,5","数据6,7","数据8,9","数据10,11","数据12,13","数据14,15",], + }, + { + "TaskID":36, + "TaskName":"写入MTP", + "TaskBrief":"写入数据到指定mtp地址", + "ParamInfo":["mtp地址(4byte寻址)","写入长度(byte)","数据0,1","数据2,3","数据4,5","数据6,7","数据8,9","数据10,11","数据12,13","数据14,15",], + "ReturnInfo":[], + }, + { + "TaskID":37, + "TaskName":"设置电阻校准值", + "TaskBrief":"电阻测量的校准值,不建议将此任务添加进方案中", + "ParamInfo":["电阻校准值"], + "ReturnInfo":[], + }, + { + "TaskID":38, + "TaskName":"读取流水号", + "TaskBrief":"读取27bit的流水号数据,对比失败则此任务失败", + "ParamInfo":["要校验的流水号低2字节","要校验的流水号高2字节"], + "ReturnInfo":["读取的流水号低2字节","读取的流水号高2字节"], + }, + { + "TaskID":39, + "TaskName":"写入流水号", + "TaskBrief":"采用读改写的方式写入27bit的流水号数据", + "ParamInfo":["要写入的流水号低2字节","要写入的流水号高2字节"], + "ReturnInfo":[], + }, + { + "TaskID":40, + "TaskName":"写固定延时", + "TaskBrief":"写入延时并掉电保存,需要复位后刷新", + "ParamInfo":["延时值ms"], + "ReturnInfo":[], + }, + { + "TaskID":41, + "TaskName":"复位", + "TaskBrief":"0复位至bootloader,1复位至app", + "ParamInfo":["复位类型"], + "ReturnInfo":[], + }, +] + + + + +_g_jq_task_table=[ + { + "TaskID": 0, + "TaskName": "电源准备", + "TaskBrief": "检测前校准检测过程中需要使用的电压,便于检测过程中快速输出电压。电压范围55~270", + "ParamInfo": ["预设电压1", "预设电压2", "预设电压3", "预设电压4", "预设电压5", "预设电压6", "预设电压7", "预设电压8", "预设电压9", "预设电压10",], + "ReturnInfo": [], + }, { + "TaskID": 1, + "TaskName": "上电充能", + "TaskBrief": "统计上电瞬间,模块功耗。电流计数方式 A = 3.3*ADC/4096/510/11", + "ParamInfo": ["总线电压", "采样超时0.1ms", "计时启停ADC"], + "ReturnInfo": ["总线电压", "大于启停的时间"], + "CommTestCmd": "PowerOn", + }, { + "TaskID": 2, + "TaskName": "设置总线电压", + "TaskBrief": "设置总线电压为预设电压中的值", + "ParamInfo": ["总线电压"], + "ReturnInfo": ["总线电压"], + "CommTestCmd": "SetBusV", + }, { + "TaskID": 3, + "TaskName": "获取总线电流", + "TaskBrief": "获取总线正反两个极性电流", + "ParamInfo": [], + "ReturnInfo": ["总线正电流", "总线反电流"], + }, { + "TaskID": 4, + "TaskName": "扫描UID", + "TaskBrief": "芯片通信测试,分配网络地址。芯片复位后,第一条通信测试命令", + "ParamInfo": ["使1/失0反码采集", "使0/失1UID全0验证"], + "ReturnInfo": ["最大反馈电流", "最大反馈时间", "最小反馈电流", "最小反馈时间", "1字节", "3字节", "5字节", "7字节"], + }, { + "TaskID": 5, + "TaskName": "密码验证", + "TaskBrief": "芯片密码验证", + "ParamInfo": ["0码/1原码验证"], + "ReturnInfo": [], + }, { + "TaskID": 6, + "TaskName": "读取芯片代码", + "TaskBrief": "读取芯片代码", + "ParamInfo": [], + "ReturnInfo": ["2字节代码"], + }, { + "TaskID": 7, + "TaskName": "OTP检测", + "TaskBrief": "对OTP数据进行检测,可屏蔽检测区域", + "ParamInfo": ["1关/0检UID密码为0", "1关/0检延时保留区为0", "1关/0检用户区为0"], + "ReturnInfo": [], + "CommTestCmd": "OTPCheck", + }, { + "TaskID": 8, + "TaskName": "工厂程测检测", + "TaskBrief": "芯片出厂检测,会在24 25区写0xFF", + "ParamInfo": [], + "ReturnInfo": [], + }, { + "TaskID": 9, + "TaskName": "读芯片状态", + "TaskBrief": "将芯片状态值与参数值进行算术与操作,等于参数值表示执行成功", + "ParamInfo": ["状态值掩码"], + "ReturnInfo": [], + }, { + "TaskID": 10, + "TaskName": "写工厂信息", + "TaskBrief": "在OTP 20~23区间写入工厂数据", + "ParamInfo": ["2字节数据", "2字节数据"], + "ReturnInfo": [], + }, { + "TaskID": 11, + "TaskName": "充能统计", + "TaskBrief": "充能统会发送充电命令,计电流判线设定值,从上升到下降的时间。同时记录充过程中最大电流。以及结束高压充电的总线电流和充电电流监控时间。充电电流判线计数公式 电流=AD/4093*3.3/100/11", + "ParamInfo": ["超时0.1us", "电流判线AD", "充电结束值0.1uA", "充电超时0.1S", "电流监控0.1S"], + "ReturnInfo": ["充能值0.1ms", "充末电流0.1uA", "最大充电电流0.1mA", "充电抖动ADV"], + }, { + "TaskID": 12, + "TaskName": "充电电压检测", + "TaskBrief": "由高向低扫描芯片电压检测值,扫描失败返回值为0", + "ParamInfo": ["起始DAC", "结束DAC"], + "ReturnInfo": ["扫描通过的DAC"], + }, { + "TaskID": 13, + "TaskName": "延时等待", + "TaskBrief": "延时流程,同时可以启动总线电流监测 设置单位0.1S。波动DAC换算 Vad/4096*3.3/100/11", + "ParamInfo": ["延时时间", "使1/失0电流监控"], + "ReturnInfo": ["电流波动DAC"], + }, { + "TaskID": 14, + "TaskName": "写延时", + "TaskBrief": "向延时寄存器写入数据", + "ParamInfo": ["延时"], + "ReturnInfo": [], + }, { + "TaskID": 15, + "TaskName": "读延时", + "TaskBrief": "读延时寄存器", + "ParamInfo": [], + "ReturnInfo": ["延时值"], + }, { + "TaskID": 16, + "TaskName": "时钟校准", + "TaskBrief": "发送校准脉冲", + "ParamInfo": ["脉冲周期", "脉冲个数"], + "ReturnInfo": [], + }, { + "TaskID": 17, + "TaskName": "放电", + "TaskBrief": "发送放电命令,使能快速放电,还需要配置放电时间。快速放电仅JQ2012才有。放电时间单位0.1S,该值应该大于0快速放电才有效", + "ParamInfo": ["0/1使能快速", "快速时间"], + "ReturnInfo": [], + }, { + "TaskID": 18, + "TaskName": "复位放电", + "TaskBrief": "执行复位和放电,并检测复测成功", + "ParamInfo": [], + "ReturnInfo": [], + }, { + "TaskID": 19, + "TaskName": "起爆使能", + "TaskBrief": "发送起爆使能命令", + "ParamInfo": [], + "ReturnInfo": [], + }, { + "TaskID": 20, + "TaskName": "起爆充能", + "TaskBrief": "发送起爆命令后,检测起爆完成后对电容的充电。判断电流上升沿到下降沿的时间。充能电流ADC/4096*3.3/100/21", + "ParamInfo": ["电流判线AD", "起爆脉冲个数", "延时采集时间"], + "ReturnInfo": ["充能时间", "充电电流", "充电电流波动"], + }, { + "TaskID": 21, + "TaskName": "使能通讯末电流采集", + "TaskBrief": "启动命令通讯结束后电流采集,与获取通讯电流配合。两个任务间应该避免充电、OTP写和起爆操作", + "ParamInfo": [], + "ReturnInfo": [], + }, { + "TaskID": 22, + "TaskName": "获取通讯末电流", + "TaskBrief": "获取通讯电流配合与使能通讯末电流采集,获取两个任务间,通讯完成后的最大电流", + "ParamInfo": [], + "ReturnInfo": ["通讯末电流"], + }, { + "TaskID": 23, + "TaskName": "写OTP数据", + "TaskBrief": "向芯片OTP中写入数据", + "ParamInfo": ["OTP地址", "数据长度", "1数据", "3数据", "5数据", "7数据"], + "ReturnInfo": [], + }, { + "TaskID": 24, + "TaskName": "读OTP数据", + "TaskBrief": "从芯片OTP中读取数据", + "ParamInfo": ["OTP地址", "数据长度"], + "ReturnInfo": ["nBytesOTP数据"], + }, { + "TaskID": 25, + "TaskName": "清除起爆命令", + "TaskBrief": "起爆脉冲重新计算", + "ParamInfo": [], + "ReturnInfo": [], + }, { + "TaskID": 26, + "TaskName": "关总线", + "TaskBrief": "关闭总线输出", + "ParamInfo": [], + "ReturnInfo": [], + }, { + "TaskID": 27, + "TaskName": "缓存写入OTP", + "TaskBrief": "缓存数据写入OTP数据", + "ParamInfo": ["OTP 地址", "缓存区起始", "写入数据长度"], + "ReturnInfo": [], + }, + { + "TaskID": 28, + "TaskName": "三码绑定", + "TaskBrief": "注码检测指令使用,直接使用命令中的三码数据", + "ParamInfo": [], + "ReturnInfo": [], + }, { + "TaskID": 29, + "TaskName": "验证三码", + "TaskBrief": "验证芯片三码数据,直接使用命令中的三码数据", + "ParamInfo": [], + "ReturnInfo": [], + }, { + "TaskID": 30, + "TaskName": "电容压差", + "TaskBrief": "充电后,总线断电测试电容给芯片供电,评估芯片延时功耗", + "ParamInfo": ["断电时间0.1S"], + "ReturnInfo": ["压差mV"], + }, { + "TaskID": 31, + "TaskName": "桥丝电阻测试", + "TaskBrief": "测量桥丝阻值。可配置测量模式 0 4线制, 1 2线1-4通,2 2线2-3通", + "ParamInfo": ["测量模式"], + "ReturnInfo": ["电阻0.01Ω"], + }, { + "TaskID": 32, + "TaskName": "使能OTP", + "TaskBrief": "OTP使能命令", + "ParamInfo": [], + "ReturnInfo": [], + }, { + "TaskID": 33, + "TaskName": "写版本", + "TaskBrief": "写入模块版本号到OTP 20地址,该值应该小于32", + "ParamInfo": ["版本号"], + "ReturnInfo": [], + }, { + "TaskID": 34, + "TaskName": "读版本", + "TaskBrief": "获取写入的版本号", + "ParamInfo": [], + "ReturnInfo": ["版本号"], + }, { + "TaskID": 35, + "TaskName": "写缓存数据", + "TaskBrief": "将系统缓存区的数据写入到OTP中,主要用于写工厂信息", + "ParamInfo": ["OTP地址", "缓存地址", "写入长度"], + "ReturnInfo": [], + }, { + "TaskID": 36, + "TaskName": "验证缓存数据", + "TaskBrief": "对比缓存数据与OTP数据", + "ParamInfo": ["OTP地址", "缓存地址", "验证长度"], + "ReturnInfo": [], + }, + { + "TaskID": 37, + "TaskName": "验证延时时间", + "TaskBrief": "验证延时和otp是否相等", + "ParamInfo": [], + "ReturnInfo": [], + }, + { + "TaskID": 38, + "TaskName": "切换总线极性", + "TaskBrief": "反复切换总线极性,输出最后一次极性切换后的电流", + "ParamInfo": ["间隔时间ms", "切换次数"], + "ReturnInfo": [], + }, + { + "TaskID": 39, + "TaskName": "异常判定", + "TaskBrief": "对已检项目进行异常判定,如果异常判定结果不在过滤范围内,则此任务失败", + "ParamInfo": ["过滤值1", "过滤值2", "过滤值3", "过滤值4", "过滤值5", "过滤值6", "过滤值7", "过滤值8", "过滤值9", "过滤值10",], + "ReturnInfo": [], + }, + { + "TaskID": 40, + "TaskName": "重新执行任务", + "TaskBrief": "重新执行指定序号的任务,本次执行会覆盖之前的结果", + "ParamInfo": ["需要重新执行的任务序号"], + "ReturnInfo": [], + }, + { + "TaskID": 41, + "TaskName": "配置三码数据到小板", + "TaskBrief": "先把三码数据写入小板缓存,然后才能使用三码绑定任务", + "ParamInfo": ["uid,pwd长度", "数据0,1", "数据2,3", "数据4,5", "数据6,7", "数据8,9", "数据10,11", "数据12,13", "数据14,15", "数据16,17",], + "ReturnInfo": [], + }, + { + "TaskID": 42, + "TaskName": "任务插槽", + "TaskBrief": "程序可以动态添加要执行的任务,此任务将执行所有序号匹配的动态任务", + "ParamInfo": ["插槽序号"], + "ReturnInfo": [], + }, + { + "TaskID": 43, + "TaskName": "设置电阻校准值", + "TaskBrief": "电阻测量的校准值,不建议将此任务添加进方案中", + "ParamInfo": ["电阻校准值"], + "ReturnInfo": [], + }, + { + "TaskID": 44, + "TaskName": "写入流水号", + "TaskBrief": "采用读改写的方式写入27bit的流水号数据", + "ParamInfo": ["要写入的流水号低2字节", "要写入的流水号高2字节"], + "ReturnInfo": [], + }, + { + "TaskID": 45, + "TaskName": "读取流水号", + "TaskBrief": "读取27bit的流水号数据,对比失败则此任务失败", + "ParamInfo": ["要校验的流水号低2字节", "要校验的流水号高2字节"], + "ReturnInfo": ["读取的流水号低2字节", "读取的流水号高2字节"], + }, + { + "TaskID": 46, + "TaskName": "写固定延时", + "TaskBrief": "写入延时并掉电保存", + "ParamInfo": ["延时值ms"], + "ReturnInfo": [], + }, +] + + + +_g_ext_task_table=[ + { + "TaskID": 100, + "TaskName": "异常判定", + "TaskBrief": "对已检项目进行异常判定,如果异常判定结果不在过滤范围内,则此任务失败", + "ParamInfo": ["过滤值1", "过滤值2", "过滤值3", "过滤值4", "过滤值5", "过滤值6", "过滤值7", "过滤值8", "过滤值9", "过滤值10",], + "ReturnInfo": [], + }, + { + "TaskID": 101, + "TaskName": "重新执行任务", + "TaskBrief": "重新执行指定序号的任务,本次执行会覆盖之前的结果", + "ParamInfo": ["需要重新执行的任务序号"], + "ReturnInfo": [], + }, + { + "TaskID": 102, + "TaskName": "配置三码数据到小板", + "TaskBrief": "先把三码数据写入小板缓存,然后才能使用三码绑定任务", + "ParamInfo": ["uid,pwd长度", "数据0,1", "数据2,3", "数据4,5", "数据6,7", "数据8,9", "数据10,11", "数据12,13", "数据14,15", "数据16,17",], + "ReturnInfo": [], + }, + { + "TaskID": 103, + "TaskName": "任务插槽", + "TaskBrief": "程序可以动态添加要执行的任务,此任务将执行所有序号匹配的动态任务", + "ParamInfo": ["插槽序号"], + "ReturnInfo": [], + }, + { + "TaskID": 104, + "TaskName": "设置电阻校准值", + "TaskBrief": "电阻测量的校准值,不建议将此任务添加进方案中", + "ParamInfo": ["电阻校准值"], + "ReturnInfo": [], + }, +] + + + + +if __name__ == "__main__": + print(_g_ew_task_table[3]) + print(is_number("三")) + diff --git a/updata/task_table_fun.py b/updata/task_table_fun.py new file mode 100644 index 0000000..f5a76cb --- /dev/null +++ b/updata/task_table_fun.py @@ -0,0 +1,43 @@ + + + + +def is_number(s:str): + try: # 如果能运行float(s)语句,返回True(字符串s是浮点数) + float(s) + return True + except ValueError: # ValueError为Python的一种标准异常,表示"传入无效的参数" + pass # 如果引发了ValueError这种异常,不做任何事情(pass:不做任何事情,一般用做占位语句) + try: + import unicodedata # 处理ASCii码的包 + unicodedata.numeric(s) # 把一个表示数字的字符串转换为浮点数返回的函数 + return True + except (TypeError, ValueError): + pass + return False + + + +# 任务0的输入函数,逗号隔开,输入小数 +def input_task0(text:str): + ret=bytearray() + sp=text.split(",") + for i in sp: + if(is_number(i)): + num=int(float(i)*10) + ret.append(num&0xff) + ret.append((num>>8)&0xff) + return ret + +# 解析任务0的返回值 +def output_task0(data:bytearray): + pass + + + + + + + + + diff --git a/updata/udp.py b/updata/udp.py index 265664a..9dac39e 100644 --- a/updata/udp.py +++ b/updata/udp.py @@ -121,7 +121,7 @@ class myudp(QObject): for i in range(len(cmd_list)): resoult=self.send(ip,cmd_list[i][0],cmd_list[i][1],cmd_list[i][2]) if(resoult!=True): - err_str="cmd="+cmd_list[i][0]+" filed." + err_str="cmd="+cmd_list[i][0]+" failed." print(STR_RED,ip,"|"+err_str,STR_END) self.end_signal.emit(ip,False,err_str) return diff --git a/updata/updata_ssh.py b/updata/updata_ssh.py index 0af4639..eec6752 100644 --- a/updata/updata_ssh.py +++ b/updata/updata_ssh.py @@ -94,7 +94,7 @@ class data_box(QObject): self.lable.setText(title) self.text = QLabel(father) self.text.setObjectName(u"text") - self.text.setGeometry(QRect(40,x+20,450,30)) + self.text.setGeometry(QRect(40,x+20,550,30)) self.text.setText(text) @@ -331,7 +331,7 @@ class updata_dlg(QWidget): self.sstate_but.setText("小板在线状态") self.sstate_but.clicked.connect(self.sstate_but_clicked) self.sstate_but.setToolTip("点击此按钮查看小板在线情况,显示在线小板的地址。") - self.sstate_but.setEnabled(False) + # self.sstate_but.setEnabled(False) # self.sstate_but.setToolTipDuration(1) # 初始化添加文件按钮 @@ -878,9 +878,9 @@ class updata_dlg(QWidget): # u.rate_signal.connect(self.rate_slot) # u.end_signal.connect(self.end_slot) u.data_signal.connect(self.data_slot) - updata_cmd="mcu comm_test" + updata_cmd="slave_info" cmd_list=[] - cmd_list.append((updata_cmd,2,5))# 两次返回,五秒超时 + cmd_list.append((updata_cmd,1,5))# 1次返回,五秒超时 t = threading.Thread(target=u.bordcast, args=(cmd_list,)) t.start() @@ -920,7 +920,7 @@ class updata_dlg(QWidget): slave_len=len(self.get_selected_slave()) if(len(self.data_list)>=slave_len): w=QDialog(self.widget) - w.resize(703-150, slave_len*50+20) + w.resize(800-150, slave_len*50+20) w.setWindowTitle("返回数据展示") self.creat_databoxs(w,self.data_list) w.show()