LLCOM

LLCOM

开源项目 开源工具包

带Lua脚本引擎的串口调试工具,适合自定义收发、自动应答和协议解析,支持灵活的数据处理逻辑。

核心特性

  • Lua脚本引擎
  • 自定义收发
  • 自动应答
  • 协议解析

产品介绍

LLCOM 功能详细介绍

概述

LLCOM 是一款基于 C# WPF (.NET Framework) 开发的、内置 Lua 脚本引擎 的高自由度串口调试工具,由 chenxuuu 开发维护。核心亮点是通过 Lua 脚本实现完全可编程的收发逻辑、自动应答、协议解析与自动化测试。遵循 Apache-2.0 许可证。

  • 项目地址:https://github.com/chenxuuu/llcom
  • 当前版本:1.1.3.9
  • 运行平台:Windows
  • 部署方式:单文件 `llcom.exe`,双击即运行
  • 技术栈:C# WPF + Lua (NLua/MoonSharp 等托管 Lua 运行时)

核心功能模块

1. 通用串口收发基础

  • 编码模式:HEX / 文本 (ASCII/UTF-8) 切换
  • 显示增强:时间戳(精度可配)、发送/接收分色、行号、字节计数
  • 串口参数:波特率(300~921600)、数据位/停止位/校验/流控全可配、自动枚举/刷新
  • 日志保存:自动/手动保存收发记录到文本文件,支持按大小/时间分卷

2. Lua 脚本引擎(核心差异化功能)

  • 运行时:嵌入式 Lua 5.x (通过 NLua 或 MoonSharp),沙箱隔离,禁止危险 OS 调用
  • 脚本上下文 API

  -- 串口操作
  serial.open(portName, baudrate, parity, dataBits, stopBits)
  serial.close()
  serial.write(bytes)           -- 发送字节表 {0x01, 0x03, ...}
  serial.writeHex("01 03 00 00") -- 发送 HEX 字符串
  serial.read(timeoutMs)        -- 读取返回字节表
  serial.onData = function(data) ... end  -- 接收回调

  -- 协议辅助
  crc16.modbus(bytes)           -- 返回 CRC16-Modbus 校验码
  crc32.ieee(bytes)
  bit.band/bor/bxor/lshift/rshift -- 位运算库
  struct.pack/unpack(fmt, ...)  -- 打包/解包 (如 ">HHf")

  -- 界面/日志
  log.info/warn/error(msg)
  ui.setStatus(text)
  ui.addChartPoint(seriesName, value)
  ui.exportCsv(filename, dataTable)

  -- 定时/延时
  timer.setTimeout(ms, callback)
  timer.setInterval(ms, callback)
  timer.clear(id)

  -- 持久化配置
  config.set(key, value)
  config.get(key, default)
  • 脚本管理:多标签页编辑器(语法高亮/行号/括号匹配)、运行/暂停/停止/单步调试(基础)、输出控制台、错误堆栈定位
  • 自动加载:启动时可指定默认脚本自动运行
  • 热重载:修改脚本保存后可点击“重载”无需重启

3. 典型脚本应用场景

场景 脚本实现要点
自定义协议自动应答 帧头/长度/校验解析 → 根据命令字分发 → 动态构造响应帧 → 延时发送
压力/自动化测试 循环发送测试帧 → 统计成功率/延迟 → 生成 CSV 报告 → 断言判定 PASS/FAIL
数据预处理/转发 接收原始帧 → 解密/解压/校验 → 重新编码 → 转发至 TCP/MQTT/HTTP
协议逆向辅助 捕获收发 → 标注字段 → 导出结构化 JSON → 辅助人工分析

4. 串口监控组件

  • 项目源码另附 `serial_monitor_rs` (Rust 实现) 与 Web 适配层,提供高性能串口抓包/过滤/导出能力,可独立集成到其他工具

依赖与第三方库

许可证 用途
System.IO.Ports MIT 串口通讯
Newtonsoft.Json MIT 配置/导出 JSON
Costura.Fody (可选) MIT 单文件打包

