BYSerial

BYSerial

开源项目 开源工具包

基于C# WPF开发的Windows单文件串口调试工具,集成Modbus、西门子/三菱/罗克韦尔/欧姆龙PLC、MQTT、BACnet、TCP/UDP、CRC校验、实时曲线等全场景调试能力。

核心特性

  • 单文件免安装
  • 多协议PLC调试
  • Modbus RTU/ASCII/TCP
  • S7/三菱/罗克韦尔/欧姆龙
  • MQTT/BACnet
  • 实时数据曲线
  • CRC校验
  • 快捷命令系统

产品介绍

功能概述

BYSerial 是一款基于 C# WPF (.NET Framework 4.8) 开发的 Windows 单文件串口调试工具,集成了通用串口调试与多种工业协议调试功能,适用于嵌入式开发、工业自动化联调、设备维护等场景。由 LvYiWuHen 开发维护,遵循 MIT 许可证开源分发。

项目地址https://gitee.com/LvYiWuHen/byserial
当前版本:V3.0.2
运行平台:Windows 10/11(自带 .NET Framework 4.8),Windows 7 需手动安装运行时
部署方式:单文件免安装,双击 BYSerial.exe 即可运行


核心功能模块

1. 通用串口收发

  • 编码模式:支持 ASCII、HEX(十六进制)、UTF-8 中文收发,自动识别编码
  • 串口管理:自动枚举可用串口,支持串口热插拔实时检测与刷新
  • 参数配置:波特率、数据位、停止位、校验位、流控全可配置
  • 显示模式:支持按行/按时间戳/按方向(发送/接收)分栏显示,支持暂停/清空/自动滚动
  • 数据过滤:支持关键字高亮、正则过滤、指定字节隐藏

2. 快捷命令系统

  • 命令管理:支持自定义命令组、命令名称、发送内容(HEX/ASCII/字符串)
  • 发送模式
    • 单次发送:点击即发
    • 循环发送:可设置发送间隔(毫秒级)、发送次数、停止条件
    • 组合命令:多条命令按顺序/并行发送,支持条件跳转
  • 持久化:命令配置自动保存到 bycfg/fastcmds.cfg,下次启动自动加载

3. 循环发送与定时任务

  • 定时器精度:毫秒级定时发送,支持动态修改间隔
  • 多任务并行:可同时运行多个不同间隔的发送任务
  • 任务控制:开始/暂停/停止/重置,支持发送前/后回调脚本

4. 数据记录与保存

  • 自动命名:按 YYYYMMDD_HHMMSS_端口号.log 格式自动生成文件名
  • 分卷存储:单文件大小上限可配置(默认 10MB),超限自动切割新文件
  • 编码保存:支持原始二进制、HEX 文本、ASCII 文本三种格式保存
  • 大文件保护:磁盘空间不足时自动暂停写入并提示

5. 实时数据曲线

  • 多通道显示:最多支持 8 通道同屏波形
  • 数据解析:支持从接收数据中按正则/定位提取数值(int16/int32/float/double)
  • 波形控制:缩放、平移、暂停、截图导出、数据导出 CSV
  • 性能模式:高频数据自动降采样显示,不阻塞主界面

6. 工控工箱—— 内置多协议调试

协议类别支持协议/设备主要功能
ModbusModbus RTU / ASCII / TCP读/写线圈、离散量、保持寄存器、输入寄存器;支持功能码 0x01-0x10;支持从站 ID 扫描
西门子 PLCS7-200/300/400/1200/1500 (S7Comm)DB 块读写、位/字节/字/双字/实数类型、变量地址解析
三菱 PLCFX/Q/L/iQ-R 系列 (MC 协议)批量读写软元件、位/字设备、支持 3E/4E 帧
罗克韦尔 PLCControlLogix/CompactLogix (CIP/EtherNet/IP)Tag 读写、数组/结构体支持、路径配置
欧姆龙 PLCCJ/CS/NJ 系列 (FINS 协议)内存区读写、网络地址路由
MQTTv3.1.1 / v5.0连接/订阅/发布、QoS 0/1/2、遗嘱/保留消息、SSL/TLS
BACnetBACnet/IP设备发现、对象属性读写、Who-Is/I-Am
TCP/UDP客户端/服务端原始报文收发、自动重连、心跳保活

