QT for Android

  • 思路
    • 一、所用到的头文件
    • 1、打开串口
    • 2、配置串口
    • 3、接收数据
    • 3、发送数据

最近在搞QT for Android开发,在网上搜了下解决方案发现都是需要java库的支持,QT原生接口QSerialPort不支持Android系统的串口开发,因为QT的接口掉的都是标准的接口,而Android都是非标准的,所以用不了,只能自己写

思路

找了网上好多方法,发现都不太适合,然后想起来了我以前自己用Java开发的串口程序,Java是调用的C的代码,使用了NDK进行的串口控制,然后就想起来了用C++直接控制Linux应该也可以,然后开工!!!
qt版本:

一、所用到的头文件

#include <unistd.h>
#include <fcntl.h>//尤其要注意这个 我的这个头文件不知道为什么不完整,需要添加O_NDELAY和O_NOCTTY
#include <sys/types.h>
#include <sys/stat.h>
#include <limits.h>
#include <dirent.h>
#include <termios.h>
#include <errno.h>
#include <stdio.h>
#include <sys/select.h>
#include <string.h>

1、打开串口

widget.cpp文件

        tty_fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY);if(tty_fd == -1){qDebug() << "无法打开组件";qDebug() << tty_fd;qDebug() << strerror(errno);//打印最后一次的故障}else{qDebug() << "打开组件成功";}

widget.h头文件

          int  tty_fd;//句柄,需要根据这个操作串口

如果不知道自己的串口名字以以下这串代码查找自己的串口名

          DIR *p_dir = opendir("/dev");while (1) {struct dirent *p_ent = readdir(p_dir);if (nullptr == p_ent) {break;}qDebug() << "文件名: " << p_ent->d_name;}

2、配置串口

        tcgetattr(tty_fd, &options); //获取原有的串口属性的配置if(tcgetattr(tty_fd, &options)<0){qDebug() << strerror(errno);qDebug() << errno;}bzero(&options, sizeof(options));options.c_cflag|=(CLOCAL|CREAD ); // CREAD 开启串行数据接收,CLOCAL并打开本地连接模式options.c_cflag |= CS8; //设置8位数据位options.c_cflag &= ~PARENB; //无校验位/* 设置9600波特率为B9600如果是115200则为B115200*/cfsetispeed(&options, B9600);cfsetospeed(&options, B9600);options.c_cflag &= ~CSTOPB;/* 设置一位停止位; */options.c_cc[VTIME] = 1;     // 读取一个字符等待1*(1/10)soptions.c_cc[VMIN] = 1;        // 读取字符的最少个数为1tcflush(tty_fd, TCIOFLUSH);    //清掉串口缓存fcntl(tty_fd, F_SETFL, 0);    //串口阻塞  0阻塞1非阻塞if (tcsetattr(tty_fd, TCSANOW, &options) != 0)    //激活新设置{qDebug()<< "激活新设置失败:";qDebug() <<  strerror(errno);}

3、接收数据

widget.cpp文件

 read(tty_fd, &buf, 10);

widget.h文件

   char buf[30];

3、发送数据

   write(tty_fd, "123",strlen("123")) ;

然后到这就已经完成了,由于是初学C++中间犯了好多基本的错误,搞了两天才搞定,一定要细心细心细心!!!

下载地址

QT for Android串口开发相关推荐

  1. android 串口开发第二篇:利用jni实现android和串口通信

    一:串口通信简介 由于串口开发涉及到jni,所以开发环境需要支持ndk开发,如果未配置ndk配置的朋友,或者对jni不熟悉的朋友,请查看上一篇文章,android 串口开发第一篇:搭建ndk开发环境以 ...

  2. android 串口开发_详细分析Esp8266上电信息打印的数据,如何做到串口通讯上电不乱码打印...

    01 写在前面: 上篇关于如何在内置仅1M的Esp8285做到 OTA 升级的同步到微信公众号,竟然被安信可的某些运维人员看到了,想要转载,我很欣慰,竟然自己的笔记可以被这么大型的公司员工认可! 我是 ...

  3. Qt on android 蓝牙开发(控制小车)

    因为要做一个用蓝牙控制小车的app,就用着QT搞了下,网上关于QT蓝牙开发的资料比较少,我在这里记录下过程希望对看到了人有所帮助 首先在项目文件里添加 QT += bluetooth 这样就可以用QT ...

  4. Android 串口开发,发送串口命令,读卡,反扫码,USB通讯,实现demo。——持续更新

    应用场景:APP发送串口命令到打印机,打印相应数据小票 // 串口 implementation 'com.github.licheedev.Android-SerialPort-API:serial ...

  5. Android 串口开发

    1. 主板型号:AIO-3399J 2. 芯片型号:RK3399 3. 操作系统版本:Android 7.1 4. Linux版本:v4.4.103 RPLIDAR A3M1 激光雷达通讯接口采用 3 ...

  6. android串口开发!一年后斩获腾讯T3,附面试题答案

    开头 互联网时代的到来,让我们获取知识变得更加简单,理论上讲只要你想学,便会有不尽的知识等你,只要方法得当,够努力,任何人都可以都有可能成为大牛. 自己在努力的基础上,还学习了一些高效的学习方法,让我 ...

  7. Android 串口开发——粘包解决方法,定时查询心跳数据,解析心跳数据。——持续更新中

    粘包解决方法 方法1 getXOR--是校验方法 /*** 最小数据包的长度(除开数据的N个字节)* 帧头 保留字节 协议控制字 地址字段 命令长度 命令码 命令数据 校验和* 2字节 3字节 1字节 ...

  8. Android USB串口开发

    因为第一次接触Android下的串口开发,在网上找了很多例子都不能满足自己的需要以及不能正常使用,于是结合网上的资源以及查阅资料,终于完成了关于这个串口的开发,在此记录下usb转串口通信开发的过程. ...

  9. qt android程序联网死机,Qt for Android(九) ——APP 崩溃卡死拉起保活实战

    这篇文章要基于前面的基础,我们才能继续下面的内容,建议阅读. 背景 首先,本文的案例环境基于一些特殊的 android 设备,比如瑞星微的RK系列,在该设备上不会熄屏,没有锁屏键,运行的应用也仅限于几 ...

最新文章

  1. 在eclipse中搭建maven工程(第二种方法)
  2. 渐变显示渐变消失的BackgroundView
  3. Sql中的递归问题-思考与建议
  4. 封装、继承和构造函数
  5. 各种数据库连接的总结
  6. [vue-cli]vue-cli3你有使用过吗?它和2.x版本有什么区别?
  7. jsp是在html里面嵌入哪种代码?_奶茶店铺用哪种制冰机才合适?
  8. shell timeout
  9. Java23个设计模式的简明教程
  10. Jquery对话框基本配置
  11. 2017国民行业分类sql-存储过程_存储函数-MySQL
  12. 最棒的 JavaScript 学习指南(2018版)
  13. 【XML基础】XML语言简介及简单例子
  14. [论文笔记]Teaching Machines to Read and Comprehend
  15. S3C2440 开发板实战(9):poll机制
  16. 怎样设置网页中的文字样式
  17. win10如何打开计算机窗口,Win10如何打开运行窗口_Win10打开运行窗口快捷键-192路由网...
  18. 【动态规划】令你战栗的神奇算法:动态规划基础
  19. 汽车美容店管理系统如何管理店铺数据?
  20. ybt1000:入门测试题目

热门文章

  1. 跟着示例学Ubuntu UFW防火墙设置
  2. intel英特尔无线适配器高级设置
  3. 第一次在Vue项目中播放m3u8格式视频遇到的问题和解决方法
  4. 1234,四个不同的数字组成多少种不同的数
  5. Netty第二章 2020 3-9 Netty源码之flush优化
  6. [dp优化]个人对dp优化的理解
  7. python 全栈开发,Day104(DRF用户认证,结算中心,django-redis)
  8. Android地图定位-百度地图上定位自己所在的位置
  9. Java脚本写的随机验证码
  10. Elasticsearch 7.9 之 Frozen indices