Qt5 串口讀寫(xiě)

還是直接上干貨??!

1. 遍歷所有可用串口

#include<QSerialPort>
#include <QtSerialPort/QSerialPortInfo>
#include <QTimer>
#include <string>
#include <fstream>
#include "SaveAsGUI.h"

...
QSerialPort *serial_port_locate;
QStringList serialPortName;

serial_port_locate = new QSerialPort() ;

if (serial_port_locate->isOpen())   //如果串口已經(jīng)打開(kāi)了 先給他關(guān)閉了
{
    serial_port_locate->clear();
    serial_port_locate->close();
}
foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
{
    serialPortName << info.portName();
    ui.comboBox_serialPort->addItem(info.portName());
    ui.comboBox_serialPort_measure->addItem(info.portName());
}

if (serialPortName.isEmpty())
{
    //QMessageBox::critical(0, "critical message", "Do you want to process?", QMessageBox::Ok | QMessageBox::Default, QMessageBox::Cancel | QMessageBox::Escape, 0);
    QMessageBox::warning(NULL, "Warning", "There is no COM! ", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
}

...

2. 初始化串口參數(shù)

void uart_open()
{
    //-> setting serial port
    serial_port_locate->setPortName(ui.comboBox_serialPort->currentText());   //    選取串口  
    if (!serial_port_locate->open(QIODevice::ReadWrite))                                       //打開(kāi)串口  
    {
        QMessageBox::critical(NULL, "Error", "Cann't open COM port!", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
        return;
    }
    serial_port_locate->setBaudRate(QSerialPort::Baud38400);                            //設(shè)置波特率  
    serial_port_locate->setDataBits(QSerialPort::Data8);                                     //設(shè)置數(shù)據(jù)位數(shù)  
    serial_port_locate->setParity(QSerialPort::NoParity);                                      //設(shè)置奇偶校驗(yàn)   
    serial_port_locate->setStopBits(QSerialPort::OneStop);                                 //設(shè)置停止位 
    serial_port_locate->setFlowControl(QSerialPort::NoFlowControl);                //設(shè)置流控制  

    connect(serial_port_locate, SIGNAL(readyRead()), this, SLOT(get_data()));
    serial_port_locate->waitForReadyRead();
    //ui.light_locate->setIcon(icon_light_on);
}

3. 發(fā)送數(shù)據(jù)

std::string order = "*meas:dark 10 10 " + to_string(OUTPUT_MODE) + "\r";
serial_port_measure->write(order.c_str());
serial_port_measure->waitForReadyRead();

4. 接受數(shù)據(jù)

4.1 一次性讀取

QByteArray readBuf;
readBuf = serial_port_locate->readAll();

4.2 阻塞 / 監(jiān)聽(tīng)接收數(shù)據(jù)

此處不上源碼了 給出官方鏈接,可以看看examples官方實(shí)現(xiàn),直接抄就行~~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載自QT開(kāi)發(fā)(五十)——QT串口編程基礎(chǔ) 一、QtSerialPort簡(jiǎn)介 (一)串口通信基礎(chǔ) 目前使用最廣泛的...
    虞錦雯閱讀 4,807評(píng)論 0 2
  • 參考博客: 博客園-菜頭大大:QT串口通信 CSDN-宗師之路:QT實(shí)現(xiàn)串口通信(附源碼下載) CSDN-xz-c...
    云中的Jason閱讀 11,667評(píng)論 1 2
  • 由于RS232串口操作簡(jiǎn)單、通訊可靠,所以在工業(yè)領(lǐng)域中有大量的應(yīng)用。而普通家用PC已經(jīng)逐步淘汰該串口,但usb轉(zhuǎn)串...
    飛揚(yáng)code閱讀 24,085評(píng)論 0 7
  • 本文用于介紹 QIODevice 類,該類是 QSerialPort 的父類。系統(tǒng)環(huán)境:Win10 64位轉(zhuǎn)載請(qǐng)注...
    import_hello閱讀 7,683評(píng)論 0 3
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭,有人歡樂(lè)有人憂愁,有人驚喜有人失落,有的覺(jué)得收獲滿滿有...
    陌忘宇閱讀 8,831評(píng)論 28 54

友情鏈接更多精彩內(nèi)容