# com2net **Repository Path**: galaxy_0/com2net ## Basic Information - **Project Name**: com2net - **Description**: 这是一个运行windows11中的虚拟串口转网络的软件。虚拟串口从驱动开始做起,支持tcp服务器、客户端,UDP通讯。特别适合wsl中串口软件调试验证 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-11-07 - **Last Updated**: 2026-11-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # com2net [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux-blue.svg)](#快速开始) [![C++](https://img.shields.io/badge/C%2B%2B-17-00599C.svg)](#构建) [![Gitee](https://img.shields.io/badge/Gitee-galaxy__0%2Fcom2net-c71d23.svg)](https://gitee.com/galaxy_0/com2net) 把**虚拟串口**与 **UDP / TCP** 互相转发:超级终端、Modbus 主站、老式上位机等程序照常打开串口收发数据, com2net 在背后把串口字节流与网络报文打通。Windows 与 Linux 两个实现思路一致,均不依赖第三方串口软件。 ``` 串口程序 com2net ┌──────────────┐ 虚拟串口 ┌──────────────────────┐ UDP / TCP │ 终端 / 上位机 │ ◄───────────────► │ 桥接引擎 + 成帧/缓冲 │ ◄──────────────► 设备 / 测试工具 └──────────────┘ (COMn / pts/N) └──────────────────────┘ (客户端 / 服务端) ``` ## 特性 - **虚拟串口**:Windows 使用自研 WDM 驱动 `c2nport.sys`(单个虚拟串口,串口名可自定义,无需 com0com 端口对); Linux 使用 pty,无需内核驱动。 - **多种网络模式**:UDP、TCP 客户端(断线自动重连)、TCP 服务端;Linux 端 TCP 服务端支持多客户端广播。 - **串口 → 网络**:按“空闲间隔 + 最大帧长”聚合成帧(UDP 报文边界),TCP 按字节流转发。 - **网络 → 串口**:收到的 UDP 报文 / TCP 数据原样写入虚拟串口。 - **方向控制、实时统计、结构化日志、INI 配置**(Windows)与命令行参数(Linux)。 - **完整工具链**:驱动编译 / 签名 / 安装脚本、Inno Setup 安装包、端到端联调测试。 ## 仓库结构 ``` com2Net/ ├─ com2NetWin/ Windows 端(C++17,MSVC) │ ├─ driver/ 自研虚拟串口驱动 c2nport.sys(WDM)与构建/签名/安装脚本 │ ├─ src/core/ 串口、驱动通道、网络传输、成帧、桥接引擎、配置、日志 │ ├─ src/cli/ Com2NetCli.exe(无界面运行 / 安装串口 / 自检 / 监视) │ ├─ src/app/ Com2NetGui.exe(Win32 图形界面) │ ├─ installer/ Inno Setup 安装包脚本 │ └─ tests/ 端到端联调与冒烟测试脚本 └─ com2UDPLinux/ Linux 端(C++17,epoll + pty) ├─ src/core/ 虚拟串口、TCP 服务端、UDP 网关、事件循环 └─ tests/ 基于 pty 的 TCP/UDP 往返测试 ``` 各平台的详细说明见 [Windows 文档](com2NetWin/README.md) 与 [Linux 文档](com2UDPLinux/README.md)。 ## 快速开始 ### Windows 环境:Windows 10/11 x64、驱动需签名(测试机可开启 testsigning)、安装/改串口名需要管理员权限。 ```powershell # 1) 编译应用(Visual Studio 2026 / v145 + Windows SDK) & "\MSBuild\Current\Bin\MSBuild.exe" com2NetWin\Com2Net.sln /p:Configuration=Release /p:Platform=x64 # 2) 编译并签名驱动(管理员 PowerShell,需要 WDK) powershell -ExecutionPolicy Bypass -File com2NetWin\driver\build_driver.ps1 -Configuration Release powershell -ExecutionPolicy Bypass -File com2NetWin\driver\sign_driver.ps1 # 3) 安装/应用虚拟串口(自动请求 UAC 提权) com2NetWin\bin\Release\x64\Com2NetCli.exe --install COM20 com2NetWin\bin\Release\x64\Com2NetCli.exe --list # 4) 无界面运行(UDP 桥接) com2NetWin\bin\Release\x64\Com2NetCli.exe --run --config com2NetWin\tests\integration_test.ini ``` 图形界面直接运行 `Com2NetGui.exe`:设置串口名、网络模式与桥接参数后点击“启动桥接”。 安装包构建:`powershell -ExecutionPolicy Bypass -File com2NetWin\installer\build_installer.ps1 -Version 1.0.0.0`。 ### Linux 环境:Linux + `g++`(C++17)+ `make`。 ```bash cd com2UDPLinux && make # TCP 服务端(多客户端广播),并创建固定名称的虚拟串口链接 ./build/com2net --mode tcp-server --port 5000 --link /dev/ttyCOM1 # UDP 网关 ./build/com2net --mode udp --port 5001 --udp-remote 192.168.1.10:5002 ``` 启动后 stdout 输出 `PTY=` / `LINK=` / `PORT=` 便于脚本集成;日志写 stderr,可直接交给 systemd 托管。 ## 配置(Windows) 默认读取 `%APPDATA%\Com2Net\com2net.ini`: ```ini [VirtualPort] PortName=COM10 ControlDevice=\\.\com2netCtl [Network] Mode=UDP ; UDP / TCP_CLIENT / TCP_SERVER RemoteHost=127.0.0.1 RemotePort=5000 LocalPort=5000 ReconnectDelayMs=3000 [Bridge] IdleGapMs=20 ; 串口空闲多久后聚合成一帧 MaxFrameBytes=1024 ; 单帧最大字节数 SerialToNetwork=1 NetworkToSerial=1 [Serial] BaudRate=115200 DataBits=8 Parity=None StopBits=One FlowControl=None ``` Linux 端全部通过命令行参数配置,详见 [Linux 文档](com2UDPLinux/README.md#5-命令行参数)。 ## 构建 | 平台 | 工具链 | 产物 | | --- | --- | --- | | Windows | Visual Studio 2026(v145)、Windows SDK 10.0.26100、WDK | `Com2NetGui.exe`、`Com2NetCli.exe`、`Com2NetCore.lib`、`c2nport.sys` | | Linux | g++(C++17)、make | `com2UDPLinux/build/com2net` | 驱动需要签名后才能被系统加载;测试环境可用自签名证书并开启 `bcdedit /set testsigning on` (重启生效),具体步骤见 [Windows 文档](com2NetWin/README.md)。 ## 测试 ```powershell # Windows:内置自检、端到端联调、GUI 冒烟 Com2NetCli.exe --selftest powershell -ExecutionPolicy Bypass -File com2NetWin\tests\integration_test.ps1 -Mode UDP -Rounds 5 powershell -ExecutionPolicy Bypass -File com2NetWin\tests\gui_smoke_test.ps1 ``` ```bash # Linux:pty + TCP/UDP 往返测试 cd com2UDPLinux && make test ``` ## 许可 本项目基于 [MIT License](LICENSE) 开源。