QT从零开始作单片机上位机-串口调试助手+波形显示-设计QT串口助手界面,添加主窗口控件

第二章 QT从零开始作单片机上位机-串口调试助手+波形显示

目录

第二章 QT从零开始作单片机上位机-串口调试助手+波形显示

-设计QT串口助手界面,添加主窗口控件

1、开始QT串口调试助手界面设计:

2、从左侧找到所需使用的控件,拖动置主界面;

3、几点布局上的技巧:多个TextLabel ,多个Combo Box 怎么均匀整齐排列?

4、将所有控件布局基本确定之后,开始修改所有的控件属性值,方便管理、查找、对控件的调用等操作。

 5、运行QT窗口程序并修正。


-设计QT串口助手界面,添加主窗口控件

 

本串口调试工具的界面直接找一个已有的串口调试工具“山寨”模仿一个。

下图对比一下:

 

1、开始QT串口调试助手界面设计:

双击mainwindow.ui,出现如下界面。窗口的左侧为各控件,中间为主界面窗口和各响应信号,右侧为窗口里各控件的属性栏。

 

 

2、从左侧找到所需使用的控件,拖动置主界面;

如下:由于要显示波形界面,所以选择”Tab Widge” 控件,拖动至窗口,拉到最大,可以先修改主面板的大小,自己决定。然后选择Group Box控件,拖动置窗口,然后依次添加Push Button 、SpinBox等控件,然后细心排版。可以对照参考的串口调试工具界面。主窗口控件添加完成后,运行一遍,显示设计完成之后的效果,再作修正。

这个是Tab2

 

3、几点布局上的技巧:多个TextLabel ,多个Combo Box 怎么均匀整齐排列?

先按住CTRL,点选要布局的几个TextLabel后,右键“布局”,“垂直布局”,之后就可以改变整体大小来调整间距。多个Combo Box同理。

更简单一点:先放置Vertical Layout,之后将Combo Box置入其中,它会自动等间距排列。

 

 

4、将所有控件布局基本确定之后,开始修改所有的控件属性值,方便管理、查找、对控件的调用等操作。

(良好编程习惯/标准化的重要性)

这里修改主窗口里各控件的属性值:

 (1) Combo Box的属性QObject-objectName:cB_COM  cb_BaudRate  cB_Parity  cB_Data  cb_stop

  Textlabel的属性QLabel-text: 修改为中文字所需 比如:串口、波特率…

  其他类似。

  输入框为QTextEdit;

  复选框为QCheckBox;

  定时发送时间为QSpinBox;

  按键为QPushButton;

  接收数据框为QTextBrowser。

 

(2)修改发送时间默认为1000ms。

在右侧的属性栏里找到QSpinBox下的value属性,输入1000。确定一下maximum的最大值,这里是600000.

 

 5、运行QT窗口程序并修正。

主窗口控件添加完成后,运行一遍,显示设计完成之后的效果,再作修正。到此主窗口控件添加完成。

 

 

 

   

  • 7
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
单片机多功能调试助手分两个版本,分别是:含CH375 DLL版本、无DLL版本,它们的区别要体现在是否对CH37X USB提供支持。。 者:温子祺 联系方式:wenziqi@hotmail.com 博客:http://www.cnblogs.com/wenziqi 注:软件版权归者所有,未经者允许,禁止用于商业用途,违者必究! *********************************** 更新记录 *********************************** 2010-12-02 修正记录: (1)修正了串口检测、接收策略, (2)添加了串口监视功能 (3)添加了BCC校验 (4)增强字模制功能(支持特殊字符、英文、汉字等) *********************************** 更新记录 *********************************** 2010-11-29 修正记录: (1)添加了记录发送、接收字节数的统计功能 (2)添加了自动检测新版本的功能 *********************************** 更新记录 *********************************** 2010-11-25 修正记录: (1)添加了连续发送的功能 (2)添加了在线下载新版本的功能 (3)完善服务器功能 (4)完善了字模输出(摆脱外接字符文件) (5)完善了位图转16进制文件功能,可保存为C文件 *********************************** 更新记录 *********************************** 2010-11-02 修正记录: (1)添加了服务器功能,网络调试更方便! (2)界面更加宽阔,显示更多的信息! *********************************** 更新记录 *********************************** 2010-09-26 修正记录: (1)修正了单片机功能助手运行时间长导致的假死问题。(多谢网友提供宝贵的意见) *********************************** 更新记录 *********************************** 2010-09-01 修正记录: (1)修正了串口类,提升接收数据的效率。 *********************************** 更新记录 *********************************** 2010-08-03 修正记录: (1)在检验值计算支持TCP/IP校验和计算 (2)在NET调试新增加了Ping功能 *********************************** 更新记录 *********************************** 2010-07-28 修正记录: (1)修正CRC计算错误 *********************************** 更新记录 *********************************** 2010-07-15 修正记录: (1)修正打开关闭串口,接收数据文本框数据丢失 (2)串口对话框更为简洁
这个需求可以通过连接单片机上位机的串口,来实现数据的传输和处理。具体实现步骤如下: 1. 在单片机程序中,设置串口的波特率、数据位、停止位等参数,并开启串口接收中断。 2. 在串口接收中断中,将接收到的数据进行加5处理,并通过串口发送函数将处理后的数据发送给上位机。 3. 在上位机程序中,打开串口并设置相应的参数,接收串口数据。 4. 对接收到的数据进行解码和处理,并在上位机界面上进行显示。 下面是一个简单的示例程序(使用STC89C52单片机Qt串口调试助手): 单片机程序: ```c #include <reg52.h> #define uchar unsigned char #define uint unsigned int uchar code baud[] = {0xFD, 0x00}; // 波特率为9600 void init_serial() { TMOD |= 0x20; // 设置计数器1为模式2 SCON = 0x50; // 串口工在模式1,允许接收 TH1 = baud[0]; // 设置波特率 TL1 = baud[1]; TR1 = 1; // 启动计数器1 ES = 1; // 允许串口中断 EA = 1; // 允许总中断 } void serial_send(uchar dat) { SBUF = dat + 5; // 发送数据加5 while (!TI); // 等待发送完成 TI = 0; // 清除发送标志 } void serial_isr() interrupt 4 { if (RI) { // 接收到数据 RI = 0; // 清除接收标志 serial_send(SBUF); // 发送数据 } } void main() { init_serial(); // 初始化串口 while (1); } ``` 上位机程序: ```c++ #include <QtSerialPort/QSerialPort> #include <QtSerialPort/QSerialPortInfo> #include <QCoreApplication> #include <QDebug> QSerialPort serial; int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 查找可用串口 QList<QSerialPortInfo> portList = QSerialPortInfo::availablePorts(); if (portList.isEmpty()) { qDebug() << "No available serial port."; return 1; } // 打开串口 serial.setPortName(portList.first().portName()); serial.setBaudRate(QSerialPort::Baud9600); serial.setDataBits(QSerialPort::Data8); serial.setStopBits(QSerialPort::OneStop); serial.setParity(QSerialPort::NoParity); if (!serial.open(QIODevice::ReadWrite)) { qDebug() << "Failed to open serial port."; return 1; } // 接收串口数据 QObject::connect(&serial, &QSerialPort::readyRead, [&](){ QByteArray data = serial.readAll(); for (int i = 0; i < data.size(); i++) { qDebug() << data.at(i); } }); return a.exec(); } ``` 在上述示例程序中,单片机接收到数据后,将数据加5后发送给上位机上位机接收到数据后,在控制台上输出接收到的数据。你可以根据具体需求,修改程序实现自己的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值