7. TCP 通讯调试

  • 双模式:TCP Client / TCP Server(可同时监听多端口)
  • 连接管理:连接列表、断开重连、心跳包自定义
  • 数据视图:同串口界面,支持 HEX/ASCII/字符串切换

8. CRC 校验工具

  • 内置算法:CRC-8、CRC-16 (Modbus/CCITT/XMODEM)、CRC-32、CRC-32/MPEG-2、自定义多项式
  • 计算模式:单次计算、批量文件校验、实时校验显示
  • 结果导出:校验表导出 CSV/JSON

配置文件说明

文件用途格式
bycfg/fastcmds.cfg快捷命令配置JSON
bycfg/his.cfg发送历史记录纯文本(每行一条)
bycfg/my.cfg用户个性化设置(窗口位置、主题、默认串口参数等)INI/JSON

依赖与第三方库(运行时已内置,单文件打包)

许可证用途
Newtonsoft.JsonMITJSON 序列化
Costura.FodyMIT单文件嵌入依赖
System.IO.PortsMIT串口通讯
NModbus4MITModbus 协议栈
S7.Net.PlusMIT西门子 S7 通讯
MqttNetMITMQTT 客户端
HslCommunicationLGPLv3多厂商 PLC 协议(三菱/欧姆龙/罗克韦尔等)

注意:HslCommunication 采用 LGPLv3,单文件打包时已满足动态链接要求,分发时需保留其许可证声明。


适用场景与优势

场景优势
嵌入式串口调试单文件免安装、启动快、编码自动识别、历史命令保存
Modbus 设备联调可视化寄存器表、功能码全覆盖、从站扫描、报文原始查看
多品牌 PLC 联调一站式支持西门子/三菱/罗克韦尔/欧姆龙,无需切换工具
MQTT/BACnet 物联网调试内置 Broker 连接、主题树、QoS 测试、证书配置
长期数据采集自动分卷日志、曲线实时监控、断电自动恢复
现场运维便携单文件、U 盘即插即用、配置自带、无管理员权限需求

产品明细图

BYSerial
BYSerial
BYSerial
BYSerial
BYSerial
BYSerial

详细使用教程

快速上手(5分钟入门)

1. 启动程序

双击 BYSerial.exe 即可运行,无需安装。首次运行自动生成 bycfg/ 配置目录。

界面语言默认中文,顶部菜单:文件 设置 工具 帮助

