16触发器工具 TriggerTool 使用说明
独立于设计器的自动打印工具:监听事件(文件 / 定时 / 串口 / 手动 / 网络HTTP / 数据库)→ 满足条件 → 加载 .iba 模板并打印。
16.1 基本概念
触发器 = 触发源(何时唤醒) + 触发条件(是否放行) + 动作(触发后做什么)
| 概念 | 说明 |
|---|---|
| 触发源 | 什么时候触发:文件监控、定时器、串口数据、手动、网络HTTP、数据库轮询 |
| 触发条件 | 可选表达式,成立才执行动作;不填 = 直接执行 |
| 动作 | 打印指定 .iba 模板(可注入数据、可调打印机 / 份数) |
16.2 界面布局
- 顶部工具栏:添加 / 删除触发器、保存 / 加载配置、启动 / 停止、测试触发
- 左侧列表:触发器列表(勾选 = 启用,点击 = 编辑该触发器)
- 右侧配置:基本信息、触发参数、触发条件、触发动作(模板 / 打印机)、数据映射
- 底部日志:实时显示触发 / 打印过程
16.3 文件监控(最常用)
- 「+ 添加触发器」,类型选 文件监控
- 监控目录:填写或浏览要监听的文件夹,如
D:\Triggers - 文件过滤:
*.txt只监听 txt;*.csv只监听 csv;*.*监听全部 - 触发动作:选择
.iba模板、打印机、打印模式(GDI / ZPL)、份数 - 打印成功后删除触发文件(可选):勾选后打印成功即删除源文件,避免重复触发 / 文件堆积;打印失败会保留文件以便重试
- 点 ▶ 启动
- 向目录中放入匹配文件 → 自动打印
关于重复触发:一次放入文件,系统可能产生"新建 + 多次修改"多个事件。工具已内置去重(同一文件在 2 秒内只触发一次),所以一份文件只打一次。若程序写文件耗时超过 2 秒可能再次触发,可勾选"删除触发文件"进一步避免。
16.4 定时器
- 类型选 定时器
- 间隔(ms):如
5000= 每 5 秒触发一次;60000= 每分钟 - 配置模板 / 打印机后启动,到点自动打印
16.5 手动
- 类型选 手动
- 配置模板 / 打印机后,点「测试触发」立即执行一次(也用于外部调用
ManualTrigger(Id))
16.6 串口
- 类型选 串口
- 串口号:自动列出电脑所有串口(可刷新);波特率:如
9600 - 串口每收到一行数据触发一次;数据字段见下方"触发条件变量"
16.7 网络HTTP触发
- 类型选 网络HTTP
- 端口(默认
8700)、路径(默认trigger) - 配置区会自动显示对方系统可调用的 URL 地址(本机回环 + 局域网 IP),示例带参数
- 对方系统访问
http://IP:端口/路径即触发,支持三种内容格式,多字段自动成为数据字段:- GET 查询参数:
http://IP:8700/trigger?批次=LOT1&数量=500 - POST 表单:
Content-Type: application/x-www-form-urlencoded,内容批次=LOT1&数量=500 - POST JSON:
Content-Type: application/json,内容{"批次":"LOT1","数量":500,"明细":{"客户":"ACME"}}- 嵌套对象用点号展开成字段:
明细.客户=ACME;数组保留原始 JSON 文本(字段JsonArray)
- 嵌套对象用点号展开成字段:
- 固定内置字段:
EventType=Network、Url、Body(原始 body)
- GET 查询参数:
- Token(可选):填了则对方请求必须携带凭证,否则返回
401且不触发- 传法任选其一:
?token=值参数 /X-Api-Token: 值头 /Authorization: Bearer 值
- 传法任选其一:
- 数据字段 = 请求参数名,用自定义字段名映射到模板变量
16.8 网络HTTP触发 — 测试方法(POSTMAN / Winsock 调试器)
返回值速查:200 OK = 接收并触发;401 = Token 不对;404 = 路径与配置不一致。
方法一:POSTMAN(推荐,格式全自动)
- GET:方法选
GET,URL 填http://127.0.0.1:8700/trigger,点 Params 加order=abc、batch=123,点 Send - POST 表单:方法
POST,Body →x-www-form-urlencoded,填order=abc、batch=123,Send - POST JSON:Body →
raw→ 类型选 JSON,内容如{"order":"abc","batch":123},Send - Token:GET 在 Params 加
token=值;或 Headers 加X-Api-Token: 值 - 端口 / 路径以工具界面显示的那条 URL 为准(不一定是 8700)
方法二:Winsock / 网络调试助手(裸 TCP)
调试器是"裸 TCP"工具,只负责发字节,HTTP 格式要自己手写:
- 目标 IP
127.0.0.1、端口同工具界面,点「连接」 - 发送框内输入(每行用回车换行,最后留一个空行):
GET /trigger?order=abc&batch=123 HTTP/1.1
Host: 127.0.0.1:8700
Connection: close
- 关键点:
- 「HEX 发送」必须关闭(默认文本发送即可)
- 头部结束后的空行不能少(服务器靠它判断头部结束);工具即使只发
\n换行也能正常触发(服务器已兼容\r\n\r\n与\n\n) - POST 时 Content-Length 必须与 body 字节数一致,中文按 UTF-8 计 3 字节 / 字(如
订单=值&批号=值= 20 字节) - 测试建议用英文参数名(
order/batch),再在映射里把「来源字段」填成对应名字,避免工具按 GBK 发送中文造成乱码
- 返回
OK、TriggerTool 日志打印出字段即通过
16.9 数据库触发(SQLite / MySQL / PostgreSQL / SQL Server / Oracle)
- 类型选 数据库,选数据库类型:
- SQLite → 选数据库文件(.db / .sqlite / .db3)
- MySQL / PostgreSQL / SQL Server / Oracle → 填服务器、端口、数据库、用户名、密码
- 端口默认值:MySQL
3306、PostgreSQL5432、SQL Server1433(可留空)、Oracle1521
- 端口默认值:MySQL
- 可点 测试连接 验证连接信息是否正确
- 查询SQL:
SELECT返回待处理行,如SELECT * FROM print_queue - 轮询间隔(ms):默认
5000 - 处理后SQL(可选):每行触发后执行,
{列名}引用行值,如DELETE FROM print_queue WHERE id={id} - 每行触发一次;行各列成为数据字段(列名 → 用自定义字段名映射)
16.10 触发条件(重点)
条件不填 = 任何触发事件都直接执行。填了 = 表达式成立才执行。
可用变量
| 变量 | 触发源 | 含义 | 示例 |
|---|---|---|---|
FileName | 文件 | 文件名(不含路径) | ok.txt |
FilePath | 文件 | 完整路径 | D:\Triggers\ok.txt |
EventType | 文件 | 事件类型 | Created(新建) Changed(修改) |
TriggerTime | 定时 | 触发时间 | 2026-08-03 12:00:00 |
Data | 串口 | 收到的一行数据 | M6x20 |
PortName | 串口 | 串口号 | COM1 |
Source | 手动 | 触发来源 | UI测试 |
语法
- 比较:
==!=><>=<= - 逻辑:
&&(且)||(或)!(非) - 字符串方法:
ContainsStartsWithEndsWith - 字符串常量用双引号包裹
常用示例
FileName == "ok.txt" // 只认 ok.txt
FileName.EndsWith("_print.csv") // 以 _print.csv 结尾
EventType == "Created" // 只在"新建"时触发(忽略修改)
FileName.Contains("urgent") && EventType == "Created"
!FileName.StartsWith("temp") // 排除 temp 开头
Data == "DONE" // 串口收到 DONE 才触发
16.11 数据映射(注入模板变量)
把触发数据填入模板变量,使标签内容随数据变化。
- 分隔符:自定义输入分隔符,把文件内容拆成多段
- 常见:逗号
,、斜杠/、分号;、制表符\t、回车换行\r\n - 多个分隔符用
|分隔,如,|\r\n= 逗号或回车换行都算分隔 - 留空 = 整个文件 = 1 个值
- 预设按钮可快速填入:逗号 / 斜杠 / 分号 / Tab / 换行 / 逗号或换行
- 常见:逗号
- 触发数据字段下拉选择:
字段1/字段2… → 有文件时 = 拆分后的第 1 / 2 / … 段;网络 / 数据库触发 = 收到的第 1 / 2 / … 个字段(按接收顺序)FileContent→ 整个文件文本FilePath/FileName/EventType/TriggerTime→ 事件数据Data→ 串口收到的数据- 网络 / 数据库的多字段也可用自定义字段名直接按名映射(更直观)
- 模板变量:填变量名(不含花括号),如模板里写
{Batch}就填Batch - 「+ 添加映射」
- 触发时,模板中的
{变量}会被对应数据替换
单字段示例
文件内容:LOT20260803,映射 FileContent → 批次 → 模板 {批次} = LOT20260803
多字段示例(CSV)
文件内容:LOT20260803,500,PO-2026-001
- 分隔符选 逗号 ,
- 映射三行:
字段1 → 批次
字段2 → 数量
字段3 → 单号
- 模板
{批次}/{数量}/{单号}=LOT20260803 / 500 / PO-2026-001
多字段示例(每行一个值)
文件内容:
LOT20260803
500
PO-2026-001
- 分隔符选 换行
- 映射:字段1→批次、字段2→数量、字段3→单号(同上)
16.12 配置持久化
- 点「保存配置」→ 写入程序目录
TriggerToolConfig.json - 点「加载配置」或下次启动自动加载
- 内容包括:所有触发器(类型 / 参数 / 条件 / 动作 / 数据映射)
16.13 打印模式
| 模式 | 适用 | 需要配置 |
|---|---|---|
| 驱动打印 | Windows 驱动打印机(普通激光 / 喷墨),跨打印机一致 | 打印机名 |
| ZPL 打印 | Zebra 兼容条码打印机,经 Windows 驱动发送原始 ZPL | 打印机名(需装好驱动) |
| 免驱ZPL | 绕过驱动,直接 TCP 发 ZPL 到打印机(Zebra 默认 9100) | 打印机 IP + 端口(默认 9100) |
- 驱动打印 / ZPL 打印:打印机下拉列出系统已安装打印机;选
(默认/自动)交给系统默认。 - 免驱ZPL:填打印机 IP(如
192.168.1.100)和端口(Zebra 默认9100),无需安装驱动。
16.14 快速测试方法
- 建一个简单模板(含变量,如
{FileName}) - 加文件监控触发器,目录指向一个空文件夹,过滤
*.txt - 点「启动」
- 用记事本新建一个
ok.txt放进目录 - 看底部日志:应出现"已触发 → 加载模板 → 注入变量 → 打印完成"
- 若不想真打印,可先不配打印机,观察日志中触发与模板加载是否正确