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

树莓派中QT实现串口通讯的更多相关文章

  1. 树莓派中QT实现I2C

    树莓派中QT实现I2C 在QT中实现 I2C 使用的驱动为 wiringPi 库的引入 LIBS += -lwiringPi LIBS += -lwiringPiDev 代码实现 widget.h 中 ...

  2. 树莓派中QT实现PWM

    树莓派中QT实现PWM 在QT中实现 PWM 使用的驱动为 wiringPi 之前的博客中已经介绍了 wiringPi , BOARD 管脚, BCM 之间的关系 这次, 就介绍在 wiringPi ...

  3. qt实现串口通讯

    摘要:上位机软件程序通过QT实现,采集输入信息,根据实际需要做出合适的串口通讯协议,实现效果如下图所示: 主要实现的功能: 1.串口基本参数可选,可调 2.显示区域可选择十六进制/asicii码显示, ...

  4. CodeSys中编程实现串口通讯

    第一步:Linux中启用串口设备.[以树莓派4B为例] 树莓派4B有6个串口,参考上一篇<>,在 /boot/config.txt 中添加一行,开启 uart2 功能:   dtoverl ...

  5. 用SPCOMM 在 Delphi中实现串口通讯 转

      用Delphi 实现串口通讯,常用的几种方法为:使用控件如MSCOMM和SPCOMM,使用API函数或者在Delphi 中调用其它串口通讯程序.利用API编写串口通信程序较为复杂,需要掌握大量通信 ...

  6. QSerialPort-Qt串口通讯

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QSerialPort-Qt串口通讯     本文地址:http://techieliang. ...

  7. 嵌入式Linux学习笔记(六) 上位机QT界面实现和串口通讯实现

    目录 (1).参考资料 (2).QT界面布局实现 (3).数据和操作逻辑 在上一章我们实现了下位机的协议制定,并通过串口通讯工具完成了对设备内外设(LED)的状态修改,下面就要进行上位机软件的实现了( ...

  8. Qt之先用了再说系列-串口通讯(单串口单线程)

    QT 串口通讯(单串口单线程) 串口通讯在我们写程序的时候或多或少会用到,借此在这记录一下QT是如何使用串口来通讯的.本次先侃侃在单线程下使用1个串口来通讯过程.好了,废话不多说,直接看步骤,我们的宗 ...

  9. 树莓派中安装QT

    树莓派中安装QT 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN7 硬件:树莓派 步骤: 参考链接:http://qt-proje ...

随机推荐

  1. mysql判断条件不存在插入存在更新某字段

    insert into mst_sequence(seq_type, seq_desc, seq_date, seq_no, create_time) VALUES('CK', 'XXX', NOW( ...

  2. js 格林威治时间转正常格式并兼容ios

    function timeChange(time) { var date = time.substr(0, 10); //年月日 var hours = time.substring(11, 13); ...

  3. SharpMap和NetTopologySuite叠加分析问题

    先附上实现的相交叠加分析的部分代码,然后请教个问题,希望能够得到解答. /// <summary> 执行相交叠加分析 </summary> private void Execu ...

  4. IGP和BGP路由协议配合降低非核心路由器的路由容量的实验与总结

    IGP和BGP路由协议配合降低非核心路由器的路由容量的实验与总结 一.结论 通过eBGP协议,可以显著降低对非核心路由器的路由容量要求,因为核心路由器的数量明显少于非核心路由器,所以,通过此措施既可以 ...

  5. android常犯错误记录(三)

    java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionVie ...

  6. 【English】四、Y结尾名词变复数

    一.辅音字母+y结尾的名词,将y改变为i,再加-es. 读音变化:加读[z]. 例: candy→candies; daisy→daisies; fairy→fairies; lady→ladies; ...

  7. redis的穿透和雪崩

    穿透: 从缓存中查询一个数据,查到为空,需要每次都去数据库中查询.而从数据库中查询出来也为空,也就不写入缓存.导致一个不存在的数每次都去数据库中查询,造成db系统很大压力 造成缓存穿透 解决:如果从数 ...

  8. CTF杂项之音频隐写

    题目来自bugku 二话不说,直接上图 由题目可以看出,这题需要用到一个KEY,加上又是一段音频,很容易联想到一个著名的音频隐写解密软件Mp3stego 直接上工具 ok,成功Get Flag

  9. selenium之元素定位-css

    CSS定位方式和XPATH定位方式基本相同,只是CSS定位表达式有其自己的格式.CSS定位方式拥有比XPATH定位速度快,且比XPATH稳定的特性.下面详细介绍CSS定位方式的使用方法 被测网页的HT ...

  10. 修饰符-static

    一.static静态修饰符 static修饰符能够修饰属性,方法,初始代码块,不能修饰局部变量和类. 静态的变量叫常量,非静态的变量叫实例变量. 1.修饰属性 package gc.test.java ...