本发明属于无线通信技术领域,涉及Android操作系统的应用,具体涉及一种基于Android操作系统的激光测距仪蓝牙通信方法。

背景技术:

目前,随着智能设备的普及,智能操作系统得到了极大的发展,Android系统是谷歌推出的一款开源的操作系统,广泛地被用作移动终端、平板电脑以及智能电视等终端的操作系统中。BLE是Bluetooth Low Energy的缩写,又叫蓝牙4.0。与原有的蓝牙技术相比,它的特点是低功耗、低延迟、超长的有效连接距离。

激光测距仪是利用调制激光的某个参数对目标的距离进行准确测定的仪器。脉冲式激光测距仪是在工作时向目标射出一束或一序列短暂的脉冲激光束,由光电元件接收目标反射的激光束,计时器测定激光束从发射到接收的时间,计算出从测距仪到目标的距离。激光测距仪广泛用于地形测量,战场测量,坦克,飞机,舰艇和火炮对目标的测距,测量云层、飞机、导弹以及人造卫星的高度等。它是提高高坦克、飞机、舰艇和火炮精度的重要技术装备。由于激光测距仪价格不断下调,工业上也逐渐开始使用激光测距仪,可以广泛应用于工业测控、矿山、港口等领域。

目前,传统的激光测距仪与移动端进行通信时存在功耗大、数据传输时效率低,造成应用程序的不稳定等缺点,给用户带来了不便。因此亟需一种基于Android操作系统的激光测距仪的通信方法以解决上述问题。

技术实现要素:

本发明的目的在于客服传统的激光测距仪与移动端进行通信时存在的不足,为此提供一种Andriod操作系统激光测距仪蓝牙通信方法,解决了降低蓝牙设备的功耗,使应用程序更加稳定,用户体验更加良好的问题。

为了解决上述技术问题,本发明采用的技术方案为一种基于Android操作系统的激光测距仪蓝牙通信方法,包含以下步骤:

S1:在Android操作系统上运行App软件,扫描激光测距仪的BLE蓝牙设备;

S2:确认激光测距仪的蓝牙设备处于开启状态时,获取其属性信息,建立连接,Android操作系统上运行的App软件显示与激光测距仪连接成功;

S3:Android操作系统上运行的App软件发送十六进制数据请求,激光测距仪的蓝牙设备与预设的移动终端相互传输数据。

进一步,在步骤S1中,激光测距仪通过BLE蓝牙设备与App进行通讯时无需配对,激光测距仪蓝牙设备会返回一个bluetoothDevice列表,通过这个列表可以查询激光测距仪蓝牙设备的相关信息。

上述相关信息包含物理地址、设备名称。

进一步,在步骤S2中,首先需要建立通用属性协议GATT(Generic Attribute Profile)连接,连接GATT Server,获取设备的通用唯一识别码UUID(Universally Unique Identifier),然后读取激光测距仪设备上的特征值,在完成特征值的读写后,调用GATT的API,完成连接。

进一步,在步骤S3中,App与激光测距仪的蓝牙设备通讯前必须与设备进行一次确认字符ACK握手(Acknowledgement),表示发来的数据已确认接收无误,可以接受数据。App发送十六进制请求给设备内存数据,App每收到一条数据就发送一个ACK,以便于下一次请求数据或者设备完成后自动回调数据,App收到一条设备数据后,判断是否传输完整,若判断结果为是,则主动请求下一条数据,若判断结果为否,则返回数据包出错信息。

与现有技术相比,本发明具有以下有益效果:

本发明通过采用BLE技术,App请求单次测量的十六进制数据,设备处于单次测量状态,从而实现每次设备测量完成之后自动回调数据发送到App,降低蓝牙设备的功耗,具有使应用程序更加稳定,用户体验更加良好的优点。

附图说明

图1为本发明的蓝牙连接的过程示意图;

图2为本发明的蓝牙传输数据时的过程示意图。

具体实施方式

下面将结合附图对本发明做进一步详细的说明。

如图1所示,蓝牙连接的过程为:扫描激光测距仪蓝牙设备,激光蓝牙测距仪蓝牙设备会返回一个设备列表,设备列表将设备信息传到程序的connect方法中进行连接,判断设备是否连接成功,若连接成功,App显示与设备连接成功。若连接失败,更新界面,继续扫描设备。

本发明的蓝牙传输数据时的过程如图1所示,包含以下步骤:

步骤1:在Android操作系统上运行App软件,扫描激光测距仪蓝牙设备;激光测距仪通过BLE蓝牙与App进行通讯,无需配对,扫描设备时激光蓝牙测距仪蓝牙设备会返回一个bluetoothDevice列表,通过这个列表可以查询设备的物理地址、设备名称等信息。

步骤2:连接步骤,在扫描到激光测距仪蓝牙设备开启时,获取属性信息,建立连接,Android操作系统上运行的App软件显示与激光测距仪连接成功。首先需要建立GATT连接,连接GATT Server,获取设备的UUID,在知道设备UUID后,读取激光测距仪设备上的特征值,在完成特征值的读写后,调用GATT的API,完成连接。

步骤3:通信步骤,Android操作系统上运行的App软件发送十六进制请求数据,激光测距仪蓝牙设备与预设的移动终端相互传输数据。App与设备通讯前必须与设备进行一次ACK,App发送十六进制请求设备内存数据,App每收到一条数据发送一个ACK,以便于下一次请求数据或者设备完成后自动回调数据,App收到一条设备数据后,判断是否传输完整,若判断结果为是,则主动请求下一条数据,若判断结果为否,则返回数据包出错信息。

需要说明的是,基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

