天天看點

用Qt寫一個序列槽助手

文章目錄

    • 一、什麼是Qt?
    • 二、設計ui界面
    • 三、編寫Qt程式
    • 四、制作ico圖示
    • 五、下載下傳安裝序列槽調試助手
      • 5.1友善調試助手
      • 5.2虛拟序列槽驅動
    • 六、最終實作效果

一、什麼是Qt?

Qt是一個跨平台的C++圖形使用者界面應用程式架構。它為應用程式開發者提供建立藝術級圖形界面所需的所有功能。它是完全面向對象的,很容易擴充,并且允許真正的元件程式設計。

基礎知識這裡就不詳細講啦,推薦黑馬程式員的Qt教程(有第一部分和第二部分)源碼在是視訊下方第一條評論中可以找到。(沒有找到的話可以在評論下方發郵箱給我,我發給你~)

二、設計ui界面

用Qt寫一個序列槽助手
用Qt寫一個序列槽助手

其他部分的話就是彈簧和水準垂直結構了

用Qt寫一個序列槽助手

三、編寫Qt程式

main.cpp

#include "serial.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Serial w;
    w.show();//視窗預設是隐藏的,需要人為顯示

    return a.exec();
}
           

打開序列槽(打開之後會序列槽名稱和波特率資料預設為第一個)可以在打開之後再進行修改設定

void Serial::btn_open_port(bool)
{
    //qDebug() << "ok";
    qDebug()<<ui->cmb_port_name->currentIndex();//printf 0
    switch(ui->cmb_port_name->currentIndex())
    {
    /*---------------序列槽名稱---------------*/
    case 0:
        global_port.setPortName("COM1");
        break;
    case 1:
        global_port.setPortName("COM2");
        break;
    case 2:
        global_port.setPortName("COM3");
        break;
    case 3:
        global_port.setPortName("COM4");
        break;
    case 4:
        global_port.setPortName("COM5");
        break;
    case 5:
        global_port.setPortName("COM6");
        break;
    case 6:
        global_port.setPortName("COM7");
        break;
    default:
        global_port.setPortName("COM8");
    }
    /*---------------波特率baud---------------*/

    switch (ui->cmb_baud_rate->currentIndex())
    {
    case 0:
        global_port.setBaudRate(QSerialPort::Baud115200);
        break;
    case 1:
        global_port.setBaudRate(QSerialPort::Baud57600);
        break;
    case 2:
        global_port.setBaudRate(QSerialPort::Baud38400);
        break;
    case 3:
        global_port.setBaudRate(QSerialPort::Baud19200);
        break;
    case 4:
        global_port.setBaudRate(QSerialPort::Baud9600);
        break;
    case 5:
        global_port.setBaudRate(QSerialPort::Baud4800);
        break;
    case 6:
        global_port.setBaudRate(QSerialPort::Baud2400);
        break;
    default:
        global_port.setBaudRate(QSerialPort::Baud1200);
        break;
    }
    //打開序列槽
    global_port.open(QIODevice::ReadWrite);
    ui->lab_status->setText("連接配接");
}
           

關閉序列槽

//關閉序列槽比較簡單,直接關閉就好
void Serial::btn_close_port(bool)
{
    global_port.close();
    ui->lab_status->setText("斷開連接配接");
}
           

發送資料

/*-----------發送資料-----------------*/
void Serial::btn_send_data(bool)
{
    QString data = ui->lint_send_data->text();
    QByteArray array = data.toLatin1();//QString---->QByteArray
    global_port.write(array);
}
           

接收資料

/*-----------接收資料-----------------*/
void Serial::receive_data()
{
   QByteArray array = global_port.readAll();
   qDebug()<<array;
   if(ui->checkBox->checkState()==Qt::Checked)
   {
       ui->plainTextEdit->insertPlainText(QString(array.toHex(' ').append(' ')));
   }
   else
   {
       ui->plainTextEdit->insertPlainText(QString(array));
   }
}
           

四、制作ico圖示

也就是這下面圈起來的玩意

用Qt寫一個序列槽助手

ico圖示線上制作

用Qt寫一個序列槽助手

把下載下傳下來的檔案任意命名,但必須是英文,比如s.ico

那就在項目檔案Serial.pro中加入

RC_ICONS = s.ico

用Qt寫一個序列槽助手

然後把下載下傳下來的檔案剪切到你的工程目錄下,如下

用Qt寫一個序列槽助手

然後就完美啦~運作就可以看到了

五、下載下傳安裝序列槽調試助手

5.1友善調試助手

下載下傳位址

或者随便上網搜一下哈哈,然後安裝好了就好

用Qt寫一個序列槽助手

然後打開這個exe檔案,就可以用了

用Qt寫一個序列槽助手

5.2虛拟序列槽驅動

這個虛拟序列槽驅動就有點類似我們的資料線,就是對某個序列槽進行操作的一個轉換工具(軟體),它完成了你對這些端口操作的資料格式、協定的轉換。下載下傳位址

下載下傳安裝好打開如下exe檔案即可

用Qt寫一個序列槽助手

如果要連接配接COM1和COM2,就在如下B中選擇COM1和COM2,然後點選C(添加端口),就可以看到A了,看到A就說明可以了,如果要連接配接COM3和COM4的話就同理。。

用Qt寫一個序列槽助手

六、最終實作效果

用Qt寫一個序列槽助手

繼續閱讀