# serial-assistant **Repository Path**: MagicBude/serial-assistant ## Basic Information - **Project Name**: serial-assistant - **Description**: 功能完整的串口调试助手,支持多设备同时监控和设备间通信 A full-featured serial port debugging tool with multi-device support and inter-device communication - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-05 - **Last Updated**: 2026-02-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: 串口助手 ## README # Serial Assistant - 串口调试助手 专业的 Windows 串口调试工具,支持多串口同时操作、独立窗口管理、自动重连和数据桥接功能。 ## ✨ 功能特性 ### 核心功能 - 🔌 **多串口支持** - 支持同时打开多个串口,每个串口独立窗口操作 - 📡 **双模式收发** - 支持文本模式和 HEX 模式数据收发 - 🔄 **自动重连** - 串口断开后可自动尝试重连 - 🌉 **数据桥接** - 支持多个串口之间的数据转发(预留功能) - 📝 **数据日志** - 自动记录所有收发数据到日志文件 - 💾 **配置保存** - 自动保存和加载串口配置、快捷命令等设置 - 📤 **数据导出** - 可将接收区数据导出为 TXT 或 LOG 文件 - ⚡ **快捷命令** - 5个可自定义的快捷命令按钮,一键发送常用命令 - 🎨 **颜色区分** - 接收数据(绿色)、发送数据(蓝色)、系统消息(灰色)、错误信息(红色) ### 串口配置 - 串口选择(自动显示设备描述信息) - 波特率:300 ~ 115200 bps - 数据位:5, 6, 7, 8 - 停止位:1, 1.5, 2 - 校验位:None, Odd, Even, Mark, Space ### 发送选项 - 多种字符编码:UTF-8, GBK, ASCII - 行尾选项:无, \r\n, \n\r, \r, \n - HEX 发送模式 - 自动发送(可设置间隔时间) ## 🛠️ 技术栈 - **开发语言**: C# 5.0 - **目标框架**: .NET Framework 4.7.2 - **UI 框架**: Windows Forms - **开发工具**: Visual Studio 2019+ - **构建工具**: MSBuild ## 📁 项目结构 ``` SerialAssistant/ ├── Core/ # 核心业务逻辑层 │ ├── SerialPortManager.cs # 串口管理器 - 封装串口操作 │ ├── DataLogger.cs # 数据日志记录器 - 记录收发数据 │ └── DataBridge.cs # 数据桥接管理器 - 多串口数据转发 ├── UI/ # 用户界面层 │ ├── MainForm.cs # 主窗口 - 串口窗口管理器(预留) │ ├── MainForm.Designer.cs # 主窗口设计器代码 │ ├── SerialWindow.cs # 串口窗口 - 独立串口操作窗口 │ ├── SerialWindow.Designer.cs # 串口窗口设计器代码 │ ├── SerialPanel.cs # 串口面板 - 核心 UI 控件 │ └── SerialPanel.Designer.cs # 串口面板设计器代码 ├── Utils/ # 工具类 │ └── HexConverter.cs # HEX 转换工具 - 字节与十六进制转换 ├── Properties/ # 项目属性 │ ├── AssemblyInfo.cs # 程序集信息 │ ├── Resources.resx # 资源文件 │ └── Settings.settings # 应用程序设置 ├── Program.cs # 程序入口 ├── App.config # 应用程序配置 └── SerialAssistant.csproj # 项目文件 根目录/ ├── SerialAssistant.sln # Visual Studio 解决方案文件 ├── build.bat # 编译脚本 ├── run.bat # 运行脚本 ├── 如何编译.txt # 编译说明 └── README.md # 项目说明文档 ``` ## 🚀 快速开始 ### 环境要求 - Windows 7 或更高版本 - .NET Framework 4.7.2 或更高版本 - Visual Studio 2019 或更高版本(开发时需要) ### 编译项目 #### 方法 1: 使用批处理脚本(推荐) ```cmd # 编译项目 build.bat # 编译并运行 run.bat ``` #### 方法 2: 使用 Visual Studio 1. 双击打开 `SerialAssistant.sln` 2. 按 `Ctrl+Shift+B` 编译项目 3. 按 `F5` 运行程序 #### 方法 3: 使用 MSBuild 命令行 ```cmd # 编译 Debug 版本 "D:\Program Files\Microsoft Visual Studio\18\Community\MSBuild\Current\Bin\MSBuild.exe" SerialAssistant.sln /t:Rebuild /p:Configuration=Debug # 编译 Release 版本 "D:\Program Files\Microsoft Visual Studio\18\Community\MSBuild\Current\Bin\MSBuild.exe" SerialAssistant.sln /t:Rebuild /p:Configuration=Release ``` ### 运行程序 编译成功后,可执行文件位于: - Debug 版本: `SerialAssistant\bin\Debug\SerialAssistant.exe` - Release 版本: `SerialAssistant\bin\Release\SerialAssistant.exe` ## 📖 使用说明 ### 基本操作 1. **打开串口** - 选择串口(显示设备描述信息) - 配置波特率、数据位、停止位、校验位 - 点击"打开串口"按钮 2. **发送数据** - 在发送区输入要发送的数据 - 选择编码方式(UTF-8/GBK/ASCII) - 选择行尾格式(可选) - 点击"发送"按钮或勾选"HEX发送" 3. **接收数据** - 接收到的数据自动显示在接收区 - 绿色文本:接收的数据 - 蓝色文本:发送的数据(带 >> 前缀) - 灰色文本:系统消息(带 [系统] 前缀) - 红色文本:错误信息(带 [错误] 前缀) 4. **自动发送** - 勾选"自动发送" - 设置发送间隔(毫秒) - 程序将按设置的间隔自动发送数据 5. **自动重连** - 勾选"自动重连" - 串口断开后会自动尝试重连 6. **快捷命令** - 点击快捷命令按钮一键发送常用命令 - 点击"编辑命令"自定义5个快捷命令 - 空命令按钮自动禁用 7. **数据导出** - 点击"导出数据"按钮 - 选择保存位置和文件格式(TXT/LOG) - 导出接收区的所有数据 8. **配置保存** - 关闭窗口时自动保存当前配置 - 下次启动自动加载上次的配置 - 可通过菜单"文件 -> 保存配置"手动保存 ### 高级功能 - **清空接收区**: 点击"清空接收"按钮 - **清空发送区**: 点击"清空发送"按钮 - **数据统计**: 实时显示接收和发送的字节数 - **多窗口**: 通过菜单"文件 -> 新建串口"创建多个独立窗口 - **配置文件**: 配置保存在程序目录的 `config.ini` 文件中 ## 🧪 测试 ### 虚拟串口工具 推荐使用以下虚拟串口软件进行测试: - **com0com** (免费开源) - 下载: https://sourceforge.net/projects/com0com/ - 可创建成对的虚拟串口(如 COM1-COM2) - **Virtual Serial Port Driver** (商业软件) - 官网: https://www.eltima.com/products/vspdxp/ - 功能更强大,支持更多配置 ### 测试步骤 1. 使用虚拟串口工具创建一对虚拟串口(如 COM1 和 COM2) 2. 打开两个串口助手窗口 3. 分别连接 COM1 和 COM2 4. 在一个窗口发送数据,另一个窗口应该能接收到 ## 🔧 开发说明 ### 代码规范 - 所有类和方法都有 XML 文档注释 - 使用 #region 组织代码结构 - 遵循 C# 5.0 语法规范(兼容性考虑) - 统一的命名规范和代码格式 ### 核心类说明 #### SerialPortManager 串口管理核心类,封装了 .NET SerialPort 的所有操作: - 串口打开/关闭 - 数据发送(文本/HEX) - 数据接收事件 - 串口状态管理 - 设备描述信息获取(通过 WMI) #### DataLogger 数据日志记录器,负责记录所有串口活动: - 接收数据记录 - 发送数据记录 - 系统事件记录 - 错误信息记录 - 日志文件管理 #### DataBridge 数据桥接管理器,支持多串口数据转发: - 设备注册/注销 - 桥接规则管理 - 单向/双向桥接 - 数据自动转发 #### SerialPanel 串口操作面板,核心 UI 控件: - 串口配置界面 - 数据收发界面 - 自动发送/重连功能 - 数据统计显示 - 多线程安全的 UI 更新 ### 扩展开发 如需添加新功能,建议遵循以下步骤: 1. 规划功能设计和实现方案 2. 在对应的核心类中添加功能实现 3. 在 UI 层添加相应的界面元素 4. 更新 README.md 文档 5. 进行充分测试后提交代码 ## 📋 开发进度 ### 已完成功能 ✅ - [x] 项目结构搭建 - [x] HEX 转换工具类 - [x] 串口管理器核心功能 - [x] 数据日志记录功能 - [x] 数据桥接管理器(预留) - [x] 串口面板 UI 实现 - [x] 独立串口窗口 - [x] 自动发送功能 - [x] 自动重连功能 - [x] 多编码支持 - [x] 行尾选项 - [x] 设备描述显示 - [x] 代码规范化和文档完善 ### 计划功能 📝 - [ ] 数据桥接 UI 界面 - [ ] 数据包分析功能 - [ ] 数据导出功能 - [ ] 快捷命令功能 - [ ] 主题切换功能 - [ ] 配置文件保存/加载 ## 🐛 已知问题 - NumericUpDown 控件在 TableLayoutPanel 中无法完美垂直居中(WinForms 限制) - Designer 文件中的 components 字段会有未使用警告(正常现象) ## 📄 许可证 本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件 ## 🤝 贡献 欢迎提交 Issue 和 Pull Request! ### 贡献指南 1. Fork 本项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 提交 Pull Request ## 📞 联系方式 如有问题或建议,欢迎通过以下方式联系: - 提交 Issue: [GitHub Issues](https://github.com/yourusername/serial-assistant/issues) - 邮件: your.email@example.com ## 🙏 致谢 感谢所有为本项目做出贡献的开发者! --- **注意**: 本项目仅供学习和研究使用,请勿用于商业用途。