# MySScom **Repository Path**: leon1741/MySScom ## Basic Information - **Project Name**: MySScom - **Description**: 一个自创的串口通信助手和调试助手 - **Primary Language**: C++ - **License**: GPL-3.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 8 - **Forks**: 0 - **Created**: 2022-04-04 - **Last Updated**: 2025-03-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MySScom 一个自创的串口通信调试助手,整体框架基于SScom V3.3版本而设计,但是加入了很多改进的想法。 本程序仅为个人兴趣开发,目前已发布在github以及gitee上进行友好交流,有需要者可以免费下载和使用,但是请不要恶意篡改和传播! github:https://github.com/leon1741/MySScom gitee:https://gitee.com/leon1741/MySScom # 功能说明 - 采用系统自带通信插件,无需额外注册,完美兼容WinXP / Win7 / Win10等多个操作系统; - 自动扫描并列举出当前电脑上所有可用的串口,包括物理串口、USB转232串口、虚拟串口等等; - 多种波特率可选,最大支持921600;数据位、校验位、停止位等参数均可自定义选择; - 接收的数据支持以字符形式或者16进制格式显示,切换灵活,支持中英文显示,无乱码,数据不丢失; - 支持以字符形式或者16进制格式发送数据,可重复发送,可自动补发回车符,发送间隔可自定义; - 可以保存窗口内容到一个文本文件,文件名取自当前日期和时间,保存至程序同级目录的Record文件夹下; - 接收到的数据可定时清空,并支持在清空之前自动保存所有数据,满足长时间挂机调试的应用需求; - 多达40条自定数据的高级发送功能,可统一设置自动重发时间,也可每条数据可单独设置重发间隔(不填或填0表示不发); - 集成校验和计算、显示格式转换以及帧格式封装解封等多项附加功能,提高开发人员设计调试的便利性; - 为防止意外关闭,点击关闭按钮之后程序不退出,而是隐藏到系统任务栏,在任务栏处右击图标方能完全退出; - 全部自定义设置记录在一个配置文件中,关闭时自动保存,打开时自动载入,提高程序的易用性; - 具有文件发送功能,发送过程中以进度条形式和文本形式展示发送进度,便于观察和使用; - 在16进制模式下,支持对所接收到的数据按协议帧自动进行切分显示,并进而支持协议自动回复的功能。可事先录入协议回复模板,当接收到指定的协议数据时,将自动发送应答数据,便于调试; - 支持对所接收到的数据进行过滤显示,支持三种模式,分别是完全不过滤任何内容直接显示、过滤掉指定的内容只显示其他的内容、以及过滤掉其他的内容只显示指定的内容,以提高调试效率; - 支持对关键字符串进行监听,当接收到指定的字符串时自动进行记录并进行弹窗提示,以提高调试效率; - 还有其他更多功能等你探索发现,更期待你的意见和建议...... # 使用说明 1、MySScom依赖于Microsoft Visual C++ 运行环境,如果程序启动时提示“找不到MSVC*.dll”,请点击以下链接下载并安装Microsoft Visual C++ 运行环境【[最新的Microsoft Visual C++可再发行程序包](https://docs.microsoft.com/zh-CN/cpp/windows/latest-supported-vc-redist?view=msvc-150)】。请注意选择【Visual Studio 2015、2017、2019 和 2022】套件中,与你电脑操作系统对应的版本:32位系统选择X86版本,64位系统选择X64版本; 2、本程序为绿色程序,无需安装,双击即可运行。为防止意外关闭,提高调试过程中的可靠性,运行之后点击关闭按钮,程序不会全部退出,而是隐藏到任务栏中。想要完全退出,必须在任务栏处右击菜单中选择退出; 3、支持对串口设备的自动监听,USB转串口设备拔除或者插入时,会自动更新相关设备列表,无需退出后重启; 4、可通过快捷键操作来提高使用效率。在主界面环境下按下述快捷键,即可实现相应的功能(相关提示信息,将主窗口最大化之后会自动进行展示)。更多快捷键功能陆续添加完善中,敬请期待...... - F1 - 弹出系统帮助对话框; - F2 - 在资源管理器中打开record目录; - F5 - 清空接收窗口; - F8 - 开始发送文件; - F12 - 保存接收窗口的数据至文件; 5、程序运行过程中,会自动定时进行更新检测。一旦检测到新版本已经发布,会自动弹出对话框提示用户进行操作,用户点击同意之后会打开相应的下载链接地址进行下载; # 升级日志 ## V6.5.0_20220417 1、规范“关于我”对话框的展示方式,采用网页模式直接打开read.md文件进行展示; 2、增加程序在联网状态下自动检测云端仓库最新版本的功能,检测到版本有更新时自动提示,并在取得用户许可的情况下打开服务器地址链接进行下载; 3、重构整个工程的代码目录,将全部源码文件归整到source目录下便于查阅; 4、优化了高速刷新编辑框内容显示的效率问题,经大量反复测试,对系统资源(CPU+内存)的消耗情况大大优化,远优于Sscom; ## V6.4.0_20180703 1、修改个别时候可能会将窗口坐标误存为-320000导致窗体再次打开时无法显示的问题; 2、增加收到关键字弹窗闪烁提醒的功能。设置好关键字之后,程序自动监控所收到的数据中是否存在关键字,进行弹窗抖动提醒用户查看,并将匹配成功的结果记录下来,可保存至文件。可用于在长时间挂机测试的情况下自动监听系统的复位记录或者某条数据的收发时间等; 3、增加快捷功能键【将窗口最大化之后会在主界面上显示出快捷键的提示信息】: - F1 - 弹出系统帮助对话框; - F2 - 在资源管理器中打开record目录; - F5 - 清空接收窗口; - F8 - 开始发送文件; - F12 - 保存接收窗口的数据至文件; 4、完善了对串口设备的监听机制。发现串口设备变化时,如果当前串口尚未打开,则自动更新。如果当前串口已经打开,则不会自动更新,而是先通知用户,等待当前串口关闭之后再更新; 5、将编辑框的刷新机制改成第一种机制,经过反复测试确认不会出现中文乱码; 6、去除了最大缓冲自动清空的机制,经过反复测试确认接收到大量数据时不会再挂掉; 7、已添加了高精度定时器,精度约为5ms左右。还需进一步测试一下精确度;同时,如果将数据处理函数转移到串口线程,再将其提高优先级,可能可以进一步提高精度; 8、完善自动保存机制,按文件大小划分。目前是按KB来划分; 9、完善了串口枚举的机制,自动剔除重复出现的串口设备防止反复显示; 10、完善了一下setting.ini配置文件的命名规范,并对主窗体的参数读写流程进行了整理; 11、过滤显示窗口中,关闭时不会保存参数,现已修正; 12、保存主窗口发送区的字符串时会丢失'"'引号字符,现已修正; 13、关键字匹配窗口存在功能失效的问题,原因是程序字符串写错,现已修正; 14、软件启动的第一行不会添加时间显示,现已修正; 15、增加一个启动时对配置文件版本号的校验思路,将来可用于实现版本兼容性的自动识别; 16、将整个项目工程由原来的VS 2010编译环境升级为VS 2017编译环境; ## V6.3.0_20170601 1、修改了发送区内容存在双引号时会被漏掉的bug,以及发送文件为空时异常退出的问题; 2、优化了ini配置文件读写流程,特别是针对40个高级发送控件,采用ID号递增的方式进行处理; 3、对发送区所输入的数据,针对16进制模式和字符模式进行区分,增加自动保存和读取的功能; 4、增加了接收过滤机制,可自定义设置过滤字符串,系统只显示符合条件的,其他内容不显示。可实现对串口数据的自定义显示配置,只显示你所关心的数据,对不关心的数据不显示出来; 5、增加了16进制协议自动应答机制。最多可配置8条协议,内容吻合时自动进行回复,便于调试; 6、接收区的编辑框内增加右键菜单,实现复制、清空、以及更改显示字体和背景颜色等功能; ## V6.2.0_20160105 1、增加串口设备自动监视功能,检测到串口设备变化时自动刷新设备列表,免去手动重启的麻烦; ## V6.1.0_20141204 1、对模拟手柄功能增加编译开关,不需要时可以关闭该功能,便于生成通用版本; 2、增加直接发送功能。即:在接收窗口按下键盘,可发送所按下的按键键值到串口上; 3、修正了某些情况下,点击关闭串口按钮时程序可能会出现卡死的问题(线程死等造成); 4、修正了about窗口下点击按钮切换功能页面和升级记录页面时可能会导致程序崩溃的问题; ## V6.0.0_20140901 1、增加模拟手柄功能,可模拟实际的130A6手柄,实现参数读取和配置等功能,便于调试; 2、修改了16进制模式下无法显示0x00字符的问题; 3、修改了发送窗口中的数据如果含有引号时,会无法保存,下次载入时引号会自动丢失的问题; 4、修改了COM10之后编号的串口打开失败的问题; 5、整个项目工程由原来的VC 6.0编译环境升级为VS 2010编译环境; ## V5.4.0_20131218 1、增加文件发送功能,发送过程中以进度条形式和文本形式展示发送进度,便于观察和使用; 2、前次优化EDIT控件消息之后,能够极大幅度的降低CPU的占用率,但是导致中文会出现乱码。于是将该处理机制还原,中文接收方不出现乱码。至此,这2种方案仍在进一步测试和纠结中; ## V5.3.0_20130403 1、增加一个附加功能窗口,集成校验和计算、字符显示和16进制显示模式切换、以及帧封装解封等3个功能,用于调试时候提供一些辅助工具,避免每次都要打开多个调试工具的麻烦; 2、优化接收区EDIT控件消息处理,极大幅度的降低了连续接收大量数据时程序对CPU的占用率。与SSCOM采用极短间隔互相对发,本程序对CPU的占用率远远低于SSCOM; ## V5.2.0_20130312 1、增加16进制下按帧自动换行的功能。自动识别两帧数据之间的间隔,实现每一帧重新换行显示; 2、去掉16进制显示模式与显示时间这两个复选框的互斥,即:在16进制下也可以在帧头显示时间; 3、新增一个复选框,用来设置是否需要显示自身发出去的数据的内容,便于某些情况下调试使用; 4、新增一个复选框,用来设置是否在数据头部分区分显示出该条数据的传输方向,便于调试观察; 5、修改高级发送模式,对每一帧数据增加单独设置发送间隔时间的功能,设为0表示不发送,所有数据可按照统一间隔逐个轮发,也可按照单独间隔逐个轮发,提高实用性和人性化; 6、增加对高级发送窗口的位置记忆功能,关闭时记忆该窗口的位置,打开时自动移动到上次位置; ## V5.1.0_20130203 修改两处笔误。之前的版本在检测到发送数据内容非法时,弹出的提示文字中有笔误,现修正之 ## V5.0.0_20120821 程序原本具有一个窗口控件位置自动调整功能,在高级发送功能开启时自动调整各个控件位置。但是该功能在Win7系统下会导致部分控件位置偏移,影响界面美观,因此修改高级发送功能,由内嵌窗体改为子窗体弹出,使其能在Win7系统下完美兼容使用 ## V4.0.0_20120203 1、改用文件句柄方式实现串口驱动,收发效果均不错。能在没有安装VC的XP系统和win7系统上使用; ## V3.0.0_20120131 1、删除原用的串口通信控件,改用网上下载的自定义类,但是数据接收速度过慢,仍待改进; ## V2.4.0_20111213 1、在状态栏增加行数的显示,并以该值作为自动清空时的判断标准(之前是通过获取编辑框提供的API来判断当前行数,实际使用中发现该接口返回的值有问题,经常数据收到一半就被清空了); 2、字符模式下,以接收到的行数作为清空标准;16进制模式下,以接收到的字符数作为清空标准; 3、状态栏的显示内容根据窗口大小而变化,窗口比较窄时显示比较少,窗口比较宽时显示比较多; ## V2.3.0_20110629 1、在清空窗口内容时增加对显示时间的判断,实现清空之后的第一行能正确显示时间; ## V2.2.0_20110422 1、增加波特率选项值,新增600,1200,921600等不常用的值,以尽可能满足各种场合需求; ## V2.1.0_20110310 1、增加时间显示功能的使用开关。目前在16进制显示模式下不支持同时显示接收时间; 2、增加校验位的选择功能,目前支持None、Odd、Even、Mark、Space四种校验方式; 3、优化程序界面,在托盘菜单中增加一个对话框显示使用帮助和升级说明相关信息; 4、优化程序对普通发送模式和高级发送模式的切换显示,实现精确定位对话框大小; 5、调整数据接收方式,由事件触发改为定时触发,避免频繁接收时CPU占用率过高; ## V2.0.0_20110125 1、接收编辑框换成RichEdit控件; 2、删除多余的控件,简化稳定程序功能; 3、换行时自动在行头位置显示时间,方便查看; 4、通过转移编辑框焦点的方式,彻底解决屏幕闪烁的问题; 5、增加托盘图标,关闭程序时不退出,而是隐藏到托盘,点击托盘菜单才会退出; ## V1.6.0_20101014 1、修改由于长度限制导致程序在启动时自动载入高级发送区域的数据丢失字节的Bug; ## V1.5.0_20100801 1、增加接收区自动清屏时最大行数的自定义设置功能,即接收数据超过最大行数时自动清屏; ## V1.4.0_20100631 1、修正更新数据时屏幕闪烁非常厉害的问题,每次等数据全部接收完毕后再统一刷新显示; ## V1.3.0_20100406 1、新增高级发送功能,多达20条自定义字符串,可选择Hex格式发送,并能定时自动循环发送; 2、增加所有参数的自动保存和读取功能,程序退出时会保存所有参数,程序启动时同步读取; ## V1.2.0_20100206 1、完善了对串口的各项属性的设置功能,能够完整的提供对波特率、数据位和停止位的全部设置; 2、采用EasySize头文件,实现了窗体的完美大小缩放功能; 3、同时,更换了状态栏的实现机制,能够适应窗体的变化而实时更新,效果很好; 4、完善了其他几个机制,包括各种状态机的切换和人性化提示等 ## V1.1.0_20100105 1、加入状态栏功能,对串口的实时状态、所接收和发送的字节数以及其他相关信息进行显示; 2、考虑到状态栏的位置没法实时更改,因此取消了窗口的大小可变及最大化功能,只能固定尺寸; 3、加入了发送文本文件的功能,读取到文件之后在发送窗口显示,并按指定大小分批发送; 4、其实,完全能够再加入一个发送进度的指示条,但是没有合适的地方可以放置,暂时不处理; ## V1.0.0_20091203 1、创建该项目,采用串口枚举机制,实现串口数据的基本收发和显示; 2、提供接收数据的清空和保存功能,包括手动实现和自动实现两种方式; 3、同时对所接收和发送的数据,提供16进制形式和字符形式两种格式进行切换;