问题:遇到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串口通信遇到的问题相关推荐

  1. linux开发板汉字显示,Linux Qt 及Arm开发板汉字显示

    作为一个优秀的开发人员,我就不说废话了. 很多人在 使用Qt做嵌入式开发时,会遇到一个问题: 汉字显示,网上有好多方法,并且针对 Qt5 以前的版本和Qt5 的版本有不同的方法,同样,我也遇到了这个问 ...

  2. linux管道方式分页显示,linux命令中分页等管道符的使用

    linux使用命令查看很多东西的时候,一般都会选择使用管道符,要么为了过滤,要么为了分页显示,总之这些管道符有着很重要的作用. 管道 管道简单理解就是,使用管道意味着第一个命令的输出会作为第二个命令的 ...

  3. linux内存换算成b显示,Linux内存管理(下)

    Linux内存管理(下)物理内存管理(页管理) Linux内核管理物理内存是通过分页机制实现的,它将整个内存划分成无数4k(在i386体系结构中)大小页,从而分配和回收内存的基本单位便是内存页了.利用 ...

  4. linux pdf中文不显示,linux下pdf中文不显示

    ubuntu1004,pdf文件有的无法显示中文,解决办法如下: 1.先安装字体(我的字体安装时显示失败,但是可以继续进行第二步,而不出错) A.sudo apt-get install xpdf-c ...

  5. linux新建用户不显示,linux系统无法添加用户帐号的原因分析

    生产环境配置: 操作系统: CentOS 6.6 1.产生的问题: 在使用useradd命令添加帐号(的)时候出现"seradd:cannotopen /etc/passwd" [ ...

  6. 【解决方案】Linux图形界面远程显示Linux服务器的图形化窗口

    本地主机设置: a) 编辑本地主机sshd的配置文件 /etc/ssh/sshd_config X11Forwarding yesX11UseLocalhost no b) 重新启动sshd服务让它生 ...

  7. qt linux 串口eventdriven,详解 Qt 串口通信程序全程图文 (1)

    Qt 串口通信程序全程图文 是本文介绍的内容,在Qt中并没有特定的串口控制类,现在大部分人使用的是第三方写的qextserialport类,我们这里也是使用的该类.我们可以去 http://sourc ...

  8. linux串口助手开发,linux下QT开发串口通信助手

    串口通信的应用十分广泛,所以在QT下编写一个串口通信程序就显得尤为重要.下面将一步一步叙述开发过程: 1.下载第三方QT串口类,免积分 http://download.csdn.net/detail/ ...

  9. QT项目设计:基于Linux系统的车载系统,地图、音视频播放、天气显示、优美界面 详细教程

    文章目录 QT车载系统 一.音频播放 二.视频播放 三.地图显示 四.天气功能 五.界面美化 化作尘其它开源项目: 单片机项目: Linux项目: QT车载系统 哔哩哔哩视频链接:https://ww ...

最新文章

  1. iOS SDWebImage加载webp
  2. 推荐文章:机器学习:“一文读懂机器学习,大数据/自然语言处理/算法全有了...
  3. js生成验证码并且验证
  4. Bailian4067 回文数字(Palindrome Number)【数学】
  5. 80c51流水灯汇编语言,单片机AT89C51可控流水灯课程设计报告(汇编语言).docx
  6. Chrome扩展开发指南(
  7. ECMAScript 基础--原始值和引用值
  8. 「Django」contenttypes基本用法
  9. matlab fft没有误差,matlab仿真FFT结果幅值比实际的略有降低?
  10. lightbox点击图片预览
  11. 《Java语言程序设计与数据结构》编程练习答案(第七章)(一)
  12. lua之诡异的tonumber
  13. netlink使用方法
  14. flowable 中文文档
  15. 怎么理解VGG-16结构图中的block
  16. avi格式视频转换高清mp4的方法
  17. 竖流式沉淀池三角堰计算_竖流式沉淀池设计计算
  18. NET Core 模板项目 - NuGet
  19. 用户选择云计算机的首要考虑因素是什么,用户选择云计算时的首要考虑因素是...
  20. 力扣121、122、309、714(C语言版)动态规划股票问题

热门文章

  1. 反序列化(先序)——split : string--vectorstring
  2. 5、Linux系统的目录结构
  3. 【网络知识】1. 路由器或网桥的2.4G和5G的Wi-Fi各自优缺点对比
  4. Nginx - request_time和upstream_response_time的区别
  5. Java-- String源码分析
  6. Tomcat 教程之快速入门
  7. 图像代数运算:平均值去噪,减去背景
  8. 数字图像处理:第二十一章 视频压缩标准
  9. 2019年,你需要关注这些Node API和Web框架
  10. 学习微服务服务消费者——Feign