VSAR Python 小程序 — 用户使用说明
一、这是什么Python 小程序是 VSAR 里的一种可编程自动化工具在软件内直接编写 Python 脚本保存到当前工程一键运行后由软件在后台启动独立 Python 进程。脚本可控制测量启停、写日志、发送/等待 CAN 报文等适合快速验证、批量发报文、简单联调。软件自带 Python 3.13 运行环境一般无需单独安装 Python。与 C 语言小程序相比不用编译改完保存即可运行语法更接近日常脚本适合逻辑不复杂、迭代快的场景。二、如何创建与打开1. 菜单进入程序 → Python 小程序或子菜单「添加 Python 小程序」。2. 新建时可选择空模板空白代码发送一帧 CAN 报文、千帧递增、千帧正弦等内置示例便于照着改。3. 每个小程序对应工程目录{工程}/PythonApplet/PApp_{编号}/PApp.py。保存工程后下次打开会自动恢复已创建的小程序窗口。4. 工具栏可导入/导出.py文件或打开所在文件夹用外部编辑器改完后在 VSAR 中保存或重新加载。注意删除小程序窗口前须先停止运行否则会提示无法删除。三、编辑界面怎么用窗口大致分为代码区、内部 API 树通用 / 日志 / 测量 / CAN、示例与说明、运行日志。操作快捷键 / 入口说明保存CtrlS / 保存按钮写入当前工程的PApp.py设置里可勾选「执行前自动保存」静态检查CtrlF9内置 pylint 检查语法与严重错误结果在下方日志区运行F9先检查通过后再启动运行中代码区只读停止停止按钮结束当前脚本进程在左侧 API 树中点击函数名如can_send右侧会显示说明和示例片段可复制到代码区。运行时资源目录下还提供VSAR_API.json与树节点对应供界面解析说明。四、脚本必须满足的格式软件只识别带固定入口的脚本1.必须有名为__vsar_main的函数主逻辑写在这里。2.建议有__vsar_exit退出清理没有也能运行静态检查时会警告。典型结构import appimport channelimport canfrom VSARDllApi import VSAR_Candef __vsar_main():app.init() # 建议第一步初始化channel.start_measurement() # 启动测量与界面「启动测量」一致# 在此编写你的业务……channel.stop_measurement() # 结束测量def __vsar_exit():pass # 可选释放、收尾可使用import VSAR一次性引入app、channel、can等模块。运行时会自动将{VSAR 运行目录}/PythonApplet加入 Python 路径无需手动配置。五、常用 API用户视角5.1 模块与函数模块方法用途appinit()运行前初始化发送 CAN 前建议调用applog(级别, 文字)输出到 VSAR 日志窗口channelstart_measurement()启动测量channelstop_measurement()停止测量channelis_measurement()查询是否已在测量cancan_send(报文 [, 回调])发送一帧 CANcanwait_can_recv(报文, 超时毫秒 [, 回调])在限定时间内等待接收5.2 日志级别在脚本中import VSAR后可使用常量值含义LOG_LVL_DEBUG1调试LOG_LVL_INFO2信息LOG_LVL_SUCCESS3成功LOG_LVL_WARNING4警告LOG_LVL_ERROR5错误示例app.log(VSAR.LOG_LVL_INFO, 开始发送)5.3 CAN 报文结构VSAR_Can常用字段与总线配置一致方可生效字段说明canNoCAN 通道号Id帧 IDxtd标准帧 / 扩展帧dlcDLCbyteDataLen有效数据长度FData数据字节数组最多 64 字节发送示例from VSARDllApi import VSAR_Canmsg VSAR_Can()msg.canNo 0msg.Id 0x100msg.dlc 8msg.byteDataLen 8msg.FData[0] 0x11can.can_send(msg)菜单中的「千帧递增」「千帧正弦」示例演示循环发报文可直接运行后再修改 ID、周期与数据内容。5.4 返回值init、log、start_measurement、stop_measurement、can_send、wait_can_recv等返回ErrorCode0表示成功非 0 表示失败或超时可按需判断处理。六、推荐使用流程1.配置工程设备、CAN 通道、波特率等与平时抓包/发送一致。2.新建或打开小程序从空模板或 CAN 示例开始编写。3. 在__vsar_main中建议顺序app.init()→channel.start_measurement()→ 业务逻辑 →channel.stop_measurement()。4.CtrlF9静态检查确认日志区无严重错误E/F 类。5.F9运行观察状态栏与日志可用app.log输出中间状态。6. 结束后点击停止再修改代码切换工程前建议停止所有正在运行的小程序。七、工程目录说明路径说明{工程}/PythonApplet/PApp_{窗口ID}/PApp.py当前小程序源码{工程}/PythonApplet/PythonAppletList.json工程内已创建小程序的窗口 ID 列表{VSAR 运行目录}/PythonApplet/Python SDKPythonAPI、VSAR_API.json、示例脚本等{VSAR 运行目录}/Python313/内置 Python 与 pylint{VSAR 运行目录}/ScriptProcess.exe运行用户脚本的子进程程序{VSAR 运行目录}/PythonAppletManager.dllPython 与主进程通信的动态库由PythonAPI加载示例脚本路径相对 VSAR 运行目录PythonApplet/example/如空模板.py、发送一帧can报文示例.py等。八、常见问题现象处理建议提示找不到__vsar_main检查函数名拼写且源文件中包含该名称pylint 报 E/F 错误修正语法或未定义变量后再运行import 失败 / 无法连接从 VSAR 安装目录启动确认存在Python313、PythonApplet、ScriptProcess.exe、PythonAppletManager.dll发不出 CAN确认已start_measurement()通道号与界面配置一致硬件已连接收不到报文增大wait_can_recv超时核对通道、ID 与总线实际报文运行中无法保存或检查先点击停止属正常运行保护删除窗口失败须先停止小程序运行九、开发与架构简要本目录Business/PythonApplet为 VSAR 业务插件界面、工程保存、运行调度底层 SDK 位于SDK/PythonAppletManager管道协议、测量/CAN/日志与主进程对接。- 用户脚本由ScriptProcess.exe在子进程中执行。- 主进程通过命名管道\\.\pipe\runpy与PythonAppletManager.dll交换 JSON 协议消息。- Python 封装见PythonAPI/app.py、channel.py、can.py、VSARI.py、VSARDllApi.py。更完整的协议与模块说明可参考源码注释及SDK/PythonAppletManager各 API 实现。