# PB-Box,基于Qt C++开发的调试工具箱,内含串口,USB,TCP,UDP等通信工具; **Repository Path**: planb-council/PB-Box ## Basic Information - **Project Name**: PB-Box,基于Qt C++开发的调试工具箱,内含串口,USB,TCP,UDP等通信工具; - **Description**: 基于Qt C++进行开发,USB通信部分基于hid-API实现,其他的通信皆使用Qt自己的库完成。该工具箱将通过动态链接库的形式将各部分以TabWidget的方式实现到主界面,虽然听着挺不错但是还是给开发过程带来了一些麻烦,总之我会尽力解决的!暂时就这些吧! - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 1 - **Created**: 2022-05-01 - **Last Updated**: 2023-10-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 【应用简介】: 1.本软件是基于Qt C++进行开发的多功能通信工具,目前支持UDP、TCP、串口、USB(HID)等4种通信方式。4种通信功能皆采用动态链接库的方式链接到本应用,后续若有模块需要更新可以到对应模块的仓库中获取; # 【应用声明】: 1.本软件大量使用了iconfont网站的图标(万分感谢各图标的作者!),如有侵权请联系删除; 2.本软件的最终解释权归Spectre所有; 3.本软件已经上传至我的蓝奏云,你可以通过如下连接获取到最新版本:; 4.本软件不得运用于商业用途! # 【程序特色】: 1.采用模块化设计,便于各功能的独立更新; 2.程序自带TCP服务器端,且默认处于监听状态,方便其余设备的客户端直接接入(为了当作局域网通信工具所设计的功能,后期应该会关闭默认监听); PS:开发工作仍在进行种,但是程序的基础功能已经基本实现,所以还请放心使用; # 【已知问题】: 1.2022年7月20日 —— 数据转发功能待添加;(//@TODO:) 2.2022年9月12日 —— 虽然全程使用了tr,但是多国语言尚未完成适配; # 发布版本: Beta-V1.6 发布日期: 2022年7月29日 操作系统: Windows10 64位 Qt版本: Qt 5.12.12 编译器: Qt 5.12.12 MinGW 64 修改说明: 1.更新HID_USB模块版本至Bate-V2.2(2022年7月29日); ============================== # 发布版本: Beta-V1.5 发布日期: 2022年7月20日 操作系统: Windows10 64位 Qt版本: Qt 5.12.12 编译器: Qt 5.12.12 MinGW 64 修改说明: 1.移植了HID_USB中所用到的参数保存函数,用于保存程序设置参数; ============================== # 发布版本: Beta-V1.4 发布日期: 2022年6月30日 操作系统: Windows10 64位 Qt版本: Qt 5.12.12 编译器: Qt 5.12.12 MinGW 64 修改说明: 1.更新了HIDUSB模块; 1.更新了Serial模块; ============================== # 发布版本: Beta-V1.3 发布日期: 2022年6月29日 操作系统: Windows10 64位 Qt版本: Qt 5.12.12 编译器: Qt 5.12.12 MinGW 64 修改说明: 1.更新了HIDUSB模块; ============================== # 发布版本: Beta-V1.2 发布日期: 2022年6月10日 操作系统: Windows10 64位 Qt版本: Qt 5.12.12 编译器: Qt 5.12.12 MinGW 64 修改说明: 1.更新了HIDUSB模块; ============================== # 发布版本: Beta-V1.1 发布日期: 2022年6月9日 操作系统: Windows10 64位 Qt版本: Qt 5.12.12 编译器: Qt 5.12.12 MinGW 64 修改说明: 1.更新了HIDUSB模块; 2.更新了Serial模块; 3.取消了最小尺寸锁定,优化了程序在低分辨率设备下的显示效果; ============================== # 发布版本: Beta-V1.0 发布日期: 2022年5月30日 操作系统: Windows10 64位 Qt版本: Qt 5.12.12 编译器: Qt 5.12.12 MinGW 64 修改说明: 1.更新了HIDUSB模块; ============================== # 发布版本: Beta-V0.9 发布日期: 2022年5月20日 操作系统: Windows10 64位 Qt版本: Qt 5.12.12 编译器: Qt 5.12.12 MinGW 64 修改说明: 1.更新了HIDUSB与Serial模块; 已知问题: 1.MainWindowModel_0的Qt样式表是在还没有学习样式表时使用的,需要修改。目标是后期通过导入qss文件完成样式的选择与改动; 2.Serial模块暂未开发;(已解决) 3.USB模块需要重新开发;(已解决) 4.TCP模块处于服务器模式下点击tabwidget的关闭按钮会出现闪退现象; 5.Qt语言家无法检测出UDP模块中的tr函数,而目前我也不知道单独对UDP模块进行多语言设计是否可行,故最坏的情况可能是只能通过Qt语言家完成对MainWindowModel_0模块的汉化; 6.UDP模块在组播模式bind端口失败后,编译器显示bind函数一直在反复再次尝试bind可能会导致性能问题; 7.窗口序号的管控是通过count完成的,故在关闭过窗口后再打开新窗口会出现序号重复的窗口; 8.尝试用QList容器记录并管理TabWidget页面的增删,但是TabWidget自生的Current是会动态增减的,所以该方案没办法使用; 9.2022年5月6日 —— Mainwindow的IP ComboBox有异常,会遗漏掉查询的IP; 10.2022年5月6日 —— TCP模块在服务器应答模式下应该显示对方的IP与端口号的原目标网络信息模块忘了设计了; 11.2022年5月16日 —— HID_USB_Module通过TabWidget关闭后不会保存参数;(已解决) 12.2022年5月16日 —— 添加HID_USB_Module后通过winployqt打包时不会添加数据库相关驱动!如果不手动添加数据库相关的q.dll将为导致HID_USB_Module无法启动! ============================== # 发布版本: Beta-V0.8 发布日期: 2022年5月17日 操作系统: Windows10 64位 Qt版本: Qt 5.12.12 编译器: Qt 5.12.12 MinGW 64 题外话: 1.不知不觉PB-Box主程序已经10天没更新了,不过这10天可不是偷懒去了,而是去开发剩下两个模块去了!!! 2.本以为导入到PB-Box后我的火箭差不多就可以收工了,结果导入后又有导入后的问题,我太难了…… 3.造这个火箭的初衷就是用来写简历的,所以最开始的目的就是复习Qt的同时把项目涉及到的面尽可能广一点,现在看来想在应届潮来临前完成火箭开发,然后换工作的愿望有点悬了,还有样式表和HIDAPI的bug没弄,今天又出一个新Bug…… 4.综上所述,原计划中规划的一些功能可能要鸽了……所以在下面暂且记录一下吧,等以后换完工作后有时间再更新吧!鸽掉的计划: ①:调试工具数据自动转换为线性图像的模块; ②:基于TCP协议的文件传输模块; ③:远程控制调试工具的模块; 5,虽然调试模块暂时不打算做了,不过调试信息TCP转发应该还是会做的! 修改说明: 1.解决PB_Box-HID_USB_Module的导入后无法保存配置参数的问题; 已知问题: 1.MainWindowModel_0的Qt样式表是在还没有学习样式表时使用的,需要修改。目标是后期通过导入qss文件完成样式的选择与改动; 2.Serial模块暂未开发;(已解决) 3.USB模块需要重新开发;(已解决) 4.TCP模块处于服务器模式下点击tabwidget的关闭按钮会出现闪退现象; 5.Qt语言家无法检测出UDP模块中的tr函数,而目前我也不知道单独对UDP模块进行多语言设计是否可行,故最坏的情况可能是只能通过Qt语言家完成对MainWindowModel_0模块的汉化; 6.UDP模块在组播模式bind端口失败后,编译器显示bind函数一直在反复再次尝试bind可能会导致性能问题; 7.窗口序号的管控是通过count完成的,故在关闭过窗口后再打开新窗口会出现序号重复的窗口; 8.尝试用QList容器记录并管理TabWidget页面的增删,但是TabWidget自生的Current是会动态增减的,所以该方案没办法使用; 9.2022年5月6日 —— Mainwindow的IP ComboBox有异常,会遗漏掉查询的IP; 10.2022年5月6日 —— TCP模块在服务器应答模式下应该显示对方的IP与端口号的原目标网络信息模块忘了设计了; 11.2022年5月16日 —— HID_USB_Module通过TabWidget关闭后不会保存参数;(已解决) 12.2022年5月16日 —— 添加HID_USB_Module后通过winployqt打包时不会添加数据库相关驱动!如果不手动添加数据库相关的q.dll将为导致HID_USB_Module无法启动! ============================== # 发布版本: Beta-V0.7 发布日期: 2022年5月16日 操作系统: Windows10 64位 Qt版本: Qt 5.12.12 编译器: Qt 5.12.12 MinGW 64 题外话: 1.不知不觉PB-Box主程序已经10天没更新了,不过这10天可不是偷懒去了,而是去开发剩下两个模块去了!!! 2.本以为导入到PB-Box后我的火箭差不多就可以收工了,结果导入后又有导入后的问题,我太难了…… 3.造这个火箭的初衷就是用来写简历的,所以最开始的目的就是复习Qt的同时把项目涉及到的面尽可能广一点,现在看来想在应届潮来临前完成火箭开发,然后换工作的愿望有点悬了,还有样式表和HIDAPI的bug没弄,今天又出一个新Bug…… 4.综上所述,原计划中规划的一些功能可能要鸽了……所以在下面暂且记录一下吧,等以后换完工作后有时间再更新吧!鸽掉的计划: ①:调试工具数据自动转换为线性图像的模块; ②:基于TCP协议的文件传输模块; ③:远程控制调试工具的模块; 5,虽然调试模块暂时不打算做了,不过调试信息TCP转发应该还是会做的! 修改说明: 1.完成PB_Box-HID_USB_Module的添加; 2.完成PB_Box-Serial_Module的添加; 已知问题: 1.MainWindowModel_0的Qt样式表是在还没有学习样式表时使用的,需要修改。目标是后期通过导入qss文件完成样式的选择与改动; 2.Serial模块暂未开发; 3.USB模块需要重新开发; 4.TCP模块处于服务器模式下点击tabwidget的关闭按钮会出现闪退现象; 5.Qt语言家无法检测出UDP模块中的tr函数,而目前我也不知道单独对UDP模块进行多语言设计是否可行,故最坏的情况可能是只能通过Qt语言家完成对MainWindowModel_0模块的汉化; 6.UDP模块在组播模式bind端口失败后,编译器显示bind函数一直在反复再次尝试bind可能会导致性能问题; 7.窗口序号的管控是通过count完成的,故在关闭过窗口后再打开新窗口会出现序号重复的窗口; 8.尝试用QList容器记录并管理TabWidget页面的增删,但是TabWidget自生的Current是会动态增减的,所以该方案没办法使用; 9.2022年5月6日 —— Mainwindow的IP ComboBox有异常,会遗漏掉查询的IP; 10.2022年5月6日 —— TCP模块在服务器应答模式下应该显示对方的IP与端口号的原目标网络信息模块忘了设计了; 11.2022年5月16日 —— HID_USB_Module通过TabWidget关闭后不会保存参数; 12.2022年5月16日 —— 添加HID_USB_Module后通过winployqt打包时不会添加数据库相关驱动!如果不手动添加数据库相关的q.dll将为导致HID_USB_Module无法启动! ============================== # 发布版本: Beta-V0.6 发布日期: 2022年5月6日 操作系统: Windows10 64位 Qt版本: Qt 5.12.12 编译器: Qt 5.12.12 MinGW 64 修改说明: 1.解决2022年5月6日——已知问题9,是由于在IP查找函数中重复删除IP信息导致; 2.增加调试函数,使应用启动后自动开启TCP服务器的监听,同时为了配合公司电脑的双IP,程序默认使用靠后面的代码作为监听IP; 3.增加注册表自启动检测函数,用于检测程序是否已经设置了自启动功能; 已知问题: 1.MainWindowModel_0的Qt样式表是在还没有学习样式表时使用的,需要修改。目标是后期通过导入qss文件完成样式的选择与改动; 2.Serial模块暂未开发; 3.USB模块需要重新开发; 4.TCP模块处于服务器模式下点击tabwidget的关闭按钮会出现闪退现象; 5.Qt语言家无法检测出UDP模块中的tr函数,而目前我也不知道单独对UDP模块进行多语言设计是否可行,故最坏的情况可能是只能通过Qt语言家完成对MainWindowModel_0模块的汉化; 6.UDP模块在组播模式bind端口失败后,编译器显示bind函数一直在反复再次尝试bind可能会导致性能问题; 7.窗口序号的管控是通过count完成的,故在关闭过窗口后再打开新窗口会出现序号重复的窗口; 8.尝试用QList容器记录并管理TabWidget页面的增删,但是TabWidget自生的Current是会动态增减的,所以该方案没办法使用; 9.2022年5月6日——Mainwindow的IP ComboBox有异常,会遗漏掉查询的IP; 10.2022年5月6日——TCP模块在服务器应答模式下应该显示对方的IP与端口号的原目标网络信息模块忘了设计了; ============================== # 发布版本: Beta-V0.5 发布日期: 2022年5月5日 操作系统: Windows10 64位 Qt版本: Qt 5.12.12 编译器: Qt 5.12.12 MinGW 64 修改说明: 1.修复了切换IP协议IP地址不刷新的问题; 2.修复了开始监听后仍然能够更改网络信息的漏洞; 已知问题: 1.MainWindowModel_0的Qt样式表是在还没有学习样式表时使用的,需要修改。目标是后期通过导入qss文件完成样式的选择与改动; 2.Serial模块暂未开发; 3.USB模块需要重新开发; 4.TCP模块处于服务器模式下点击tabwidget的关闭按钮会出现闪退现象; 5.Qt语言家无法检测出UDP模块中的tr函数,而目前我也不知道单独对UDP模块进行多语言设计是否可行,故最坏的情况可能是只能通过Qt语言家完成对MainWindowModel_0模块的汉化; 6.UDP模块在组播模式bind端口失败后,编译器显示bind函数一直在反复再次尝试bind可能会导致性能问题; 7.窗口序号的管控是通过count完成的,故在关闭过窗口后再打开新窗口会出现序号重复的窗口; 8.尝试用QList容器记录并管理TabWidget页面的增删,但是TabWidget自生的Current是会动态增减的,所以该方案没办法使用; ============================== # 发布版本: Beta-V0.4 发布日期: 2022年5月5日 操作系统: Windows10 64位 Qt版本: Qt 5.12.12 编译器: Qt 5.12.12 MinGW 64 修改说明: 1.TCP与UDP模块的开发基本已经完成; 2.对消息弹窗进行了修改,隐藏时弹窗提示,最小化时还原为标准窗口; 3.参考UDP模块修改了TCP模块的构造函数的传参,使TCP模块能和UDP模块一样记录关于TabWidget的页面信息; 已知问题: 1.MainWindowModel_0的Qt样式表是在还没有学习样式表时使用的,需要修改。目标是后期通过导入qss文件完成样式的选择与改动; 2.Serial模块暂未开发; 3.USB模块需要重新开发; 4.TCP模块处于服务器模式下点击tabwidget的关闭按钮会出现闪退现象; 5.Qt语言家无法检测出UDP模块中的tr函数,而目前我也不知道单独对UDP模块进行多语言设计是否可行,故最坏的情况可能是只能通过Qt语言家完成对MainWindowModel_0模块的汉化; 6.UDP模块在组播模式bind端口失败后,编译器显示bind函数一直在反复再次尝试bind可能会导致性能问题; 7.窗口序号的管控是通过count完成的,故在关闭过窗口后再打开新窗口会出现序号重复的窗口; 8.尝试用QList容器记录并管理TabWidget页面的增删,但是TabWidget自生的Current是会动态增减的,所以该方案没办法使用; ============================== # 发布版本: Beta-V0.3 发布日期: 2022年5月3日 操作系统: Windows10 64位 Qt版本: Qt 5.12.12 编译器: Qt 5.12.12 MinGW 64 修改说明: 1.在mainwindow中添加了TCP模块的Action,但是关于TCP通信模块的设计仍然还在构思中,如果明天没有结果的话应该会直接放弃TCP模块的多线程设计。且因为TCP服务器端的接收套接字是通过TCPSerive接受连接请求之后获取的,故暂时没有想到较好的多线程设计方案; 2.完成了TCP模块的图形界面的设计,几乎原封不动的CV了UDP模块的界面。目前因为模块化设计,故TCP以及UDP模块的代码暂时不会出现在该仓库中,后期各模块的代码也将以动态链接库的形式呈现。当整个项目的开发结束后可能会考虑开源各个模块; PS——关于TCP模块的设计: Ⅰ.目前可行的两种方式一种是通过movetothread函数将主线程的套接字(自己写个含套接字以及对套接字读写函数的类的对象)移动至子线程,消息的收发皆通过信号完成。按照我现在所掌握的多线程知识……估计所有的知识都得在RUN函数中轮询完成,而且写出来估计又是一个bug多于功能的模块;参考:https://blog.csdn.net/Ilson_/article/details/112853113 Ⅱ.而另外一种则是通过重写QTCPSerive类的incomingConnection(qintptr handle)函数实现,具体也需要大量时间完成……而我现在挺缺时间的;参考:https://blog.csdn.net/qq78442761/article/details/120405480 ============================== # 发布版本: Beta-V0.2 发布日期: 2022年5月2日 操作系统: Windows10 64位 Qt版本: Qt 5.12.12 编译器: Qt 5.12.12 MinGW 64 修改说明: 1.在UDP模块中添加用于返回接收到的消息到MainWindowModel_0的信号函数,返回内容包括接收到的信息以及接收到信息的窗口,后期其他模块的消息提示都可以通过这种方案实现; 2.修改UDP模块,增加用于存储自身在TabWidget中对应的窗口信息的对象成员变量; 3.修改MainWindowModel_0以及UDP模块的编码格式,由原本的System(GB2312)修改为UTF-8; 4.修改MainWindowModel_0以及UDP模块,将原本的用于转换ASCII字符格式的QString::fromLocal8Bit()函数全部替换为tr()函数,并通过Qt语言家生成多语言文件。同时修改工程描述文件添加多语言文件的路径信息; 5.修复了通过TabWidget的关闭按钮关闭UDP客户端后,客户端仍然在后台运行的Bug; 6.修复了UDP模块在退出连接后连接按钮依然被禁用的bug; 7.新增接收到消息自动跳转到接收到消息的窗口,但是因为窗口序号是通过count所得,所以该功能还存在着一些问题; 已知问题: 1.MainWindowModel_0的Qt样式表是在还没有学习样式表时使用的,需要修改。目标是后期通过导入qss文件完成样式的选择与改动; 2.Serial模块暂未开发; 3.USB模块需要重新开发; 4.TCP服务器如果在MainWindow中创建会导致无法在子线程中连接套接字!Qt多线程的moveToThread函数貌似可以解决这种情况需要研究一下; 5.Qt语言家无法检测出UDP模块中的tr函数,而目前我也不知道单独对UDP模块进行多语言设计是否可行,故最坏的情况可能是只能通过Qt语言家完成对MainWindowModel_0模块的汉化; 6.UDP模块在组播模式bind端口失败后,编译器显示bind函数一直在反复再次尝试bind可能会导致性能问题; 7.窗口序号的管控是通过count完成的,故在关闭过窗口后再打开新窗口会出现序号重复的窗口; ============================== # 发布版本: Beta-V0.1 发布日期: 2022年5月1日 操作系统: Windows10 64位 Qt版本: Qt 5.12.12 编译器: Qt 5.12.12 MinGW 64 修改说明(首次上传): 1.将已经完成的UDP调试工具通过动态链接库的方式链接到MainWindowModel_0中; 2.MainWindowModel_0自身支持系统托盘图标和通知; 3.MainWindowModel_0已经完成对UDP模块的多线程模式,UDP工作模式的选择功能的对接; 已知问题: 1.MainWindowModel_0的Qt样式表是在还没有学习样式表时使用的,需要修改。目标是后期通过导入qss文件完成样式的选择与改动; 2.UDP的通信信息暂时没办法反馈到QSystemTrayIcon中,需要尽快解决; 3.Serial模块暂未开发; 4.USB模块需要重新开发; 5.TCP服务器如果在MainWindow中创建会导致无法在子线程中连接套接字!Qt多线程的moveToThread函数貌似可以解决这种情况需要研究一下;