TG-PlatformPlus/readme.md

6.7 KiB
Raw Blame History

一、项目说明

本测试软件用于通过串口,对目标设备进行指令测试,指令解析,数据存储与分析等操作   

二、开发说明

指令脚本设计说明

1. 预置全局变量

_G

  • 类型class实例
  • 描述:程序启动时为空,生命周期为软件运行时间,可在不同指令中访问
  • 包含方法:
    • get(name: str) -> any
    • set(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优化