树莓派中QT实现串口通讯

时间:2023-03-08 20:27:42

树莓派中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

树莓派中QT实现串口通讯

结果展示

树莓派中QT实现串口通讯

接线示意

树莓派中QT实现串口通讯

代码展示

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.****.net/qq_25544855/article/details/79313496