树莓派中QT实现串口通讯
树莓派中QT实现串口通讯
开发平台为QT
此博客QT使用的为WiringPi驱动
我使用的串口调试助手为 cutecom
先简单说一些开发过程中需要注意的问题
- Linux 下设备为 tty ,对应在 windows 下为 COM
- ttyS0 与 ttyUSB0 不是一个东西
- 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*
详细可以参考:
树莓派中QT实现串口通讯的更多相关文章
- 树莓派中QT实现I2C
树莓派中QT实现I2C 在QT中实现 I2C 使用的驱动为 wiringPi 库的引入 LIBS += -lwiringPi LIBS += -lwiringPiDev 代码实现 widget.h 中 ...
- 树莓派中QT实现PWM
树莓派中QT实现PWM 在QT中实现 PWM 使用的驱动为 wiringPi 之前的博客中已经介绍了 wiringPi , BOARD 管脚, BCM 之间的关系 这次, 就介绍在 wiringPi ...
- qt实现串口通讯
摘要:上位机软件程序通过QT实现,采集输入信息,根据实际需要做出合适的串口通讯协议,实现效果如下图所示: 主要实现的功能: 1.串口基本参数可选,可调 2.显示区域可选择十六进制/asicii码显示, ...
- CodeSys中编程实现串口通讯
第一步:Linux中启用串口设备.[以树莓派4B为例] 树莓派4B有6个串口,参考上一篇<>,在 /boot/config.txt 中添加一行,开启 uart2 功能: dtoverl ...
- 用SPCOMM 在 Delphi中实现串口通讯 转
用Delphi 实现串口通讯,常用的几种方法为:使用控件如MSCOMM和SPCOMM,使用API函数或者在Delphi 中调用其它串口通讯程序.利用API编写串口通信程序较为复杂,需要掌握大量通信 ...
- QSerialPort-Qt串口通讯
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QSerialPort-Qt串口通讯 本文地址:http://techieliang. ...
- 嵌入式Linux学习笔记(六) 上位机QT界面实现和串口通讯实现
目录 (1).参考资料 (2).QT界面布局实现 (3).数据和操作逻辑 在上一章我们实现了下位机的协议制定,并通过串口通讯工具完成了对设备内外设(LED)的状态修改,下面就要进行上位机软件的实现了( ...
- Qt之先用了再说系列-串口通讯(单串口单线程)
QT 串口通讯(单串口单线程) 串口通讯在我们写程序的时候或多或少会用到,借此在这记录一下QT是如何使用串口来通讯的.本次先侃侃在单线程下使用1个串口来通讯过程.好了,废话不多说,直接看步骤,我们的宗 ...
- 树莓派中安装QT
树莓派中安装QT 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN7 硬件:树莓派 步骤: 参考链接:http://qt-proje ...
随机推荐
- Java 单例(Singleton)模式
一.什么是单例模式: 单例模式是一种确保了一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.被实例化的类称为单例类. 二.单例模式的特点: 单例类只有一个实例. 单例类必须自行创建自己唯一的 ...
- 002. https通信(CA证书认证 + 密钥商定 )
服务端与客户端建立https通信的过程: 一.认证:客户端第一次访问服务端时,要求服务端证明自己可被信任 1.证书:由服务端申请.第三方CA颁发的,存放在服务端的证书: 证书包含:服务端的公钥.服务端 ...
- Web前端新学
本人大学时学的是网络工程,那时候只是大概学了一点HTML和CSS.毕业后没有找IT方面的工作,所以对专业知识忘得差不多了.然由于生活现状,终是决心重新好好学习IT,刚入学的一周学习了C#语言的一些知识 ...
- Spring注入对象(3)
2019-03-08/10:45:04 演示:对Product对象,注入一个Category对象 1.创建pojo类 Product类中有对Category对象的setter getter packa ...
- [C#学习笔记1]用csc.exe和记事本写一个C#应用程序
csc.exe是C#的命令行编译器(CSharpCompiler),可以编译C#源程序成可执行程序.它与Visual Studio等IDE(Integrated Development Environ ...
- WinForm 国际化的一些问题
国际化 我之前 WinForm 国际化都是凑一些代码搞起(请看文后 Reference). 最近发现还有个官方国际化方法: 首先设置 Form 的 Localizable 属性为 true 选择 Fo ...
- webstorm2018.1 汉化
https://github.com/pingfangx/TranslatorX 这个百度云 选择webstorm 选择勾选的文件 选择你下载webstorm 的版本 我下载的是2018.1的 之后等 ...
- 『Shell编程』学习记录(2)
例1.文件io #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include & ...
- 获取DataTable前几条数据
#region 获取DataTable前几条数据 /// <summary> /// 获取DataTable前几条数据 /// </summary> /// <param ...
- Python Learning: 02
OK, let's continue. Conditional Judgments and Loop if if-else if-elif-else while for break continue ...