android蓝牙传输脉冲,一种基于Android操作系统的激光测距仪蓝牙通信方法与流程...相关推荐

  1. android 画布裁剪,一种基于Android系统对UI控件进行轮廓剪裁及美化的方法与流程...

    本发明涉及Android应用的技术领域,特别涉及一种基于Android系统对UI控件进行轮廓剪裁及美化的方法. 背景技术: 目前,随着智能电视的普及,Android应用层出不穷,而那些表现形式单一.传 ...

  2. 在android添加数据采集,一种基于Android系统的地理信息数据采集方法与流程

    本方法属于采集地理信息数据的发明,是一种基于android操作系统和gis地理信息系统进行户外地理信息数据采集的方法. 背景技术: 众所周知地理信息数据采集在很多行业中都有应用,比如说农业中的土地普查 ...

  3. android 订餐系统,一种基于Android平台手机订餐系统的实现方法

    一种基于Android平台手机订餐系统的实现方法[ 技术领域: ][0001]本发明涉及一种手机订餐系统,能够通过手机上的Android软件实现订餐.[ 背景技术: ][0002]目前已有的网上订餐系 ...

  4. java 基于类路径搜索_一种基于ClassLoader的自定义类查找方法与流程

    本发明涉及IT技术领域,特别是指一种基于ClassLoader的自定义类查找方法. 背景技术: 随着信息系统的复杂性日益增大,使用反射机制设计的系统越来越多.根据不同的业务需要通过反射去获得相应的处理 ...

  5. 风电功率预测matlab,一种基于二十四节气的风电功率预测方法与流程

    本发明属于风电场技术领域,尤其涉及一种基于二十四节气的风电功率预测方法. 背景技术: 风能的随机波动性对电网产生的较大冲击给风电产业的发展带来了巨大挑战.目前风电功率预测误差较大,数值天气预报精度.训 ...

  6. dncnn图像去噪_一种基于DnCNNs改进的图像降噪方法与流程

    本发明涉及图像处理技术领域,具体涉及一种基于dncnns改进的图像降噪方法. 背景技术: 随着科技进步,新的图像技术在逐渐推广,在日常生活中人们对于图像的要求也越来越高,针对阴天或夜晚等弱光条件下拍摄 ...

  7. unity 陶瓷质感_一种基于Unity3D的虚拟陶瓷设计方法与流程

    本发明涉及虚拟现实领域,特别涉及一种基于Unity3D的虚拟陶瓷设计方法. 背景技术: 陶艺工艺制作环境要求严格:不仅在拉坯成型需要利用旋转机器,在烧制过程则需要窑炉锻造,如何将陶瓷制作工艺与虚拟现实 ...

  8. 服务器基线加固脚本_一种基于WebLogic的安全基线加固方法与流程

    本发明涉及一种安全基线加固方法,尤其涉及一种基于weblogic的安全基线加固方法. 背景技术: weblogic是一个基于javaee架构的中间件,用于开发.集成.部署和管理大型分布式web应用.网 ...

  9. matlab 功率分配,一种基于遗传算法的NOMA功率分配方法与流程

    本发明涉及一种基于遗传算法的NOMA功率分配方法,属于无线通信技术领域. 背景技术: 随着移动互联网应用的发展,移动数据流量和终端连接数也呈爆炸式增长,未来全球移动通信网络连接的设备总量将达到千亿规模 ...

最新文章

  1. TCP和UDP应用场景
  2. java myeclipse 下载_myeclipse 10|MyEclipse(优秀的Java开发工具myeclipse下载) 10.7官方版下载 - 下载吧...
  3. 【运筹学】线性规划数学模型 ( 单纯形法 | 第二次迭代 | 方程组同解变换 | 生成新单纯形表 | 计算检验数 | 最优解判定 | 线性规划解个数分析 )
  4. centos7编译安装mysql5.7_在Centos7源码包编译安装MySQL5.7
  5. c4android 免root,C4Android中4.1.0版本不支持new命令,哪个版本支
  6. Tensorflow get_variable和Varialbe的区别
  7. antd picker 使用 如何_如何打造 Serverless JavaScript 全栈商业级应用?
  8. java编写一个集合类_Java集合类
  9. centos/Linux 解决使用sudo命令时xxx is not in the sudoers file.This incident will be reported
  10. Windows Embedded Compact 7 试用笔记(3)
  11. 线性代数及其应用(第三版)2.2节习题解答
  12. Java代码实现SM2算法以及注意点总结(踩坑记录)
  13. DOSbox汇编集成环境下的详细设置
  14. 查询正在使用的用户(删除用户时)
  15. 小米、搜狗、TW等机器学习算法工程师面试总结
  16. 5位运动员参加了10米台跳水比赛+日本某地发生了一件谋杀案+在屏幕上打印杨辉三角
  17. 蔬菜小程序服务器,生鲜蔬菜同城配送小程序案例分析
  18. UEFI是什么意思?UEFI和BIOS的区别是什么?
  19. 原生HTML+CSS+JS制作自己的导航主页(前端大作业,源码+步骤详解)
  20. 同一个局域网之内,如何远程控制对方的电脑而且不用对方同意

热门文章

  1. 如何停止重启启动Redis服务
  2. WebLogic是怎样判断堵塞线程(Stuck Thread)和独占线程(Hogging Thread)的
  3. c++ scandir
  4. 获取昨天、今天、明天日期
  5. 安装双系统无法连接到软件服务器,MAC安装双系统,WIN10系统下不能登录qq,不能登录优酷,什么原因?...
  6. RevitAPI: Revit 2016新功能和API介绍视频
  7. 苹果iMessage信息会被呈交给执法部门 聊天要注意了
  8. Unity接入极光经验分享
  9. 插画教程:人物铁链和项链金属装饰绘画技巧
  10. 紫书:二分图匹配 最大流解决