部署与运行


REM 直接运行
llcom.exe

REM 命令行参数 (如支持)
llcom.exe --script=auto.lua --port=COM3 --baud=115200
  • 首次运行在同目录生成 `config.json` (串口参数/窗口状态/脚本列表)
  • 脚本文件建议放 `scripts/` 子目录,支持相对路径引用

适用场景与优势

场景 优势
设备从站仿真 无需写 C# 服务端,几十行 Lua 实现完整状态机
自动化回归测试 脚本驱动全流程,CI/CD 集成友好
现场运维应急 单文件、无安装、U 盘带走、脚本随身携带
教学/原型开发 可视化串口+可编程逻辑,降低上手门槛

产品明细图

LLCOM
LLCOM
LLCOM
LLCOM

详细使用教程

LLCOM 详细使用教程

概述

LLCOM 是一款基于 C# WPF (.NET Framework) 开发的、内置 Lua 脚本引擎 的高自由度串口调试工具,由 chenxuuu 开发维护。核心亮点是通过 Lua 脚本实现完全可编程的收发逻辑、自动应答、协议解析与自动化测试。遵循 Apache-2.0 许可证。

  • 项目地址:https://github.com/chenxuuu/llcom
  • 当前版本:1.1.3.9
  • 运行平台:Windows
  • 部署方式:单文件 `llcom.exe`,双击即运行
  • 技术栈:C# WPF + Lua(NLua/MoonSharp 托管 Lua 运行时)

快速开始

1. 直接运行


双击 llcom.exe

首次运行在同目录生成 `config.json`(串口参数/窗口状态/脚本列表)。

2. 命令行启动


llcom.exe --script=auto.lua --port=COM3 --baud=115200

3. 连接串口

  1. 启动程序后,选择 COM 端口(自动枚举)
  2. 设置 波特率(300~921600)
  3. 配置数据位/停止位/校验/流控
  4. 点击 打开串口

核心功能详解

通用串口收发基础

  • 编码模式:HEX / 文本(ASCII/UTF-8)切换
  • 显示增强:时间戳(精度可配)、发送/接收分色、行号、字节计数
  • 串口参数:波特率(300~921600)、数据位/停止位/校验/流控全可配、自动枚举/刷新
  • 日志保存:自动/手动保存收发记录到文本文件,支持按大小/时间分卷

Lua 脚本引擎(核心功能)

脚本上下文 API


-- 串口操作
serial.open(portName, baudrate, parity, dataBits, stopBits)
serial.close()
serial.write(bytes)           -- 发送字节表 {0x01, 0x03, ...}
serial.writeHex("01 03 00 00") -- 发送 HEX 字符串
serial.read(timeoutMs)        -- 读取返回字节表
serial.onData = function(data) ... end  -- 接收回调

-- 协议辅助
crc16.modbus(bytes)           -- 返回 CRC16-Modbus 校验码
crc32.ieee(bytes)
bit.band/bor/bxor/lshift/rshift -- 位运算库
struct.pack/unpack(fmt, ...)  -- 打包/解包 (如 ">HHf")

-- 界面/日志
log.info/warn/error(msg)
ui.setStatus(text)
ui.addChartPoint(seriesName, value)
ui.exportCsv(filename, dataTable)

-- 定时/延时
timer.setTimeout(ms, callback)
timer.setInterval(ms, callback)
timer.clear(id)

-- 持久化配置
config.set(key, value)
config.get(key, default)

脚本管理

  • 多标签页编辑器:语法高亮/行号/括号匹配
  • 运行/暂停/停止/单步调试(基础)
  • 输出控制台、错误堆栈定位
  • 自动加载:启动时可指定默认脚本自动运行
  • 热重载:修改脚本保存后可点击"重载"无需重启

典型脚本应用场景

