6.7 KiB
一、项目说明
本测试软件用于通过串口,对目标设备进行指令测试,指令解析,数据存储与分析等操作
二、开发说明
指令脚本设计说明
1. 预置全局变量
_G
- 类型:class实例
- 描述:程序启动时为空,生命周期为软件运行时间,可在不同指令中访问
- 包含方法:
get(name: str) -> anyset(name: str, value: any) -> None
cmdInfo
- 类型:
dict - 描述:包含当前指令的信息
proInfo
- 类型:
dict - 描述:包含当前活动工程的信息
interfaceInfo
- 类型:
dict - 描述:包含指令执行所对应的接口的信息
userInfo
- 类型:
dict - 描述:包含当前登录用户的信息
2. 接口函数
finish()
- 参数:无
- 返回值:无
- 描述:调用此接口,指令运行结束。脚本中必须显式地调用此函数,否则指令将不会停止。
log_d(msg: str, color: str = 'blue')
- 参数:
msg: 日志内容color: 日志颜色
- 描述:输出DEBUG级别的日志到日志窗口。
log_i(msg: str, color: str = 'green')
- 参数:
msg: 日志内容color: 日志颜色
- 描述:输出INFO级别的日志到日志窗口。
log_w(msg: str, color: str = 'yellow')
- 参数:
msg: 日志内容color: 日志颜色
- 描述:输出WARNING级别的日志到日志窗口。
log_e(msg: str, color: str = 'red')
- 参数:
msg: 日志内容color: 日志颜色
- 描述:输出ERROR级别的日志到日志窗口。
scanf(title: str, msg: str, default: str) -> str
- 参数:
title: 标题msg: 信息default: 文本框默认内容
- 描述:在
start或者loop中调用此函数,会弹出输入框,供用户输入数据。此函数为阻塞式调用,函数返回前,指令不会往下执行。
alert(title: str, msg: str, timeout: int = 3000)
- 参数:
title: 标题msg: 信息timeout: 超时后自动关闭,0表示不自动关闭
- 描述:在
start或者loop中调用此函数,会弹出消息提示框。此函数为阻塞式调用,函数返回前,指令不会往下执行。
3. 回调函数
start()
- 描述:指令执行时,此函数将被首先执行。此函数运行在指令线程中,可以调用
sleep之类的函数,不会阻塞UI界面。 - 注意:此函数必须实现,否则会引起软件异常。
loop()
- 描述:指令执行时,此函数将被循环调用。此函数运行在指令线程中,可以调用
sleep之类的函数,不会阻塞UI界面。 - 注意:此函数必须实现,否则会引起软件异常。
recvDataHandler(data: bytearray)
- 参数:
data: 接收到的数据
- 描述:当指令对应的接口接收到数据时,此函数被调用。此函数运行在接口线程中,虽然不会阻塞UI界面,但影响接口的数据处理,设计时应快进快出,不要执行特别耗时的操作。
- 注意:此函数必须实现,否则会引起软件异常。
三、测试记录
2023/12/12
1、设备模型中的指令点击删除按钮无效
2、设备模型列表中条目拖拽到空白处,会新建一个条目,且无法删除
3、添加端口后,没有立即生效,在设备中无法选择,但经过一些其他操作后,设备的接口列表中才可以看到
4、指令getInfo拿到的attr是一个字符串,最好解析成dict
5、instructionModel的dataHandler连接到了接口的newDataArrive,但槽函数没有执行
2023/12/15
1、日志的颜色显示
2、日志等级过滤
3、日志顶部增加一个“锁定”按钮,解锁后,追加日志内容滚动条自动滚动到底部;锁定后,滚动条不再自动滚动,但可以手动滚动
4、日志GroupBox与左右的控件高度不一致,小了一点
5、日志控件弹出后,左边的控件内容最好能自适应调宽度
6、指令模型的指令,点击删除后,确认框选择否,会再弹一个确认框
7、设备模型的指令列表加一个“克隆”按钮,用于将选中指令复制一份,放在列表最后,名称后面加上“副本”
8、设备模型列表加一个“克隆”按钮,用于将选中设备模型复制一份,放在列表最后,名称后面加上“副本”
9、封装一个校验管理器,把现有校验方式,直接放到代码中,不再以脚本文件的形式加载
10、当D盘data文件夹不存在时,自动创建;工程放在data/projs目录下
11、遍历data/projs下的子目录,当子目录下不包含info.txt时,将其视为无效目录,直接丢弃
12、接口管理页面,删除一个接口时,需要弹出确认对话框
2023/12/25
1、某些情况下,指令响应正常,但响应时间接近超时时间,会出现先打印succeed,后打印超时失败
2、指令弹出输入框,如果用户取消输入,指令无法往下执行
2023/12/27
1、模型删除设备列表没同步,数据库实际已经删除,但界面没有同步
2、工程加载日志会崩,只在张老师机器复现,需要把DATA目录拷贝一份排查问题
3、influxDB管理 读配置文件,让用户选择使用哪个,不暴漏给用户编辑
4、任务管理界面可双击修改时间和循环
5、任务添加脚本,执行器内部通过回调判断任务是否结束,不依靠循环判断(用于定时结束任务)
6、任务显示执行进度
7、每个App独立读取配置文件和系统配置文件,不依赖QSettings,用脚本获取
8、App指令映射
9、为App开发提供测试环境,页面加载指定qml便于调试
10、权限管理,把所有权限按角色分配,用户登录以后,根据角色权限显示指定功能按钮
11、App 按流程执行指令,需要有虚拟指令处理跳转逻辑
2023/12/28
1、脚本中弹出窗口后,关闭主程序窗口,主程序不退出,弹出窗口不会自动关闭,手动关闭弹出窗口后主程序才可退出
2、在没有工程的状态下,新建一个工程,新工程不会被加载(脚本中打印的工程信息为空),重启程序才工程才会加载
3、脚本start执行出错后,脚本中的槽recvDataHandler没有disconnect,还会被调用到
2024/01/04
1、倒计时任务实时更新时间进度
2、打包时加入版本号,文件存入version.json,修改发版时间,窗口标题显示版本号
3、接口断开连接后主界面弹出提示,不在qml弹出
4、打包config.json时不覆盖更新
2024/01/08 1、帮助文档分任务和指令文档 2、关于加入发布历史 3、用户名密码存sqlite json字符串混淆加密 4、UI优化