找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 277|回复: 2
收起左侧

我自己写的串口调试软件,支持多种脚本扩展

[复制链接]
ID:471574 发表于 2025-4-24 17:37 | 显示全部楼层 |阅读模式
软件介绍
小平TCP串口调试特工是一款免费的软件,本人也是一名工控编程爱好者,经常使用串口调试PLC、单片机,试用过各种各样的串口调试软件。基于实际需求,结合各种调试软件的优点,开发出小平TCP串口调试特工。本软件除了普通TCP、串口调试外,主要用以下创新点:
一、串口、TCP相互转发,并可以保存整个通讯过程的数据;
二、支持保存的通讯数据进行主机、从机顺序模拟,还原通讯过程
三、可以根据设定的脚本进行自动回复模拟,创建自己的协议测试
四、自带脚本通讯指令,也可以C#、VB代码脚本扩展,或者混合使用,方便扩展不同的数据处理和测试。

一、如何打开串口调试
A02.jpg
二、如何发送数据给串口
A03.jpg
三、如何像单片机里一样发送转义字符
A04.jpg
这个转义功能在使用AT指令(ESP8266等)时会比较方便,如要加\r\n等

四、如何给发送的内容添加校验
A05.jpg

五、如何TCP连接并收发(转发)
A06.jpg
其他发送、校验同串口操作一样,要注意的是发送时要选择TCP还是BOTH

六、如何实现多预设数据发送(可多个)
比如用户有10条不同的AT指令,每发一条,又修改发送区的内容,是很不方便的,这时可以按下图操作即可
A07.jpg
七、如何设定收发显示的编码:

A08.jpg
八、如何自定义校验算法(需要懂C#编程语言)

A09.jpg
A10.jpg

A11.jpg
A12.jpg

A13.jpg

九、如何通过脚本来调用校验
使用CC:指令
CC:表示执行外部校验程序(保存在CheckCode目录里C#文件)
    格式1为: CC:校验名称
    (把%RX%作为源内容,校验结果保存在%CCR%变量中)
    格式2为: CC:校验名称,源内容,变量1
格式3为: CC:校验名称,源内容,开始位置,长度,变量1
如:CC:CRC16,%S1%,%T1%
注意,CRC16对应CheckCode文件夹里必须要有CRC16.cs C#文件才能执行
注意,如需要自定校验名称,请参考CheckCode\CRC16.cs的内容进行修改

举例,我要对发送区1的内容进行CRC16校验,脚本调试中代码如下:
CC:CRC16,%SEND1%,%TEMP%  //调用CRC16,对%SEND1%(发送区1内容)校验,结果保存到%TEMP%变量中,
Join:%SEND%,
%SEND1%,%TEMP% //拼接%SEND1%和%TEMP%,保存到%SEND%中并发送
注意,%SEND%是立即发送的系统变量
十、如何模拟并自动回复
应用一:通过通讯记录保存后,进行模拟其中的一端,进行按顺序通讯还原

A14.jpg
例如收发记录如下:
[COM->Receive]Hello,I am COM2
[Send->COM] Hello,I am COM1
[COM->Receive]How old are you
[Send->COM] I'm 12

我们设置模拟里发送标记为
[Send->COM],接收标记为[[COM->Receive]],打开文件,取消自动回复,开始模拟,当收到Hello,I am COM2时,软件会自动回复Hello,I am COM1,接下来,收到How old are you时,就会回复I'm 12,注意数据格式的选择,模拟的数据必须一模一样。
我们也可以把发送和接收的标记反过来,由收变成发,模拟另一端

应用二:自动回复
勾选回复模式,根据收到的内容,匹配回复,可以不按顺序来模拟
A15.jpg
例如收发记录如下:
[COM->Receive]Hello,I am COM2
[Send->COM] Hello,I am COM1
[COM->Receive]How old are you
[Send->COM] I'm 12
我们设置模拟里发送标记为[Send->COM],接收标记为[[COM->Receive]],打开文件,勾选自动回复,开始模拟,当收到Hello,I am COM2时,软件会自动回复Hello,I am COM1,接下来,收到How old are you时,就会回复I'm 12,再收到How old are you,还是自动回复I'm 12。跟应用一不同之处是,应用一是按顺序来的,应用二可以随条件回复

        应用三:根据条件和脚本来回复(万能处理)
A16.jpg

可参照例子里的MobusRTU脚本例子(十六进制数据),注意发送标记为[TX],接收标记为[RX],如下脚本执行效果,如果收到01 01 开头,8个长度的数据,就回复01 01 01 02 D0 49,如果收到01 03开头,8个长度的数据,就会按照脚本进行数据处理,最后用Send:发送处理后的数据
[RX]C01{S=01 01;L=8}//收到01 01开头,数据总长度为8
[TX][SC]  //脚本处理回复
Send:01 01 01 02 D0 49    //回复01 01 01 02 D0 49
[/SC]  //脚本处理结束
[RX]C03{S=01 03;L=8}//收到01 03开头,数据总长度为8
[TX][SC]  //脚本处理回复
Mid:%LEN%,%RX%,5,2  //取出收到的内容(从第5个数据开始,共两个长度)
Set:%TX%,01 03
Tdec:%LEN%,%LEN%
Mul:%LEN%,2
Chex:%DATA%,%LEN%
Thex:%LEN%,%LEN%
Join:%TX%,%LEN%
Join:%TX%,%DATA%
Set:%CRC%,%TX%
CS:Script\crc16.cs     //调用C# CRC16脚本
Join:%TX%,%CRC%  //在%TX%里尾部加上校验的结果
Send:%TX%    //发送%TX%里的数据
[/SC]

十一、如何利用脚本保存收到数据
1、编写如下代码并保存:
//[Setup]和[/Setup]之间的脚本主要用于初始化,只执行一次
[Setup]
FileDlg:%File%,Save//调用保存对话框,选择要保存的文件名称和位置
[/Setup]
[RX]ID{L>0} //如果收到的长度大于0则执行[TX][SC]和[/SC]之间的脚本
[TX][SC]
//如果数据是十六进制,请修改下一行的代码为SData:%File%,%RX%,H,T
SData:%File%,%RX%,S,T//收到的数据%RX%保存到文件,字符串,追加模式
SData:%File%,%ENTER%,S,T//添加回车%ENTER%保存到文件,字符串,追加模式
//添加回车的目的是每次收到的数据都换行保存
[/SC]
2、打开保存的代码并模拟
A17.jpg
十二、如何调试脚本
A18.jpg


下载方法,Q群更新下载:761784089
   A01.jpg
回复

使用道具 举报

ID:147106 发表于 2025-4-25 16:02 | 显示全部楼层
学习一下,是用什么软件写的
回复

使用道具 举报

ID:471574 发表于 2025-4-28 13:33 | 显示全部楼层
qiu4466 发表于 2025-4-25 16:02
学习一下,是用什么软件写的

C#编写的软件
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表