场景 脚本实现要点
自定义协议自动应答 帧头/长度/校验解析 → 根据命令字分发 → 动态构造响应帧 → 延时发送
压力/自动化测试 循环发送测试帧 → 统计成功率/延迟 → 生成 CSV 报告 → 断言判定 PASS/FAIL
数据预处理/转发 接收原始帧 → 解密/解压/校验 → 重新编码 → 转发至 TCP/MQTT/HTTP
协议逆向辅助 捕获收发 → 标注字段 → 导出结构化 JSON → 辅助人工分析

串口监控组件

项目源码另附 `serial_monitor_rs`(Rust 实现)与 Web 适配层,提供高性能串口抓包/过滤/导出能力,可独立集成到其他工具。


配置说明

config.json 配置文件

首次运行后生成 `config.json`,包含:

  • 串口参数(端口/波特率/校验等)
  • 窗口状态(位置/大小/编码模式)
  • 脚本列表(自动加载的脚本路径)

脚本文件管理

  • 建议将脚本文件放在 `scripts/` 子目录
  • 支持相对路径引用
  • 可在启动参数中指定默认脚本

键盘快捷键

快捷键 功能
`Ctrl+C` 关闭串口
`Ctrl+S` 发送数据
`Ctrl+Shift+S` 保存脚本
`F5` 运行/停止脚本
`F6` 重载脚本(热重载)
`Ctrl+L` 清空接收区
`Ctrl+F` 搜索/过滤
`F1` 帮助
`Alt+1` ~ `Alt+9` 切换到脚本标签页

常用操作流程

场景一:自定义协议自动应答

  1. 编写 Lua 脚本,定义 `serial.onData` 回调函数
  2. 在回调中解析帧头/长度/校验
  3. 根据命令字构造响应帧
  4. 使用 `serial.write()` 发送响应
  5. 保存脚本,设置启动自动加载
  6. 打开串口,脚本自动运行

场景二:Modbus RTU 从站仿真

  1. 编写 Lua 脚本实现 Modbus 从站逻辑
  2. 使用 `crc16.modbus()` 计算校验
  3. 解析功能码 0x03(读寄存器)、0x06(写单个寄存器)、0x10(写多个寄存器)
  4. 查表返回数据,构造响应帧
  5. 设置串口参数(与主站一致)
  6. 启动脚本,仿真从站运行

场景三:自动化压力测试

  1. 编写测试脚本,循环发送测试帧
  2. 使用 `timer.setInterval()` 设置发送间隔
  3. 统计响应时间和成功率
  4. 使用 `ui.exportCsv()` 导出报告
  5. 添加断言逻辑判断 PASS/FAIL

场景四:数据转发

  1. 编写脚本接收串口数据
  2. 解析、解密/解压/校验
  3. 重新编码为目标格式
  4. 通过 TCP/MQTT/HTTP 转发
  5. 使用 `log.info()` 记录日志

故障排查

现象 可能原因 解决方案
Lua 脚本报错 脚本语法错误/API 调用错误 查看输出控制台的错误堆栈
串口无法打开 端口被占用/权限不足 关闭其他占用程序,以管理员运行
脚本热重载失败 文件被其他程序锁定 关闭脚本文件编辑器后重试
内存泄漏 脚本中未释放对象/循环引用 检查 `serial.close()` 调用,优化脚本逻辑
接收数据不完整 超时设置过短 调整 `serial.read()` 超时参数
CRC 校验失败 字节顺序/算法选择错误 确认使用正确的 CRC 算法

适用场景

场景 优势
设备从站仿真 无需写 C# 服务端,几十行 Lua 实现完整状态机
自动化回归测试 脚本驱动全流程,CI/CD 集成友好
现场运维应急 单文件、无安装、U 盘带走、脚本随身携带
教学/原型开发 可视化串口+可编程逻辑,降低上手门槛

注意事项

  1. 脚本安全:Lua 运行时为沙箱隔离,禁止危险 OS 调用
  2. 单文件运行:`llcom.exe` 为单文件,无需安装其他依赖
  3. 脚本目录:建议将脚本文件放在 `scripts/` 子目录中管理
  4. 配置持久化:程序自动保存 `config.json`,关闭后下次启动恢复上次设置

技术栈

C# Lua

相关产品

×