2. 打开串口(最基础操作)

  1. 选择端口:顶部下拉框 COM口 → 点击刷新图标 → 选择目标 COM 口(如 COM3
  2. 设置参数
    • 波特率:9600(默认,按设备手册修改)
    • 数据位:8
    • 停止位:1
    • 校验位:None
  3. 打开:点击 打开串口 按钮 → 状态灯变绿、按钮变为 关闭串口
  4. 测试发送
    • 发送区选择 HEX 模式
    • 输入:01 03 00 00 00 01(标准 Modbus 读保持寄存器示例)
    • 点击 发送 → 接收区显示返回报文

成功标志:接收区出现绿色 RX 数据行,含时间戳、HEX 内容


串口基础收发操作

2.1 编码模式切换

模式适用场景发送输入示例接收显示示例
HEXModbus RTU、二进制协议01 03 00 00 00 0101 03 02 00 64 B9 8E
ASCII文本协议、AT 指令AT\r\nOK\r\n
UTF-8 文本中文/多语言文本你好设备设备就绪

发送区/接收区独立切换,互不影响。HEX 模式自动过滤空格/换行,仅保留 0-9 A-F

2.2 接收区功能

功能操作说明
暂停/继续点击 暂停 按钮冻结显示,后台仍收数
自动滚动勾选 自动滚动新数据自动滚到底部
显示模式下拉:按行/按时间/按方向分栏对比 TX/RX
关键字高亮右键 高亮设置 → 输入关键字/正则红色标记匹配行
清空点击 清空仅清界面,不影响日志文件
导出当前视图右键 导出当前视图.txt含时间戳/方向/数据

2.3 发送区功能

功能操作说明
多行编辑发送区右键 多行模式支持换行、批量粘贴
发送历史上/下方向键 / 下拉框最近 50 条自动记忆
追加换行勾选 追加 \r\nAT 指令必选
发送间隔设置 发送间隔(ms)批量发送时逐条延时

快捷命令配置与使用

3.1 创建快捷命令

  1. 点击工具栏 快捷命令管理(或 F2
  2. 在弹窗点击 新建 → 填写:
    • 名称读温度(显示在按钮上)
    • 发送内容01 03 00 01 00 01(HEX,空格分隔)
    • 编码模式HEX
    • 循环间隔(ms)0(单次发送)
  3. 点击 确定 → 主界面快捷栏出现 读温度 按钮

3.2 快捷命令分组

  • 右键快捷按钮 → 移动到分组新建分组: 环境传感器
  • 分组显示为下拉标签页,适合项目/设备分类管理

3.3 导入导出命令库

  • 管理 窗口 → 导出commands_my.json(分享给同事)
  • 导入 → 选择 JSON 文件 → 合并/覆盖现有命令

循环发送与定时任务

4.1 单条命令循环发送

  1. 快捷命令管理 中设置 循环间隔(ms) = 1000
  2. 点击主界面该按钮 → 变为 停止 状态、按钮变红
  3. 接收区每秒收到一次返回数据
  4. 再次点击按钮 → 停止循环

4.2 多命令定时任务(高级)

  1. 菜单 工具定时任务新建任务
  2. 配置:
    • 任务名每分钟巡检
    • 触发类型周期 / 每日固定时间 / 启动时
    • 周期60000 ms
    • 命令序列:读温度(间隔 200ms) → 读湿度(间隔 200ms) → 读压力(间隔 200ms)
  3. 保存 → 任务列表显示 运行中、下次触发时间

4.3 条件发送(脚本级)

  • 定时任务支持 前置条件(Lua 表达式):last_rx:match("01 03 02") ~= nil

数据记录与导出

5.1 自动记录开启

  1. 菜单 设置数据记录 → 勾选 自动保存接收数据
  2. 配置:
    • 保存目录logs/(相对程序目录)或绝对路径
    • 文件命名YYYYMMDD_HHMMSS_COM3.log
    • 分卷大小10 MB(超限自动新建 ..._part2.log
    • 编码格式HEX文本 / 原始二进制 / ASCII文本

5.2 日志文件结构

logs/
├─ 20260115_083000_COM3.log          # HEX文本,每行: [08:30:01.123] RX: 01 03 02 00 64
├─ 20260115_083000_COM3_part2.log    # 分卷文件
└─ index.json                        # 索引:开始/结束时间、行数、字节数

5.3 批量导出分析

  • 菜单 工具日志分析 → 选择多个 .log 文件
  • 支持:合并/按时间切片/过滤特定帧/导出 CSV(列:时间、方向、数据、解析值)

实时曲线监控

6.1 打开曲线窗口

  • 菜单 视图实时曲线(或 F3)→ 独立可停靠窗口

6.2 添加曲线通道

  1. 曲线窗口右键 添加通道 → 配置:
    • 通道名温度
    • 数据源接收解析 / 手动输入 / 脚本推送
    • 解析规则:正则 01 03 02 (.. ..) → 提取第 1 组,类型 INT16/UINT16/FLOAT32,字节序 大端/小端,缩放 系数 0.01 偏移 0,单位 °C
    • 颜色/线型:自动分配或手动指定
  2. 确定 → 曲线实时绘制

6.3 曲线操作

操作方法
缩放滚轮 / 右键拖拽框选
平移中键拖拽 / Shift+右键
读数悬停显示十字光标、数值框
暂停工具栏 暂停 按钮
截图导出 PNG
导出数据导出 CSV(时间、通道1、通道2...)

工控工箱:Modbus 调试

7.1 打开 Modbus 面板

  • 顶部标签页切换至 Modbus(或菜单 工控工箱Modbus

7.2 配置连接

参数设置示例
模式RTU / ASCII / TCP
串口/TCP复用主界面串口 / 新建 TCP 连接 192.168.1.50:502
从站ID1(可扫描 1-247)
超时(ms)1000
重试次数3

7.3 读写操作

读取寄存器

  1. 点击 读取 标签
  2. 设置功能码:03 保持寄存器 / 04 输入寄存器 / 01 线圈 / 02 离散量
  3. 起始地址:0(十进制)或 0x0000,数量:10
  4. 点击 读取 → 结果表格显示地址、十六进制、十进制、浮点数、字符串

写入寄存器

  1. 切换 写入 标签
  2. 功能码:06 单寄存器 / 10 多寄存器 / 05 单线圈 / 0F 多线圈
  3. 输入值(支持十进制/十六进制/浮点数自动转换)→ 点击 写入

7.4 批量操作与点表

  • 点表管理从 Excel 导入(模板:地址、类型、名称、单位、缩放)
  • 导入后可:批量读取批量写入周期轮询(间隔可配)

7.5 从站扫描

  • 点击 扫描从站 → 设置 ID 范围 1-247 → 并发数 5
  • 结果列表:在线从站、响应时间、设备标识

工控工箱:PLC 通讯(西门子/三菱/罗克韦尔/欧姆龙)

8.1 通用连接配置

厂商关键参数示例
西门子 S7IP、机架、槽号、CPU型号192.168.0.1、Rack=0、Slot=1、S7-1200
三菱 MCIP、端口(5007)、帧类型(3E/4E)、网络/站号192.168.0.2、3E帧、网络0、站号255
罗克韦尔 CIPIP、槽号、路径192.168.0.3、Slot=0、1,0
欧姆龙 FINSIP、端口(9600)、网络/节点/单元192.168.0.4、网络1、节点2、单元0

点击 连接 → 状态显示 已连接、CPU 信息(型号/固件/模式)

8.2 地址语法

类型语法示例说明
西门子DB10.DBW0 DB10.DBD10 M100.0 I0.0 Q0.0DB块/位/字/双字
三菱D100 M10 X0 Y0 W0 R0数据寄存器/继电器/输入/输出/链接/文件
罗克韦尔Motor.Speed Recipe.Temp[0] Program:MainProgram.TagTag 名、数组、程序作用域
欧姆龙D100 W100 H100 CIO100 DM100数据区/工作区/保持区/IO/扩展数据

工控工箱:MQTT 与 BACnet

9.1 MQTT 客户端

  1. 标签页 MQTT → 配置连接:
    • Brokermqtt.example.com:1883 / ssl://mqtt.example.com:8883
    • ClientIDBYSerial_001(留空自动生成)
    • 用户名/密码:选填
    • CA/客户端证书:TLS 双向认证时选择文件
  2. 连接 → 状态栏显示 Connected、会话信息
  3. 订阅:输入 Topic factory/line1/temp/# → QoS 0/1/2 → 订阅
  4. 发布:输入 Topic factory/line1/cmd + Payload(JSON/文本/HEX) → 发布
  5. 消息监控:实时列表显示 收/发、Topic、QoS、Retain、Payload(可折叠)

9.2 BACnet/IP

  1. 标签页 BACnet → 配置:本地设备ID 1001、端口 47808
  2. 发现设备Who-Is 广播 → 列表显示在线设备
  3. 读取属性:选择对象类型 Analog Input、实例 1、属性 Present Value读取
  4. 订阅 COV:启用 Change of Value 订阅 → 实时推送变化值

TCP/UDP 网络调试

10.1 TCP Client

  • 标签页 TCPClient 模式 → 目标 IP:Port 192.168.1.100:8080连接
  • 同串口界面:HEX/ASCII 切换、发送/接收、快捷命令复用

10.2 TCP Server

  • 切换 Server 模式 → 监听端口 8080开始监听
  • 客户端连接列表显示:IP、端口、连接时间、收发字节数
  • 选择客户端 → 发送数据(单播/广播给所有)

10.3 UDP

  • 绑定本地端口 9000 → 目标 IP:Port 192.168.1.200:9000
  • 支持组播:加入组 239.0.0.1、TTL 设置

CRC 校验工具

11.1 打开工具

  • 菜单 工具CRC 校验(或 F4

11.2 单次计算

  1. 选择算法:CRC-16 Modbus / CRC-16 CCITT / CRC-32 / CRC-32 MPEG2 / 自定义
  2. 输入数据:HEX 01 03 00 00 00 01 或 文本 Hello
  3. 点击 计算 → 显示结果(HEX/十进制/二进制)

11.3 自定义多项式

  • 算法选择 自定义 → 配置:多项式 0x1021、初始值 0xFFFF、输入反转/输出反转/异或值
  • 保存为预设 → 下次直接在下拉框选择

配置文件管理与备份

12.1 配置文件位置

BYSerial/
├─ BYSerial.exe
├─ bycfg/
│  ├─ fastcmds.cfg    # 快捷命令 (JSON)
│  ├─ his.cfg         # 发送历史 (纯文本)
│  └─ my.cfg          # 个性化设置 (窗口位置/主题/默认串口参数)
└─ logs/              # 数据日志 (自动创建)

12.2 备份与迁移

  • 菜单 文件导出配置 → 包含 bycfg/ 全部文件 + logs/index.json
  • 导入配置 → 选择备份包 → 覆盖/合并

常见问题与故障排查

现象可能原因解决方法
串口打不开端口被占用/不存在/无权限1. 设备管理器确认 COM 口
2. 关闭其他占用软件
3. 以管理员运行
收到乱码波特率/校验/编码不匹配1. 对照设备手册核对参数
2. 尝试常见组合: 9600/8/N/1
3. HEX模式查看原始字节
发送无响应线序错误/从站ID错/功能码不支持1. 检查接线 TX-RX/GND
2. Modbus面板扫描从站ID
3. 抓包对比标准报文
曲线不显示解析规则错误/数据源未选中1. 检查正则是否匹配
2. 确认通道"启用"勾选
配置丢失程序异常退出/杀毒软件拦截1. 手动备份 bycfg/
2. 白名单程序目录
TCP连不上防火墙/IP错/端口错1. ping 目标IP
2. telnet IP PORT 测试
3. netstat -an 确认监听

附录:键盘快捷键

快捷键功能
F1打开帮助/在线文档
F2快捷命令管理
F3实时曲线窗口
F4CRC 校验工具
Ctrl+O打开串口
Ctrl+Shift+O关闭串口
Enter发送数据
Ctrl+Enter发送并清空发送区
Ctrl+S保存当前接收日志
Ctrl+L清空接收区
Ctrl+F搜索接收区
Alt+1~9触发快捷命令 1-9

提示:本教程基于 BYSerial V3.0.2 编写,界面细节可能随版本微调。遇到未覆盖场景,请参考程序内 帮助在线文档 或 GitHub Issues: https://gitee.com/LvYiWuHen/byserial/issues

技术栈

C# WPF .NET Framework 4.8 NModbus4 S7.Net.Plus MqttNet HslCommunication Newtonsoft.Json

相关产品

×