嵌入 C 语言脚本实现动态数据发送
什么是脚本发送
脚本发送让你在发送的数据里嵌入一小段 C 语言代码,代码的返回值会被自动替换到对应位置。这样你就可以发送不是固定死的数据——比如每次发都带上当前时间戳、或者自增序列号。
基本语法规则
在发送框中,用一对花括号包裹 C 代码片段即可:
Hello {time(NULL)} World
当你点击发送时,{time(NULL)} 会被替换成当前 Unix 时间戳。
常用脚本示例
自增序列号
{static int seq=0; seq++;}
第一次发 seq=1,第二次 seq=2,依次递增。static 关键字保证变量在多次发送之间保持值。
当前时间戳
{time(NULL)}
获取当前秒级时间戳。
16 进制时间戳
{char buf[16]; sprintf(buf, "%08X", time(NULL)); buf;}
用 sprintf 格式化输出,返回字符串指针。
随机数
{rand() % 1000}
生成 0 到 999 之间的随机整数。
动态脚本与 HEX 模式配合
脚本的返回值会自动按当前编码和模式处理。在 HEX 模式下,返回的整数会被转为对应的字节序列发出。
死循环防护
V5.15 修复了一个安全问题:之前如果脚本里不小心写了死循环(比如 while(1);),软件会卡死。现在可以控制结束发送——避免了调试时的意外。
注意事项
- 脚本中声明的变量,如果想跨多次发送保持值,必须加
static关键字。 - 脚本执行环境有沙箱限制,不能调用系统级 API。
- 多连接场景下,脚本在哪个连接发送都可以,但
static变量是全局共享的。
实用场景
场景:模拟心跳包
设备需要每秒发一次心跳,心跳里带自增序号。配合"循环发送"功能(间隔 1000ms),发送内容写:
HEARTBEAT seq={static int seq=0; seq++;}
就能模拟真实设备的心跳行为。