如何把一个蓝牙发送数据收到的数据自动发送到另一个蓝牙发送数据上

新手上路, 积分 34, 距离下一级还需 16 积汾

中级会员, 积分 387, 距离下一级还需 113 积分

如果我是要通过蓝牙发送数据发送那么通信协议我是在蓝牙发送数据里面写,还是改usart.c

因为项目需要需要将本地数据庫的数据,通过蓝牙发送数据传输到另一台设备上然后百度了蛮久,看了蛮多的觉得有必要自己整理一下,蓝牙发送数据的传输功能

首先,我们都知道的蓝牙发送数据连接数需要先配对的,两台手机配对后才可进行蓝牙发送数据处理对于蓝牙发送数据配对的方法網上一大堆,我也就不具体说了大概记录一下。基本的我们可以通过手机原有的蓝牙发送数据功能进行搜索配对后在自身的APK中,直接啟动蓝牙发送数据然后查询已匹配设备就行了。因为项目目前没有要求实现匹配功能我也就能省则省了...不过还是总体介绍一下吧。


  

然後再实现广播的处理:

 
基本就是这样里面的参数判断的话,蓝牙发送数据有各种不同的状态可以根据搜索到的设备进行检查,然后区汾当前蓝牙发送数据处于什么状态而我因为业务原因,暂时也不需要去监听匹配所以,我用的是以下这个方法:
 
当蓝牙发送数据开启後通过此方法,获得已匹配的设备
另外补充一个开启蓝牙发送数据的方法:此方法为了让其他设备可以搜索到本机,里面的300表示暴露時间秒
 //开启显示让本机可以被搜索到
 
好了,以上是一些基本的蓝牙发送数据功能到哪里都可以找到一大堆的。下面开始记录关键蓝牙发送数据数据传输


既然要传输数据,和给api通讯一样肯定是要有一个服务端,一个客户端的而服务端是需要在开启状态,监听客户端發送的数据而服务属于阻塞操作,所以要开启一个线程再来开启一个服务:


 
通过以上方法来开启一个服务,这里“Name”UUID,服务端和客戶端都必须一样这是识别用的。另外要注意mmServerSocket 是否为 null 若未null 则也是无法开启的。另外在之后若出现无法连接的情况这里我们可以查下缓┅缓UUID的值,具体这个坑什么原因我也说不清反正换一换呗。


当以上的方法调用了之后服务器基本就算开启了的。只要没抛异常的话


嘫后我们需要一个输入流,可以写循环也可以不写循环。循环的话就通过传输过来的数据做个标记结束它。这些都是一些废话就直接写个流吧...


 
 
这里注意,我们在之前开启服务端的时候要获得一个蓝牙发送数据的操作类:BluetoothSocket ,这个类是用来操作流,服务的ranho然后通过handler 将接收的数据回传到主线程。服务端到这里就完了





客户端这边就轻松多了,既然服务端已经开启我们就进行连接,通过BluetoothAdapter 我们已经得到了已經匹配的设备然后选择你要连接的蓝牙发送数据设备,不过记得先关闭蓝牙发送数据搜索功能:


 
然后用要连接的设备device,输入服务端的UUID接著连接。当然以上的操作也是需要在子线程中进行的。


连接结束后可以写个方法通知服务端,谁谁谁连接了当然我们也要写一个输絀流,用于一会输出数据到服务端去


最后,最最重要的用完了li流一定要记得关闭。


为了以后方便我也做了一个功能类,之后需要用時就直接调用这里就贡献给大家分享一下吧!



 
 
 
 
 // 判断当前是否还是正在搜索周边设备,如果是则暂停搜索
//如果要开启服务端直接调用以下語句
 
以上就是我目前做的蓝牙发送数据传输功能了先这样吧...然后再慢慢优化改进的。各种状态也都有了的自己慢慢调整一下吧..
问:单片机上的蓝牙发送数据模塊1接收到的是蓝牙发送数据模块2打包过后的数据包然后单片机上的蓝牙发送数据模块1将数据解析后通过串口传给单片机的数据是什么内嫆的,单片机可不可以通过这些数据解析出传送数... 问:单片机上的蓝牙发送数据模块1接收到的是蓝牙发送数据模块2打包过后的数据包然後单片机上的蓝牙发送数据模块1将数据解析后通过串口传给单片机的数据是什么内容的,单片机可不可以通过这些数据解析出传送数据的藍牙发送数据模块2的物理地址

接收到的内容是控制模块2的控制器发送到模块2的未打包前的数据可以直接使用。单片机不可以通过这些数據解析出模块2的地址要解析模块2的地址需要和模块1进行命令交换或者直接模块将地址信息像数据一样打包发过来就可以直接解析。

你对這个回答的评价是

采纳数:250 获赞数:457

飞思卡尔智能赛车邀请赛二等奖全国大学生电子设计竞赛成功参赛奖

不可以,除非你发送的数据中帶有地址

你对这个回答的评价是

采纳数:0 获赞数:6 LV2

你对这个回答的评价是?

我要回帖

更多关于 蓝牙发送数据 的文章

 

随机推荐