精华内容
下载资源
问答
  • java 串口调试助手 源码
    2021-02-12 14:49:24

    【实例简介】简单的串口调试助手

    【实例截图】

    22ae0e58e053712a64f953267f8f16d8.png

    【核心代码】import gnu.io.CommPortIdentifier;

    import gnu.io.NoSuchPortException;

    import gnu.io.PortInUseException;

    import gnu.io.SerialPort;

    import gnu.io.SerialPortEvent;

    import gnu.io.SerialPortEventListener;

    import gnu.io.UnsupportedCommOperationException;

    import java.io.BufferedInputStream;

    import java.io.BufferedReader;

    import java.io.IOException;

    import java.io.InputStream;

    import java.io.InputStreamReader;

    import java.io.OutputStream;

    import java.util.ArrayList;

    import java.util.Enumeration;

    import java.util.TooManyListenersException;

    public class Comm implements SerialPortEventListener, Runnable {

    private InputStream is = null;

    private OutputStream os =null;

    private byte[] chars = new byte[64];

    private SerialPort port = null;

    public ArrayList listPortChoices(){

    ArrayList list = new ArrayList();

    CommPortIdentifier portId;

    Enumeration en = CommPortIdentifier.getPortIdentifiers();

    while (en.hasMoreElements()) {

    portId = (CommPortIdentifier)en.nextElement();

    if(portId.getPortType() == CommPortIdentifier.PORT_SERIAL){

    list.add(portId.getName());

    }

    }

    return list;

    }

    public boolean openPort(String portName) throws TooManyListenersException{

    boolean bl = false;

    try {

    CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier(portName);//获得串口管理对象

    port = (SerialPort) portId.open(portName,3000);//打开并获得串口对象

    port.setSerialPortParams(9600,8,1,0);//配置串口

    is = port.getInputStream();//获得串口输入流

    os = port.getOutputStream();//获得串口输出流

    bl = true;

    } catch (NoSuchPortException e) {

    e.printStackTrace();

    } catch (PortInUseException e) {

    e.printStackTrace();

    System.out.println("该串口已被其他程序占用");

    } catch (UnsupportedCommOperationException e) {

    e.printStackTrace();

    } catch (IOException e) {

    e.printStackTrace();

    }

    return bl;

    }

    public boolean checkPort(){

    if(port == null){

    return true;

    }else{

    return false;

    }

    }

    public void closePort(){

    if (port != null) {

    try {

    os.close();

    is.close();

    } catch (IOException e) {

    System.err.println(e);

    }

    }

    port.removeEventListener();

    port.close();

    port = null;

    }

    public void write(byte[] out,int len){

    try{

    for(int i=0;i

    os.write(out[i]);

    os.flush();

    }

    return;

    }catch(IOException e1){

    System.out.println(e1);

    return;

    }catch(ArrayIndexOutOfBoundsException e2){

    System.out.println(e2);

    }

    }

    public void Read() throws TooManyListenersException{

    try{

    is = new BufferedInputStream(port.getInputStream());

    }catch(IOException e){

    throw new RuntimeException();

    }

    try{

    port.addEventListener(this);

    }catch(TooManyListenersException e){

    throw new RuntimeException(e.getMessage());

    }

    port.notifyOnDataAvailable(true);

    if(true){

    Thread thread = new Thread(this);

    thread.start();

    }

    }

    @Override

    public void serialEvent(SerialPortEvent event) {

    // TODO Auto-generated method stub

    switch (event.getEventType())

    {

    case SerialPortEvent.BI:/*Break interrupt,通讯中断*/

    case SerialPortEvent.OE:/*Overrun error,溢位错误*/

    case SerialPortEvent.FE:/*Framing error,传帧错误*/

    case SerialPortEvent.PE:/*Parity error,校验错误*/

    case SerialPortEvent.CD:/*Carrier detect,载波检测*/

    case SerialPortEvent.CTS:/*Clear to send,清除发送*/

    case SerialPortEvent.DSR:/*Data set ready,数据设备就绪*/

    case SerialPortEvent.RI:/*Ring indicator,响铃指示*/

    case SerialPortEvent.OUTPUT_BUFFER_EMPTY:/*Output buffer is empty,输出缓冲区清空*/

    break;

    case SerialPortEvent.DATA_AVAILABLE:

    byte[] readbuffer = new byte[1024];

    String readstr = null;

    String s2 = null;

    try{

    while(is.available()>0){

    is.read(readbuffer);

    readstr = new String(readbuffer).trim();

    }

    s2 = new String(readbuffer).trim();

    }catch(IOException e){

    }

    }

    }

    @Override

    public void run() {

    // TODO Auto-generated method stub

    String temp = null;

    int len = 0;

    try {

    len = is.read(chars);

    } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    while(true){

    if(checkPort()){

    while(len!=-1){

    temp = new String(chars,0,len);

    System.out.println(temp);

    }

    }else{

    }

    }

    }

    }

    更多相关内容
  • 串口工具,包括串口调试助手和清除COM占用工具(虚拟COM已删除但还显示使用中的),一键清除,比较方便
  • 嵌入式开发工程师必备的串口网络调试助手 ●本软件主要功能如下: 1、串口,TCP客户端/服务端,UDP客户端/服务端通讯调试 2、支持在发送数据包尾部指定位置添加CRC(ModbusCRC16、CCITT-CRC16、XOR、SUM、CRC32) 3...
  • 程序员串口调试助手

    2018-10-30 18:57:50
    程序员串口调试助手,可以实时调试串口,查看到串口接收发出的指令,跟一般串口调试助手不同,一般助手只有一个应用程序调试占用,本助手在连接串口的同时,代码端也可以接收发出串口的相关信息指令,非常好用。...
  • Awen串口调试助手

    2018-07-03 15:58:31
    Awen串口调试助手。。。。。。。打开串口调试助手,设置COM1的波特率、奇偶校验位、数据位、停止位等参数,同时确保COM2是未占用状态。我们这样设置,是为了让COM1负责发送数据,COM2负责接收数据。如果COM2也被占用...
  • 通用串口调试助手

    2018-10-30 19:17:37
    通用串口调试助手,每次串口只可以当前一个应用程序占用。欢迎下载。
  • 我写的串口调试助手程序以及源代码.警告:请勿将本软件源代码用于任何商业用途。其实吧, 我写的这个串口软件绝对比网上流传的一些串口调试软件好用很多, 对于软件,我本身并没有作太多推广, 一些功能我由于懒也没有...

    我写的串口调试助手程序以及源代码.

    警告:请勿将本软件源代码用于任何商业用途。

    其实吧, 我写的这个串口软件绝对比网上流传的一些串口调试软件好用很多, 对于软件,我本身并没有作

    太多推广, 一些功能我由于懒也没有文档化; 如果您正在使用, 也觉得我说得没错, 还望您帮忙推广一下. 感激!

    本程序最近正在使用C++完全重构, github上面的源代码无法通过编译~~

    敬请期待最新版本!

    微云你就一坑货, 说了的链接永久有效呢?

    声明:本软件为开源软件,绝对不包含任何对系统不利的代码,对于360的那种行为,我不想说什么.

    软件界面:

    768ba19b8f0ddb640181bd9688d95917.png

    f2518b31007cd7f77a81a8738f72441a.png

    -------------------------------------------------------------------------------------------------------------------------

    说明: 更新信息可能不会再更新到这里, 请到GitHub上面查看.

    更新:

    2014-07-07:    ①优化:接收数据时,如果最后一个字符是'\r'或'\n',则会在一定时间内等待接收所有'\r','\n'字符,避免导致读取'\r\n'可能造成的两次换行

    ②更改:除已经提到的那三种情况, 还有使用'\r\n\r'三个字符作为换行符使用的, 已增加支持

    2014-07-07:

    ①修复:回车换行字符'\r','\n','\r\n'均能达到换行效果

    ②修复:一开始"忽略回车"等无法点击问题

    ③优化:简化对数据中包含'\0'的数据的处理

    ④增加:简洁界面模式时把工具栏放到左边

    ⑤更改:只显示接收区按下的"回车"字符为"",其它不显示

    ⑥增加:接收区增加一个"清空数据"菜单

    2014-07-06 1.17:

    ①增加:允许从接收区输入字符并发送(更友好的类交互模式)

    会显示的字符包括:

    ' '     

    '\b'   

    '\t'   

    '\r'   

    a02f3f7010243c80822ca6f1211523c2.png

    感觉输入效果还不错:

    42ab9b25efd9e620da36864e3cba2f18.png

    ②更改:更改了字符接收区/发送区的字体为Consolas等宽字体,不再使用原来的Courier字体

    ③增加:简洁模式 - 此模式下大部分界面元素会被隐藏, 有时候这样更舒服

    见上图所示, 左下角为"简洁模式"开关, 开启简洁模式后就像上图, 是不是很简洁?

    ④增加:主窗口的自动界面布局(允许拖动改变窗口大小,控件坐标自动调整)

    ⑤更改:默认使用的模式改为:字符接收+字符发送

    2014-07-05 1.16 (未对外发布):

    ①字符接收数据时,增加对控制字符Backspace的支持(即'\b'),效果就是向前删除一个字符

    90610d49730918bbf165156b7c344cde.png

    ②修复一处中文检测错误(原来是对的, 不知道什么时候改错了

    ③删除了窗体大小调整(下个版本即将使用自动布局)

    2014-03-03 1.15:

    更新:支持手动输入非标准波特率

    改进:增加了几个功能快捷键,比如Alt+S为发送,....

    优化:修正:如果接收缓冲区有未显示的数据,则会在按下继续显示时进行提示,而不是原来的在接收到下一次的数据时进行提示;

    2013-11-02 1.14:

    更新:修改了原来的命令发送模式的界面,现在变得更加友好了

    如下图, 先选择要发送的命令列表文件:

    07b1495076f61e0119356d0ab24c898e.png

    点击打开, 将会打开如下界面:

    e696e7153475642c1bc72cacc2af4154.png

    1.上面的代码是我测试蓝牙芯片用到的命令列表文件, 点击"发送命令"就会发送对应的一条命令

    2.16进制还是原来的要求, 2个一组即可; 对于字符数据:默认开启转义字符功能, 比如 '\n' 就代表换行,

    支持字符型转义字符有6个, \n,\r,\\,\t,\a,\v,\b, 那些可见的字符不需要转义, 比如引号,问号...

    支持的16进制转义字符格式:\x??  - 其中, 一个?代表一个16进制字符, 以上4个字符组成一个16进制值,缺一不可

    3.文本框中的数据可以在发送时随时修改,回车键可看到效果, (但修改的内容目前不能更新到原来的本地文件上)

    4.注意到数据类型后面的"双击改变"几个字样, 也就是说通过双击, 可以改变那条命令的解析格式

    5.数据大小是指最终要被发送的数据的大小, 而不是转义前的大小

    命令文件的格式举例:

    C:初始化SPP库:at+init\r\n

    C:查询任意访问码的蓝牙设备:at+iac=9e8b33\r\n

    C:查询设备类为0x1f1f的蓝牙设备:at+class=1f1f\r\n

    C:设置查询模式:at+inqm=1,9,48\r\n

    C:过滤,查询周边蓝牙设备:at+inq\r\n

    H:16进制测试:12 45 67 4f

    分为3部分组成, 两者之间用冒号隔开:

    第1部分:C或者H(大写), 代表数据是16进制还是字符数据

    第2部分:命令的名字

    第3部分:数据对应的数据

    BUG修复:

    上一个版本在发送数据前忘记检查串口是否已经打开了, 已修复~

    ----------------------------------------------------------------------------------------------------------

    2012-12-24 1.0.0.0:

    发布第1个版本

    2012-12-26:

    自动识别当前存在,插入,移除的串口号

    2013-01-11 1.0.0.1:

    增加保存接收区数据到文件(16进制/文本形式)

    增加从文件读数据到发送区(16进制/文本形式)

    增加暂停显示功能

    增加复制发送/接收区数据到剪贴板

    2013-01-18 1.0.0.2:

    修复:文本文件,16二进制文件读取错误

    修复:程序内部缓冲区满后使程序进入死循环

    修复:文本字符方式显示接收的数据时产生不正确的换行符的错误,若要产生换行符, 请使用"\n"

    2013-02-08 1.0.0.3:

    内部程序作了许多的优化工作,包含数据的发送方式等

    修复接收数据时鼠标在接收区的文本选择造成的干扰

    2013-02-14 1.0.0.4:

    增加显示出0~127号ASCII对应8,10,16进制功能

    2013-02-24 1.0.0.5,今天元宵节:

    更改原来的1~64串口列表到自动检测计算机上的可用串口

    2013-02-27 1.0.0.6:

    若发送文本,则自动发送被自动取消(若自动发送选项已打开)

    在显示模式下不允许对接收区数据进行选择操作

    提供硬件支持的串口设备设置

    为用户提供串口超时设置

    提供手动设置DTR/RTS引脚电平

    2013-03-01  1.0.0.7:

    修改原计算器(系统)为表达式求值计算器(简单版本)

    2013-03-03:

    添加:菜单添加

    修改:在关闭串口后自动发送前面的钩不再自动取消(如果已经选中)

    修改:串口被关闭/移除后串口列表回到第一个串口设备的BUG

    2013-03-04:

    修改:现在在串口列表中可以显示串口在设备管理器中的名字了

    修正:无法显示 MSP430-FETUIF Debugger 的串口号(现在调用SetupApi更新列表)

    2013-03-05:

    为了方便数据的统计与显示,16进制内容与字符内容被显示到不同的编辑框中

    2013-03-09 1.0.0.8:

    修正在使用SetupApi枚举串口设备时未检测并口设备而造成的内存异常访问错误

    减少在某些波特率(如:19200bps)下丢包严重的情况(如:MSP430串口),有时候还是会发生,等待修复.某些软件(如:SComAssistant采用每

    次只读一个字节的办法效果还行, 就是速度有点慢. 我改成了WaitCommEvent函数调用了(原来是Pending ReadFile),减少了CPU占用(有些串口驱动并不总是支持同步操作.

    以前只管ReadFile+输出nRead字节,这里错误,ReadFile并不保证读取到要求的数据量后才返回,这里会导致严重丢包,WriteFile亦然.

    速度减慢,但数据更完整

    2013-03-10 1.0.0.9:

    修正:因为在格式化字符串的最后少写了一句 *pb = '\0',导致接收区数据显示错误!

    修复:对utils.hex2chs和add_text作了大量修改,大大减少数据丢包,貌似没有丢包?,细节处理参见源程序

    1.0.0.8版本因为内部原因速度严重减慢, 1.0.0.9回到原来的快速!

    2013-03-18:

    更正:若为字符显示方式,16进制方式保存不被允许,因为格式基本上不满足!

    2013-03-23 1.10:

    添加:工作模式中,右键点击接收区字符文本框可以使能中文显示模式(不推荐),由于中文字符由

    两个字节构成,所以:一旦在某一次接收过程中只

    接收到了中文字符的一个字节,那么数据就会显示出错, 这个无法避免, 所以建议尽量不使能中文显示模式.

    修正:用C语言的人们都习惯使用'\n'作为换行符,我也这样使用,

    但偏偏Windows的编辑框以'\r\n'作为换行符,没有办法,我不得

    不把所有的'\n'换成'\r\n',效率必然会下降,而且我不得不计算出

    \n的个数先 --> 为了计算所需缓冲区的大小.

    添加:现在可以显示出还未被发送出去的数据计数.

    添加:新增计时器,打开串口后开始计时,关闭后停止计时.

    2013-03-25:

    修正:大大减少中文乱码的问题.细节处理见代码.

    增加:字符串转16进制数组功能,工具菜单里面.

    2013-04-04:

    修正:无法复制接收区字符文本的BUG.

    小提示:在选择串口时,如果没有任何可用的串口,则进行提示更新.

    2013-04-07:

    修改:完全修改了utils.str2hex的实现,大大增加了16进制输入的灵活性.

    现在的要求:每个16进制值由两个相邻字符组成,无其它限制.(以前是2个相邻字符+一个空格)

    2013-04-11:

    发送字符数据时,对于换行,只发送'\n',不再发送'\r\n',注意:结尾的'\0\'不被发送!

    2013-04-13:

    修正:更改发送与接收方式为异步方式.

    添加:简单波形显示.

    2013-04-23:

    修正:发送与接收方式改回同步方式!坑~

    修正:当发送操作达到100次时无法继续发送的BUG!

    修改:优化内部线程同步机制,避免程序停止工作(失去响应)!

    优化:优化自动发送数据的方式,提高精度,减小内存/CPU占用!

    小提示:在加载/保存文件时,若不清楚打开/保存方式,可以查看简单的帮助信息!

    2013-05-11:明天母亲节

    修正:终于找到一个比较好的办法来处理自动发送用到的重复数据了,呵呵,时间下限减少到10ms

    2013-07-05:

    临时修正:选择从文件加载并取消后, 串口号选择的ComboBox会消失不见,不知道原因,临时已解决

    2013-07-14:

    改进:程序内部改进内存分配算法,避免因程序错误造成内存泄漏

    2013-07-20 1.12:

    2013-09-10 1.13 今天教师节:

    增加:现在可以手动编写待发送的命令文件,并发送命令了 - 在发送文件时选择 命令文件, 格式见博客后面的介绍

    增加:字符发送模式下,可以选择取消回车换行符的发送,可以选择插入转义字符

    1.支持的字符型转义字符:

    \r,\n,\t,\v,\a,\b,\\

    2.支持的16进制转义字符格式:

    \x?? - 其中一个问号代表一个16进制字符, 不可省略其一,

    必需保证4个字符的格式

    3.'?',''','"', 等print-able字符不需要转义

    展开全文
  • 仿照成品制作一个自己用Qt编写的串口助手。 1. 布局UI界面 创建QWidget工程,布局UI界面:拖入2个 Plain Text Edit,作为串口数据的接收显示和发送框。 拖入几个 Combo Box 、Label 和 Push Button,使用两个...

     

    这章来学习串口数据流操作。仿照已有成品制作一个用Qt开发的串口调试助手。

    介于篇幅有限,本篇只介绍一个最简单的能收发的串口调试助手的制作。后续篇幅会陆续对剩余代码进行讲解,并添加各种功能,对显示、操作、功能的各方面继续优化,达成与市面上的成品一样的功能。目标精简、可靠、高效、便于当作框架二次开发,欢迎各位使用和作为框架进行二次开发,并提出改进意见。

    发布效果展示:Qt串口调试助手演示效果

    GitHub源码仓库:Qt串口调试助手源码下载

    更新:后期在原有串口功能上,使用了QCustomPlot绘图库,制作了串口波形绘图上位机,非常适合单片机上传波形进行调试。最多可显示20条曲线,支持滚轮Y轴缩放、左键拖拽。波形帧协议兼容匿名四轴调试上位机,并增加了16进制转换,支持GB2312中文编码。详细介绍见:波形绘图上位机源码下载

     

    GitHub中为最终发布代码,可能与讲解教程中略有不同,望自行对照。

    1. 布局UI界面

    • 创建QMainWindow工程。
    • 布局UI界面:拖入2个 Plain Text Edit,作为串口数据的接收显示和发送框。
    • 再拖入几个 Combo Box 、 Label 和 Push Button,使用两个Widget进行布局。如下所示。

     

    • 将接收区的 Plain Text Edit,属性勾选上 readOnly,使其运行时不会被人为的输入操作影响。

     

    • 加入一些弹簧,使布局美观。(有必要可以加设置,固定窗口大小,不能最大化。)

     

    2. 添加下拉列表项

    • 在ui设计界面中,双击 Combo Box添加列表项。

     

    • 更改下拉框的默认值。修改 currentIndex属性,改变默认值。

        

     

    3. 修改控件名称

    • 将控件的命名统一,方便管理和程序书写。

     

    4. 添加串口类,自动扫描可用串口

    • 在工程 .pro文件中,添加 "QT += core gui serialport",以支持串口功能。

     

    • 窗口构造函数中,添加自动扫描可用串口代码。(由于代码位于窗口构造函数中,故仅在应用刚打开时扫描串口,以后会增加点击下拉框时扫描,需要对鼠标点击事件进行重写)
    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include <QDebug>
    
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
        QStringList serialPortName;
    
        // 自动扫描当前可用串口,返回值追加到字符数组中
        foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts()){
            serialPortName << info.portName();
        }
        // 可用串口号,显示到串口选择下拉框中
        ui->cmbSerialPort->addItems(serialPortName);
    }

     

    • 如果电脑连接了串口设备,运行Qt应用,点击下拉框,会看到可用的串口号。

     

    • 与标准的串口助手对比,结果一致。

     

    5. 打开串口、翻转开关

    • 功能:点击 "打开串口" 按钮,初始化串口参数,并按照设置好的参数打开串口。
    • 在 "打开串口" 按钮位置,右键,转到槽...。编写串口配置代码。
    • 将字符串,转换为可以代码设置的枚举,根据当前值,设置参数。之后打开对应串口端口。
    // 打开/关闭串口 槽函数
    void MainWindow::on_btnSwitch_clicked()
    {
    
        QSerialPort::BaudRate baudRate;
        QSerialPort::DataBits dataBits;
        QSerialPort::StopBits stopBits;
        QSerialPort::Parity   checkBits;
    
        // 获取串口波特率
        // 有没有直接字符串转换为 int的方法???
        //baudRate = ui->cmbBaudRate->currentText().toInt();
        if(ui->cmbBaudRate->currentText() == "9600"){
            baudRate = QSerialPort::Baud9600;
        }else if(ui->cmbBaudRate->currentText() == "38400"){
            baudRate = QSerialPort::Baud38400;
        }else if(ui->cmbBaudRate->currentText() == "115200"){
            baudRate = QSerialPort::Baud115200;
        }else{
    
        }
    
        // 获取串口数据位
        if(ui->cmbData->currentText() == "5"){
            dataBits = QSerialPort::Data5;
        }else if(ui->cmbData->currentText() == "6"){
            dataBits = QSerialPort::Data6;
        }else if(ui->cmbData->currentText() == "7"){
            dataBits = QSerialPort::Data7;
        }else if(ui->cmbData->currentText() == "8"){
            dataBits = QSerialPort::Data8;
        }else{
    
        }
    
        // 获取串口停止位
        if(ui->cmbStop->currentText() == "1"){
            stopBits = QSerialPort::OneStop;
        }else if(ui->cmbStop->currentText() == "1.5"){
            stopBits = QSerialPort::OneAndHalfStop;
        }else if(ui->cmbStop->currentText() == "2"){
            stopBits = QSerialPort::TwoStop;
        }else{
    
        }
    
        // 获取串口奇偶校验位
        if(ui->cmbCheck->currentText() == "无"){
            checkBits = QSerialPort::NoParity;
        }else if(ui->cmbCheck->currentText() == "奇校验"){
            checkBits = QSerialPort::OddParity;
        }else if(ui->cmbCheck->currentText() == "偶校验"){
            checkBits = QSerialPort::EvenParity;
        }else{
    
        }
    
        // 想想用 substr strchr怎么从带有信息的字符串中提前串口号字符串
        // 初始化串口属性,设置 端口号、波特率、数据位、停止位、奇偶校验位数
        mySerialPort->setBaudRate(baudRate);
        mySerialPort->setDataBits(dataBits);
        mySerialPort->setStopBits(stopBits);
        mySerialPort->setParity(checkBits);
        mySerialPort->setPortName(ui->cmbSerialPort->currentText());// 不匹配带有串口设备信息的文本
    
        // 根据初始化好的串口属性,打开串口
        // 如果打开成功,反转打开按钮显示和功能。打开失败,无变化,并且弹出错误对话框。
        if(ui->btnSwitch->text() == "打开串口"){
            if(mySerialPort->open(QIODevice::ReadWrite) == true){
                //QMessageBox::
                ui->btnSwitch->setText("关闭串口");
                // 让端口号下拉框不可选,避免误操作(选择功能不可用,控件背景为灰色)
                ui->cmbSerialPort->setEnabled(false);
            }else{
                QMessageBox::critical(this, "错误提示", "串口打开失败!!!\r\n该串口可能被占用\r\n请选择正确的串口");
            }
        }else{
            mySerialPort->close();
            ui->btnSwitch->setText("打开串口");
            // 端口号下拉框恢复可选,避免误操作
            ui->cmbSerialPort->setEnabled(true);
        }
    
    }

     

    • 为了避免串口被占用,或者其他错误,我们对打开也做相应的处理:如果串口被占用,会弹出错误提示框。
    • 并且为了防止端口在打开时,被篡改参数,避免改动串口号,做了处理:端口在打开后,下拉框是灰色不可选的。
    • 最终实现 打开串口 / 关闭串口 的功能转换与翻转显示。

     

    6. 接收串口数据

    • 预计结果:接收到串口数据后,将其显示到接收文本框中。
    • 构造函数中建立信号槽,将串口读准备信号,关联接收区显示处理槽函数。
    • 文本框内容使用插入显示。并在每次追加后移动光标

     

    • 对于接收的显示处理方式,我总结了如下四种。各位有兴趣可以将注释打开,运行去了解。
    • 其中第3、4种都是将文本框全部读取再追加内容,运行效率很低,而网上很多开源代码是使用的这种处理方式。这正是使我想要搭建自己开发框架的原因,追求可靠、高效。
    • 我在代码中,使用的是第2种处理方式。解决了不同硬件的插入换行问题,兼容 CH340、CP2102等常用设备。(现象、成因和解决方法在后面序章有说)

     

    7. 发送串口数据

    发送按钮,右键,转到槽...。

    添加发送字符串代码。

     

    8. 清空收区、发区文本内容

    发送按钮,右键,转到槽...。

    添加清空代码。

     

    运行结果

    • 运行时是没有左上角图标的,这是我后来测试生成可执行文件时添加的。

     

    总结

    Qt编程串口调试助手的过程比较简单,但仍有很多地方待完善。例如端口扫描、16进制转换,硬件兼容性,这些会在后面的篇幅进行讲解和添加,力求精简、可靠、高效、便于当作框架二次开发。欢迎各位使用和作为框架进行二次开发,并提出改进意见。

    GitHub源码仓库:Qt串口调试助手源码下载
     

    展开全文
  • 1. 串口调试助手和网络调试助手合二为一,特别适合调试网络设备。 2. 支持中文和英文双语言,再也不用愁找不到合适的串口调试软件给国际客户用了。 3. 最小化时停留在右下角,不占用任务栏位置,需要时一键调入。 ...
  • 串口调试助手

    2018-12-26 22:03:13
    串口助手WinCom1.0测试版 介绍: [九月]首发测试版,欢迎各位测试提出宝贵建议。 这是个绿色软件,单个文件即可执行,不会给您的机器增加任何负担。
  • 推荐一个好用的串口调试助手stduart

    千次阅读 2020-07-29 11:08:44
    推荐一个串口调试工具 支持的特性: 1、多串口同时调试,互不影响 2、接收/发送 ASCII/HEX模式 3、接收帧/字节数据统计 4、接收数据标签显示,帧序号/长度/时间戳 5、暂停/恢复接收 6、清空接收 7、周期发送数据 ...

    经过了好长时间的研发,终于出新版本了,对原先的软件进行了推倒重来,浴火重生

    下载地址: https://std.plus
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    stduart串口调试助手 完整特性列表
    -串口设备自动枚举识别
    -设备占用状态自动更新
    -常用波特率,校验位,数据位,停止位等参数支持
    -接收模式/发送ASCII/HEX模式切换
    -模式切换时数据全局更新
    -发送回显支持
    -标签支持,帧序号/时间戳/类型/长度显示
    -分帧超时修改,可定制分帧参数
    -接收缓冲区大小修改,可调整分帧效果
    -接收区颜色,正文/标签,前景/背景自定义
    -发送区校验码支持,checksum/crc8/crc16/crc32
    -校验码支持MSB/LSB
    -发送区自动添加结束符支持,支持不同组合定义
    -快捷发送支持
    -周期发送功能,可定义发送周期
    -批量发送功能,支持导入导出
    -批量发送支持在线资源的导入
    -批量发送支持循环,批量
    -发送内容历史记录
    -日志导出支持
    -接收区暂停/恢复
    -设备连接状态显示
    -接收/发送,帧/字节统计
    -接收/发送状态动画
    -参数的自动保存/恢复/重置
    -smart docking智能停靠
    -自定义视图显示
    -建议提交窗口
    -自动更新检查

    -------------------------------------------------以下为历史版本----------------------------------------------------

    推荐一个串口调试工具

    支持的特性:
    1、多串口同时调试,互不影响
    2、接收/发送 ASCII/HEX模式

    3、接收帧/字节数据统计
    4、接收数据标签显示,帧序号/长度/时间戳
    5、暂停/恢复接收
    6、清空接收
    7、周期发送数据

    特色功能

    1、图表暂支持接收帧响应时间
    2、接收数据自动记忆功能,不会丢失任何接收数据。后面考虑加入云同步功能
    3、发送数据记忆功能,方便使用
    4、工具箱中包含了常用的功能
    5、自带常用USB串口驱动

    展开全文
  • 监视串口232数据,最好的是可以不占用串口,这样可以监视整个数据流,调试非常方便
  • QT项目实战之串口调试助手

    千次阅读 2020-09-17 23:33:32
    4、字符与16进制编码字符的互相转换 3、工程打包发布 1、使用QT自带的windeployqt.exe打包 2、使用HM NIS Edit编辑器与NSIS编译器更深层次打包 四、功能测试 一、前言 给大家安利一款自己编写的串口调试助手小软件,...
  • 有人串口调试助手和网络调试助手合二为一,特别适合调试网络设备。 2. 支持中文和英文双语言,再也不用愁找不到合适的串口调试软件给国际客户用了。 3. 最小化时停留在右下角,不占用任务栏位置,需要时一键调入。 4...
  • 本软件用于单个串口调试或多个串口设备的监视和控制,集成北斗RDSS调试环境。 本软件的授权 本软件为共享软件。 软件特点: 1:支持多个串口同时工作,采用多线程技术,CPU占用率极低,完全不影响系统其它操作。...
  • 著名的Xcom 串口调试软件,不支持这个功能.于是我萌生了做一个上位机适配这个shell 的想法. 我的想法很简单,就是做一个窗口尽量让他像我们的命令行. 但是串口还是需要扫描,检查串口.所以我在最下面增加了几个按钮....
  • V1.2.0 Beta 1. 增加最小化到托盘功能 2. 增加窗口全局置顶功能 3. 删除16进制粘贴提示,粘贴模式与编辑模式相同 4. 增加停止接收状态增加明显提示 5. 增加WIN7系统提示以管理员模式...11.增加被占用串口自动打开功能
  • pyqt5 ,实现串口调试助手

    千次阅读 2020-11-06 21:38:47
    pyqt5 ,实现串口调试助手 这个是串口调试助手的基础上开发控制云台的操作界面。还未全部做完后面会慢慢做完的。 from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import QMessageBox from ...
  • QT5 - 串口调试助手

    2019-11-03 23:39:39
    具体有啥功能暂时也没法想得那么全面,但串口通信肯定是最最基础的吧,再加上之前没有学习过Qt,C++水平也菜的不行,所以先实现一个具备最简单的串口收发功能的串口调式助手试试水。 正是因为菜,所以当我们要真正...
  • VB串口调试助手源代码

    千次阅读 2018-01-10 22:42:04
    MsgBox "没有发现此串口或被占用", 49, "串口调试助手" CloseCom Case Else MsgBox "没有发现此串口或被占用", 49, "串口调试助手" CloseCom End Select Err.Clear End Sub Private Sub Comm_...
  • Qt5串口调试助手(3)--串口参数设置

    千次阅读 2021-02-24 22:08:23
    1.串口参数设置界面 参数设置界面如下图所示,包括串口号、波特率、数据位、停止位、校验位以及打开串口按钮。 功能需求如下,当点击"打开串口"按钮后,如果正常打开,则将按钮内容更改为“关闭串口”,相应的控件...
  • 分享自己使用python+pyserial+pyQT5写的串口调试助手

    万次阅读 多人点赞 2017-11-14 21:31:15
     2、pycom串口助手实现的功能,十六进制数据发送,接收,字符发送,接收,定时发送,增加一个刷新串口设备按钮,可以不用关闭软件,刷新一下新安装的串口串口助手运行过程中USB转串口的设备断开软件不会死机,...
  • 点击主对话框,在属性栏中找到Caption,修改为“串口调试助手”; ->摆放文本及下拉列表:Static Text和Comb Box控件,同样找到Caption,修改其名称,在Comb Box控件的属性列表中,将Sort改为False(填入数据之后...
  • 串口调试助手及源代码

    热门讨论 2010-12-15 19:18:34
    CommMonitor串口监视精灵(DLL版调用接口) Demo 示列清单 -------------------------------------------------------------------------------- SDK二次开发接口\Source\D7 Delphi7 DEMO 源文件 SDK二次开发接口\...
  • 今天,本文总结和阐述了如何配置串口服务器和串口调试的六个技巧:1.如何设置串口服务器的串口属性,比如波特率参数和数值?点击屏幕上的“设备”单元;手动键入“程序设置”;手动选择“程序”,最后手动输入“串口参数...
  • 这个软件,看起来很漂亮,能任意设置波特率,支持921600波特率,看起来很华丽。...我换了别的串口助手,问题消失。所以一定是这个助手的问题。基础的调试软件出问题,非常不易发现,带来的损失非常大。 建
  • 唔,现在网络上有各种各样的串口调试助手,但是别人的再好,不如自己写一个拿过来方便是吧,在做专门的上位机的时候也需要一个自己编写的上位机,实现更多的独特的功能。
  • INI文件存取串口信息 之前没有设置页面布局,当进行放大缩小时,组件的位置还是保持原样,这样很不实用。所以要调整一下页面和组件布局 1、添加horizontalLayout水平布局,将页面的组件分成3个部分: 比例...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,659
精华内容 663
关键字:

串口调试助手串口被占用

友情链接: 51622412message.rar