linux qt串口无法显示,Linux QT串口通信遇到的问题
问题:遇到device can not open
解决:sudo chown young /dev/ttyUSB0
程序如下:
uart.h:
#ifndef UART_H
#define UART_H
#include #include #include class Uart : public QObject
{
Q_OBJECT
public:
explicit Uart(QObject *parent = 0);
~Uart();
void InitUart();
short roll;
short pitch;
short yaw;
short m_throttle;
float m_altitude;
short gl_Angle;
private:
QSerialPort *my_serialport;
QByteArray requestData;
unsigned char *buffer;
signals:
void changeAngle(short,short,short);
void changeThrottle(short);
void changeAltitude(float);
void changeYawGL(short);
void changeAngleToUI(short,short,short);
void isOpenUart(bool);
void IsConnectControl(int);
public slots:
void readUartSlot();
void connectUart();
void disconnectUart();
};
#endif // UART_H
uat.cpp:
#include "uart.h"
#include #include Uart::Uart(QObject *parent) :
QObject(parent)
{
roll = 0;
pitch = 0;
yaw = 0;
m_throttle = 0;
gl_Angle = 0;
my_serialport = new QSerialPort();
QString portName = "ttyUSB0";
my_serialport->setPortName(portName);
if(my_serialport->open(QIODevice::ReadOnly))
{
my_serialport->setBaudRate(115200);
my_serialport->setDataBits(QSerialPort::Data8);
my_serialport->setParity(QSerialPort::NoParity);
my_serialport->setStopBits(QSerialPort::OneStop);
my_serialport->setFlowControl(QSerialPort::NoFlowControl);
buffer = (unsigned char*)malloc(12);
emit isOpenUart(true);
}
else
{
emit isOpenUart(false);
}
}
Uart::~Uart()
{
free(buffer);
my_serialport->close();
delete my_serialport;
}
void Uart::connectUart()
{
connect(this->my_serialport,SIGNAL(readyRead()),this,SLOT(readUartSlot()));
}
void Uart::disconnectUart()
{
disconnect(this->my_serialport,SIGNAL(readyRead()),this,SLOT(readUartSlot()));
}
void Uart::readUartSlot()
{
short temp_roll,temp_pitch,temp_yaw;
if(my_serialport->bytesAvailable() >3)
{
requestData = my_serialport->readAll();
if(!requestData.isEmpty())
{
if(requestData.length()==10)
{
if(requestData.at(0)=='e' && requestData.at(1)=='f' && requestData.at(4)=='g' && requestData.at(7) =='h')
{
buffer = (unsigned char*)requestData.data();
temp_roll = (short)((buffer[2]<<8) + buffer[3]);
temp_pitch= (short)((buffer[5]<<8) +buffer[6]);
temp_yaw = (short)((buffer[8]<<8) + buffer[9]);
roll = temp_roll;
pitch = temp_pitch;
yaw = temp_yaw;
emit changeAngle(roll,pitch,yaw);
emit changeAngleToUI(roll,pitch,yaw);
}
}
if(requestData.length() == 4)
{
//qDebug()
{
unsigned char *thro_buff;
thro_buff =(unsigned char*)requestData.data();
m_throttle = (short)(((thro_buff[2]<<8 )+ thro_buff[3])/10-100);
emit changeThrottle(m_throttle);
}
if(requestData.at(0) == 'c' && (requestData.at(1)) == 'd')
{
unsigned char *altitudeBuf;
altitudeBuf = (unsigned char*)requestData.data();
m_altitude = (float)(((altitudeBuf[2]<<8) + altitudeBuf[3]));
if(m_altitude)
emit changeAltitude(m_altitude);
}
if(requestData.at(0)=='i'&& requestData.at(1) == 'j')
{
unsigned char *glBuffer;
glBuffer = (unsigned char*)requestData.data();
short yaw = (short)((glBuffer[2]<<8) + glBuffer[3]);
// qDebug()< short temp = gl_Angle - yaw;
emit changeYawGL(temp);
gl_Angle = yaw;
}
}
//if(requestData.length()==4)
//{
// if(requestData.at(0) == 'b' && requestData.at(1) == 'l' && requestData.at(2) == 'u' && requestData.at(3) == 'e')
// {
// emit IsConnectControl(1);
// }
// }
/* if(requestData.size() == 4)
{
if(requestData.at(0) == 'c' && (requestData.at(1)) == 'd')
{
unsigned char H_value = (unsigned char)requestData.at(2);
unsigned char L_value = (unsigned char)requestData.at(3);
m_altitude = (short)((H_value<<8) + L_value);
qDebug()
}*/
}
requestData.clear();
}
// my_serialport->flush();
}
linux qt串口无法显示,Linux QT串口通信遇到的问题相关推荐
- linux开发板汉字显示,Linux Qt 及Arm开发板汉字显示
作为一个优秀的开发人员,我就不说废话了. 很多人在 使用Qt做嵌入式开发时,会遇到一个问题: 汉字显示,网上有好多方法,并且针对 Qt5 以前的版本和Qt5 的版本有不同的方法,同样,我也遇到了这个问 ...
- linux管道方式分页显示,linux命令中分页等管道符的使用
linux使用命令查看很多东西的时候,一般都会选择使用管道符,要么为了过滤,要么为了分页显示,总之这些管道符有着很重要的作用. 管道 管道简单理解就是,使用管道意味着第一个命令的输出会作为第二个命令的 ...
- linux内存换算成b显示,Linux内存管理(下)
Linux内存管理(下)物理内存管理(页管理) Linux内核管理物理内存是通过分页机制实现的,它将整个内存划分成无数4k(在i386体系结构中)大小页,从而分配和回收内存的基本单位便是内存页了.利用 ...
- linux pdf中文不显示,linux下pdf中文不显示
ubuntu1004,pdf文件有的无法显示中文,解决办法如下: 1.先安装字体(我的字体安装时显示失败,但是可以继续进行第二步,而不出错) A.sudo apt-get install xpdf-c ...
- linux新建用户不显示,linux系统无法添加用户帐号的原因分析
生产环境配置: 操作系统: CentOS 6.6 1.产生的问题: 在使用useradd命令添加帐号(的)时候出现"seradd:cannotopen /etc/passwd" [ ...
- 【解决方案】Linux图形界面远程显示Linux服务器的图形化窗口
本地主机设置: a) 编辑本地主机sshd的配置文件 /etc/ssh/sshd_config X11Forwarding yesX11UseLocalhost no b) 重新启动sshd服务让它生 ...
- qt linux 串口eventdriven,详解 Qt 串口通信程序全程图文 (1)
Qt 串口通信程序全程图文 是本文介绍的内容,在Qt中并没有特定的串口控制类,现在大部分人使用的是第三方写的qextserialport类,我们这里也是使用的该类.我们可以去 http://sourc ...
- linux串口助手开发,linux下QT开发串口通信助手
串口通信的应用十分广泛,所以在QT下编写一个串口通信程序就显得尤为重要.下面将一步一步叙述开发过程: 1.下载第三方QT串口类,免积分 http://download.csdn.net/detail/ ...
- QT项目设计:基于Linux系统的车载系统,地图、音视频播放、天气显示、优美界面 详细教程
文章目录 QT车载系统 一.音频播放 二.视频播放 三.地图显示 四.天气功能 五.界面美化 化作尘其它开源项目: 单片机项目: Linux项目: QT车载系统 哔哩哔哩视频链接:https://ww ...
最新文章
- iOS SDWebImage加载webp
- 推荐文章:机器学习:“一文读懂机器学习,大数据/自然语言处理/算法全有了...
- js生成验证码并且验证
- Bailian4067 回文数字(Palindrome Number)【数学】
- 80c51流水灯汇编语言,单片机AT89C51可控流水灯课程设计报告(汇编语言).docx
- Chrome扩展开发指南(
- ECMAScript 基础--原始值和引用值
- 「Django」contenttypes基本用法
- matlab fft没有误差,matlab仿真FFT结果幅值比实际的略有降低?
- lightbox点击图片预览
- 《Java语言程序设计与数据结构》编程练习答案(第七章)(一)
- lua之诡异的tonumber
- netlink使用方法
- flowable 中文文档
- 怎么理解VGG-16结构图中的block
- avi格式视频转换高清mp4的方法
- 竖流式沉淀池三角堰计算_竖流式沉淀池设计计算
- NET Core 模板项目 - NuGet
- 用户选择云计算机的首要考虑因素是什么,用户选择云计算时的首要考虑因素是...
- 力扣121、122、309、714(C语言版)动态规划股票问题