C 小程序设计
ETStudio 的小程序功能基于开源 VS Code,具有良好的可扩展性。理论上支持多种语言,但为符合当前用户的使用习惯,主要支持 C++ 与 C 语言的小程序设计、编译与运行。小程序使用标准的 C/C++ 编译器,除可调用软件提供的函数接口外,用户也可以引用 Windows 系统资源或其他现有库进行扩展。
小程序的主要用途
小程序是 ETStudio 的重要扩展机制,使 ETStudio 能满足仿真、分析、测试与诊断等复杂需求,并持续扩展其功能。小程序的典型用途包括:
- 使用易理解的编程语言模拟节点或模块;
- 生成事件报文、周期报文或带有附加条件的重复报文;
- 使用 PC 键盘模拟操作按钮等人工操作事件;
- 模拟节点的定时或网络事件;
- 模拟多个时间驱动事件,每个事件实现特定行为;
- 模拟常规操作、诊断或生产流程;
- 模拟物理参数或报文的变化;
- 模拟模块或网络故障以评估容错/防错机制;
- 提供网络测试、诊断等功能性测试库。
代码编辑器简介
可通过主界面 Tools 下的 Code Editor 图标打开代码编辑器界面:

也可以双击节点或在节点上右键选择 Editor 打开代码编辑器:

界面要点

1. 活动栏(Activity Bar) 位置:界面左侧垂直栏。 功能:提供若干图标用于快速访问核心功能:
- 文件资源管理器:浏览项目文件与目录结构。
- 搜索:在项目中搜索代码或文件。
- 源代码管理:集成 Git 等版本控制操作(提交/推送)。
- 运行与调试:执行或调试程序。
- 扩展市场:浏览并安装扩展插件。
操作:点击图标切换功能视图,右键可自定义活动栏顺序。
2. 侧边栏(Sidebar) 位于活动栏右侧,展示所选图标对应的内容(例如文件树、扩展市场等)。可拖动边缘调整宽度。
3. 编辑区(Editor Area) 位于界面中间,是主要的代码编辑区域,支持多文件并排编辑、语法高亮与代码补全。
4. 状态栏(Status Bar) 位于界面底部,显示编码、语言模式、行列号、错误/警告提示等信息。
5. 命令面板(Command Palette)
按 Ctrl+Shift+P 或通过 View → Command Palette 调用,可执行各种命令(如切换语言、安装扩展等)。
6. 菜单栏(Menu Bar)
包含 File、Edit、View、Run、Terminal 等菜单,用于创建文件、保存、运行任务与打开设置等。
7. 终端(Terminal)
内置终端用于运行命令行操作(例如 npm install、运行 Python 脚本等),支持创建多个终端并切换 shell 类型(PowerShell、bash 等)。
8. 界面自定义 可通过命令面板或设置调整主题、布局、字体与快捷键等偏好。
9. 实用技巧
- 多光标编辑:
Alt+Click或Ctrl+Alt+↑/↓添加多个光标。 - 代码折叠:点击左侧折叠控制收起或展开代码块。
- 快速打开文件:
Ctrl+P后输入文件名快速定位。
创建并运行最小结构的小程序
在 File 菜单中点击 New File,创建例如 test.cpp 或 test.c 的小程序文件:

新建文件后会生成对应的编辑视图:

最小的 C 小程序示例(扩展名必须为 .cpp ,代码可以兼容C和C++):
#include "BaseMiniProgram.h"
void OnStart(){
}
void OnExit(){
}
添加示例输出代码:
#include "BaseMiniProgram.h"
void OnStart(){
show_console_message("started application...\\n");
}
void OnExit(){
show_console_message("finished application...\\n");
}
运行小程序时,会先执行 OnStart() 中的语句;程序结束时执行 OnExit(),上述示例将在控制台输出运行与结束信息:
访问全局变量
在 ETStudio 中通过 Setup → Global Variables 创建的系统变量,可在小程序中引用。示例:命名空间为 Test,变量名为 Button_1 与 Led_1:

在小程序中需要包含系统变量相关的头文件:
#include "BaseMiniProgram.h"
#include "SystemVariable.h" // 小程序的系统变量头文件
void OnStart(){
show_console_message("started application...\\n");
}
void OnExit(){
show_console_message("finished application...\\n");
}
给系统变量赋值:
Test::Button_1 = 1;
读取系统变量值:
testvalue = Test::button_1;
访问 DBC 与报文信号
发送报文
- 通过
dbc/ldf文件导入
点击 Add 并选择要导入的 dbc 文件;对 ldf 文件的操作相同。
报文接收事件

报文定义与发送
具体的报文定义和发送示例请参考 C 小程序示例。

事件类型与用法
具体的代码配置可参照示例工程中的实现。

定时器的使用
定时器相关的定义与发送请参考 C 小程序示例。

小程序与仪表盘的交互

小程序编译与调试
将脚本绑定到节点的建议流程:先确保编译通过,然后启动工程并运行测试。
运行前请先启动项目。
