# xcom_lua
**Repository Path**: liudegui/xcom_lua
## Basic Information
- **Project Name**: xcom_lua
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-09-01
- **Last Updated**: 2026-09-14
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# XCOM 串口工具
[English](README.md)
XCOM 是 Windows 串口调试工具:核心为原生 C++17 DLL(`xcom_core`),界面为
LuaJIT + Dear ImGui 客户端(`xcom_lua`),支持异步文本/十六进制收发、时间戳、
自动发送、Lua 脚本系统、波形面板,以及 DirectX 11(WARP 软件兜底)渲染。
## 进程与线程拓扑
```mermaid
flowchart LR
classDef proc fill:#E8F0FE,stroke:#2E5AAC,color:#111,stroke-width:1.5px
classDef dll fill:#FDE9D9,stroke:#C55A11,color:#111
classDef th fill:#E2F0D9,stroke:#548235,color:#111
EXE["xcom.exe
启动器"]:::proc -->|"隐藏控制台"| LJ["luvjit.exe
LuaJIT 主线程
Win32 消息循环 + libuv"]:::proc
LJ -->|"版本化 C ABI
xcom.h v1.5"| CORE["xcom_core.dll
C++17 + coact"]:::dll
LJ -->|"固定 C 导出
int 缓冲"| IMG["xcom_imgui.dll
ImGui + ImPlot / D3D11"]:::dll
CORE --> D["coact Dispatcher"]:::th
CORE --> W["SessionWriter"]:::th
CORE --> R["串口读线程"]:::th
R <-->|"OVERLAPPED"| COM[("COM 端口")]
W -->|"OVERLAPPED"| COM
D -->|"Rx 池 → DisplayLane"| LJ
```
## 模块依赖
```mermaid
flowchart LR
classDef lua fill:#D6E4FF,stroke:#2E5AAC,color:#111
classDef cpp fill:#FDE9D9,stroke:#C55A11,color:#111
classDef ext fill:#F2F2F2,stroke:#7F7F7F,color:#111
MAIN["main.lua"]:::lua --> UI["ui/*.lua"]:::lua
MAIN --> CORE["core/*.lua"]:::lua
UI --> BR["imgui_bridge.lua"]:::lua --> IMGDLL["xcom_imgui.dll"]:::cpp
CORE --> FFI["xcom_ffi.lua"]:::lua --> COREDLL["xcom_core.dll"]:::cpp
IMGDLL --> VEND["imgui + implot"]:::ext
COREDLL --> COACT["coact 框架
AO / HSM / 有界队列"]:::cpp
CORE --> LIBS["libs/
vendored 纯 Lua"]:::ext
```
- `xcom_core/`:版本化 C ABI DLL 与 Win32 OVERLAPPED 串口后端;coact 是唯一
业务事件运行时(AO / HSM / 有界队列 / 固定池)。
- `xcom_lua/`:生产客户端,纯 Lua 的 `ui/` + `core/`、`xcom_imgui` 桥接 DLL
与 `xcom_ffi` ABI 绑定。
- `xcom_lua/native/launcher/`:Win32 `xcom.exe`(隐藏控制台)。
- `docs/`:架构、概要设计、性能与编码规约。
## 环境
- Windows x64;构建需 MSVC x64 Developer PowerShell、CMake 3.21+、Ninja。
- `xcom_lua/runtime/` 运行时:`luvjit.exe` + `lua51.dll`/`luv.dll`
(来源见 `xcom_lua/runtime/README.md`)。
## 构建
```powershell
cd xcom_lua\native\xcom_imgui && build_imgui.cmd # xcom_imgui.dll -> runtime/
cd ..\.. # 仓库根目录
cmake --preset native-release && cmake --build --preset build-native-release
```
根工程产出 `xcom_core.dll`(`build/native-release/bin`)与 `xcom.exe`
(`xcom_lua/runtime`)。ImGui 桥有独立 CMakeLists,根工程不引用。
## 运行
```powershell
cd xcom_lua
runtime\luvjit.exe main.lua # 源码检出运行
runtime\xcom.exe # 打包启动器(main.ljbc,无控制台)
```
`xcom.exe` 优先 `main.ljbc`,回退 `main.lua`;设 `XCOM_CORE_DLL` 可指定核心 DLL。
设计文档见 `docs/architecture.md`(架构)与 `docs/design-summary.md`(概要设计)。
想了解 LuaJIT + C++ 的分工、插件模型与「接收不丢数据」的实现,见
`docs/technical-overview.md`(技术白皮书)。