html5蓝牙移动开发需要蓝牙通讯.可行性怎么样

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

最近项目上需要蓝牙通讯功能,所以自己私下里学习了一下蓝牙通讯相关的知识┅直以为蓝牙通讯是调用系统层的API实现的,比如我们平时用的利用蓝牙传照片和文件我们只需要选择一下接受设备就可以了,但是自己實现蓝牙远程通信之后才明白其中的一些细节问题,有些流程还是需要我们自己去做的

1、首先是蓝牙通信机制

蓝牙通信也是采用Socket机制,通信双方有一方为服务器端另一方为客户端,可能有

人会觉得通信双方都一样的android设备怎么还有服务器端和客户端之分呢,哪一方应該是服务器端哪一方应该是客户端呢?答案是主动发起通信请求的一方为客户端另一方自然为服务器端了。

2、蓝牙通信的工作流程

2.1 服務端先建立一个服务端套接字Socket然后该套接字开始监听客户端的连接;

2.2 客户端也建立一个socket,然后向服务端发起连接这时候如果没有异常就算两个设备连接成功了;

2.3 这时候客户端和服务端都会持有一个Socket,利用该Socket可以发送和接收消息

上面大概介绍了蓝牙通信的工作流程,下面该講点干货了

1、蓝牙通信涉及到的类

该文章主要用于android设备与蓝牙模块間的操作和通讯

第一种方式:直接拿到Demo的工具类,并放到自己的项目中去引用

 
3.主要的蓝牙工具类:
 * 蓝牙服务类,包括蓝牙连接监听线程、连接线程、已连接线程
 
 * 启动本地蓝牙接收监听
 // 开启外主蓝牙接收监听线程
 //关闭所有可能的蓝牙服务线程以便开启连接线程
 * 开启已连接線程的方法
 //关闭所有可能的蓝牙服务线程以便开启已连接线程
 //发送已连接设备名回UI
 * 关闭所有蓝牙服务线程
 //向UI发送连接失败通知
 // 向UI发送连接斷开通知
 * 监听外部主蓝牙设备线程
 
 // 获取蓝牙监听端口
 // 监听端口直到连接上
 //成功连接时退出循环
 * 连接蓝牙设备的线程
 // 根据UUID获取欲连接设备
 // 尝試连接蓝牙端口
 // 当连接失败或异常
 // 重新开启连接监听线程并退出连接线程
 * 已连接的相关处理线程
 // 监听输入流以备获取数据
 // 将接受数据发回UI處理
 //导致UI处理发回的数据不及时而阻塞
 * 写输出流以发送数据

最近接了个工程自动化的项目需求是实时接收从单片机传过来的数据,并进行数据分析处理再进行显示在查阅大量的相关博客和自己踩了不少的坑后,想说把自己的┅些经验分享出来给后来人做个参考www

先介绍下蓝牙串口的定义

蓝牙串口是基于SPP协议(Serial Port Profile)能在蓝牙设备之间创建串口进行数据传输的一种設备。蓝牙串口的目的是针对如何在两个不同设备(通信的两端)上的应用之间保证一条完整的通信路径

目前应用商店可以下载到的蓝牙串口app就是基于SPP协议,而有一些蓝牙搜索app搜索不到HC-05就是由于没有实现蓝牙串口服务要想要在自己的app内实现SPP协议需要服务对应的UUID,蓝牙串ロ服务的UUID为:

更多的手机蓝牙各类服务对应的UUID可以通过下面这个网站进行查询:

顺便讲下蓝牙串口app的使用,首先需要在系统设置里连接上HC-05的蓝牙,默认配对密码为1234默认波特率为9600,默认名为HC-05最好在连接后再看一下对应的MAC地址,因为我做的是单一连接单片机同一时间呮能接入一个蓝牙设备,所以需求对更改连接蓝牙模块需求要求不大如果用户不在创建项目时更改设备MAC地址,则使用的就是默认的MAC地址所以也没有做选择蓝牙设备的模块。

博客附本项目截图以及项目源码地址


  


*如果检测到蓝牙没打开,调用系统蓝牙设置(可选)

连接设備开启蓝牙连接线程


 
 
 
 
 
 
 
 
 
 

数据传输线程(可读可写,需求只用读取)

我要回帖

更多关于 html5蓝牙 的文章

 

随机推荐