樹莓派中QT實現串口通訊


樹莓派中QT實現串口通訊

開發平台為QT

此博客QT使用的為WiringPi驅動

我使用的串口調試助手為 cutecom

先簡單說一些開發過程中需要注意的問題

  • Linux 下設備為 tty ,對應在 windows 下為 COM
  • ttyS0ttyUSB0 不是一個東西
  • raspi-config 中, serial 應該被打開, 但是 Serial Console 不應該被打開,除非你想要用 Serial Console 去作為終端來控制樹莓派
  • 默認pin8,10 是作為 Serial1 分配給藍牙, 需要關閉藍牙才可以使用
  • 在樹莓派與本機中USB設備如何選擇可以看這里
  • 樹莓派中QT要使用QtSerialPort需要安裝庫
sudo apt-get install libqt5serialport5
sudo apt-get install libqt5serialport5-dev

UI

結果展示

接線示意

代碼展示

widget.pro

QT       += core gui
LIBS     += -lwiringPi
QT       += serialport

widget.h

#include <QWidget>
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>
#include <QDebug>
#include <QString>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private slots:
    void on_pushButton_clicked();
    void read();

private:
    Ui::Widget *ui;
    QSerialPort *serial;

widget.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) : QWidget(parent),
    ui(new Ui::Widget) {
    ui->setupUi(this);
    serial = new QSerialPort;
    serial->close();
    serial->setPortName("ttyS0");
    serial->open(QIODevice::ReadWrite);
    serial->setBaudRate(115200);
    serial->setDataBits(QSerialPort::Data8);
    serial->setParity(QSerialPort::NoParity);
    serial->setStopBits(QSerialPort::OneStop);
    serial->setFlowControl(QSerialPort::NoFlowControl);

    connect(serial,&QSerialPort::readyRead,this,&Widget::read);
}

Widget::~Widget(){
    delete ui;
}

void Widget::on_pushButton_clicked(){
    QByteArray a = QByteArray("\n");
    a.append(ui->textEdit->toPlainText().toLatin1());
    serial->write(a);
}

void Widget::read(){
    QByteArray buf;
    buf = serial->readAll();
    qDebug() << buf;
    QString a = QString(buf);
    ui->textEdit_2->setText(a);
}

說在最后

關於如何選擇你的設備

在樹莓派中選擇你的串口

一般來說, 選擇 ttyS0 即對應了你的pin8,10 serial1

詳細可見

https://www.raspberrypi.org/documentation/configuration/uart.md

在你的電腦上選擇對應的USB

試試命令

ls -l /dev/ttyUSB*

詳細可以參考:

https://blog.csdn.net/qq_25544855/article/details/79313496


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM