本文目录
- tws蓝牙耳机开发需要投资哪些硬件设备
- 如何使用蓝牙模块与电脑通信,实现自主开发
- ios蓝牙开发怎么快速获取当前手机连接的设备
- 华为蓝牙开发者选项怎么设置
- iOS蓝牙开发,需要忽略设备才能连接上是为什么
- 如何使用Android蓝牙开发
- 蓝牙开发与应用的困惑
- 嵌入式linux 蓝牙怎么开发
- android蓝牙程序开发中,如何确定一台手机当前是服务器还是客户端
- 安卓编程,蓝牙连接怎么做
tws蓝牙耳机开发需要投资哪些硬件设备
蓝牙设备开发一般包含蓝牙芯片及主机的开发。主机部分根据应用情况可以是PC,单片机,ARM等。蓝牙通讯协议是一组协议的集合,从最底层的硬件驱动,到上层的通讯协议,都由明确的规定。蓝牙设备必须实现这些协议组,才能与其他标准蓝牙设备进行无缝通讯。
对于中上层的协议,既可以由主机实现,也可以在蓝牙芯片上实现,根据蓝牙芯片与主机所要实现的协议多少,可以分为三种蓝牙设备的开发方式。
方式一:
主机实现到HCI层,底层由蓝牙芯片实现。HCI层实现的是蓝牙芯片与主机通讯的方式。目前一般是串口或者USB通讯。所谓的USB也不是真正意义上的USB通讯,而是类似与USB转串口的方式,即通过驱动模拟USB设备实现串口通讯。目前USB蓝牙适配器基本都是这种设备模式。PC端实现了L2CAP, SDP, RFCOMM协议,以及USB转串口的驱动。Windows XP SP2操作系统以上版本的都内置了这些协议栈,还有如WIDCOMM等公司提供的第三方协议栈。
方式二:
这类设备其实所有的蓝牙相关的协议都由蓝牙芯片实现了。主机端只进行应用程序的开发。一般像单片机等资源较少的主机采用这种方式。比如目前的蓝牙串口适配器,单片机只需要与该适配器进行串口通讯,蓝牙所有的通讯协议都由蓝牙芯片进行实现。
方式三:
这种方式一般就不需要主机端,是真正意义上的单芯片方案。所有的程序包括协议的实现以及应用程序都由蓝牙芯片实现。比如现在市场上卖的蓝牙耳机,就是采用这种方式。蓝牙芯片不仅实现音频数据的蓝牙收发,而且实现了音频数据的解码播发。
如何使用蓝牙模块与电脑通信,实现自主开发
1、通信前必须具备东西:
(1)
蓝牙串口模块;
(2)
蓝牙适配器;
(3)
串口调试软件;
(4)
蓝牙测试软件;(配套而来的)
2、配置蓝牙串口模块;
3、把蓝牙适配器插上电脑,等待电脑自动安装好驱动软件,一般电脑都能自行安装,如果特殊的电脑不行,请下载相关蓝牙驱动软件即可;
4、在电脑右下角的蓝牙图标上单击,选择“添加设备”,然后电脑自动搜索,可以看到我们的蓝牙串口模块Bluebooth了,选择它,单击下一步;输入设备的配对码:1234(如上),然后进行连接,成功连接之后电脑会自动搜索安装蓝牙外围设备的驱动软件;
5、进行蓝牙通信。
你需要知道的蓝牙传输的原理:
1
主从关系:
蓝牙技术规定每一对设备之间进行蓝牙通讯时,必须一个为主角色,另一为从角色,才能进行通信,通信时,必须由主端进行查找,发起配对,建链成功后,双方即可收发数据。理论上,一个蓝牙主端设备,可同时与7个蓝牙从端设备进行通讯。一个具备蓝牙通讯功能的设备,
可以在两个角色间切换,平时工作在从模式,等待其它主设备来连接,需要时,转换为主模式,向其它设备发起呼叫。一个蓝牙设备以主模式发起呼叫时,需要知道对方的蓝牙地址,配对密码等信息,配对完成后,可直接发起呼叫。SKYLAB的BLE蓝牙模块作为工业级蓝牙低功耗模块,拥有:超低功耗、远距离传输、宽电压范围的特性。
ios蓝牙开发怎么快速获取当前手机连接的设备
1、首次使用,尽量让耳机冲上1-2个小时左右(除头戴式,因头戴式电池容量大),以后充2小时即可,按说明书的要求操作,尽量不要超过4小时,一定要充24个小时的说法是没有根据的,看到耳机红灯长亮说明已经充满。
2、点击手机设置中的蓝牙设置,选择“开启”,完成。这就打开了手机的蓝牙支持功能。
3、在蓝牙耳机关闭状态,按住耳机多功能键MFB 3 秒以上(自带一件开关机的蓝牙耳机除外),待耳机上的指示红蓝灯交替闪烁(注意是交替闪烁,未配对过程一直交替闪烁),此时蓝牙耳机已处于可被查找状态。
4、打开手机上的蓝牙选项,进行查找,成功搜索到耳机后会在清单上显示蓝牙耳机型号,确认。
5、点击蓝牙耳机名称项:打开,选择绑定。完成,手机就与蓝牙耳机连接上了。 此时耳机会有提示音(已连接)关闭蓝牙耳机时,也会有类似提示音(关机),据此可以判断蓝牙耳机与手机是否已正常连接。
-蓝牙开发
华为蓝牙开发者选项怎么设置
您好,1、首先需要打开手机启动设置,
2、接下来下需要进入设置页面,向下翻页找到更多设置,点击进入,
3、进入更多设置页面,向下翻页找到开发者选项,点击进入。
4、进入开发者选项页面,开启“开启开发者选项”。
5、向下翻页找到蓝牙功能模块,按照图进行每项设置即可了。
-蓝牙开发
iOS蓝牙开发,需要忽略设备才能连接上是为什么
被忽略的设置要重新建立连接,需要重新按步骤进行。这里以手机与蓝牙连接为例加以说明。
手机要先打开蓝牙并处在被发现状态,按住蓝牙耳机开关键不放,直到手机蓝牙搜索到耳机并显示出耳机型号,再点击手机中显示的耳机型号进行连接(有时还需要输入PIN码,默认一般是”1234“),显示“已连接”说明连接成功,此时方可松开耳机开关键。
以下以科奈信蓝牙耳机为例,说一下具体与手机的连接步骤,供参考:
1、在耳机关闭状态,长按多功能键约 5秒,语音提示”开机“”配对中“,此时红蓝指示灯快速交替闪烁;
2、激活手机或其他设备上的蓝牙功能,然后使用菜单来”添加“、”搜索“或”扫描“新的蓝牙设备;
3、从手机或其他设备的蓝牙设备列表中选择蓝牙型号名(如”Y4“)并连接(如果要求输入密码,请输入”0000“)。连接成功后语音提示”蓝牙已连接“。就可以在手机或其他设备上使用通话功能及收听设备上的音频。
还有的蓝牙耳机连接手机用以下办法:
1、在耳机关机的状态,长按NFC功能(大约10秒钟),先会出现蓝灯闪烁,这个时候不要激动,继续长按保持,直到耳机指示灯出现红蓝交替闪烁的状态,进入被搜索的状态。(切记耳机一定要在被搜索的状态,才能被其他蓝牙设备搜索到。)
2、打开手机的蓝牙,点击搜索蓝牙设备,直到手机搜索到耳机的信号,会显示出蓝牙型号。
3、点击进行连接,连接成功后,耳机指示灯会显示为蓝灯间隔闪烁。
-蓝牙开发
如何使用Android蓝牙开发
Android平台支持蓝牙网络协议栈,实现蓝牙设备之间数据的无线传输。本文档描述了怎样利用android平台提供的蓝牙API去实现蓝压设备之间的通信。蓝牙具有point-to-point 和 multipoint两种连接功能。
使用蓝牙API,可以做到:
* 搜索蓝牙设备
* 从本地的Bluetooth adapter中查询已经配对的设备
* 建立RFCOMM通道
* 通过service discovery连接到其它设备
* 在设备之间传输数据
* 管理多个连接
基础知识
本文档介绍了如何使用Android的蓝牙API来完成的四个必要的主要任务,使用蓝牙进行设备通信,主要包含四个部分:蓝牙设置、搜索设备(配对的或可见的)、连接、传输数据。
所有的蓝牙API在android.bluetooth包中。实现这些功能主要需要下面这几个类和接口:
BluetoothAdapter
代表本地蓝牙适配器(蓝牙发射器),是所有蓝牙交互的入口。通过它可以搜索其它蓝牙设备,查询已经配对的设备列表,通过已知的MAC地址创建BluetoothDevice,创建BluetoothServerSocket监听来自其它设备的通信。
BluetoothDevice
代表了一个远端的蓝牙设备, 使用它请求远端蓝牙设备连接或者获取 远端蓝牙设备的名称、地址、种类和绑定状态。 (其信息是封装在 bluetoothsocket 中) 。
BluetoothSocket
代表了一个蓝牙套接字的接口(类似于 tcp 中的套接字) ,他是应用程 序通过输入、输出流与其他蓝牙设备通信的连接点。
BluetoothServerSocket
代表打开服务连接来监听可能到来的连接请求 (属于 server 端) , 为了连接两个蓝牙设备必须有一个设备作为服务器打开一个服务套接字。 当远端设备发起连 接连接请求的时候,并且已经连接到了的时候,Blueboothserversocket 类将会返回一个 bluetoothsocket。
BluetoothClass
描述了一个设备的特性(profile)或该设备上的蓝牙大致可以提供哪些服务(service),但不可信。比如,设备是一个电话、计算机或手持设备;设备可以提供audio/telephony服务等。可以用它来进行一些UI上的提示。
BluetoothProfile
BluetoothHeadset
提供手机使用蓝牙耳机的支持。这既包括蓝牙耳机和免提(V1.5)模式。
BluetoothA2dp
定义高品质的音频,可以从一个设备传输到另一个蓝牙连接。 “A2DP的”代表高级音频分配模式。
BluetoothHealth
代表了医疗设备配置代理控制的蓝牙服务
BluetoothHealthCallback
一个抽象类,使用实现BluetoothHealth回调。你必须扩展这个类并实现回调方法接收更新应用程序的注册状态和蓝牙通道状态的变化。
-蓝牙开发
蓝牙开发与应用的困惑
蓝牙是一套通讯标准,你上面说的配置、协议都是蓝牙协议的一部分,协议内部的术语而已,某些部分能改某些不能,
简单来说,如果你拿到一个芯片,芯片厂商会给你一些软件固件,这些固件里面就实现了蓝牙相关的(你上面说的)配置和协议等,如果你只是做蓝牙应用的话,通常只需要按照厂商给的资料调用一些接口就行了,不要去改动内部的东西。
至于你说的“蓝牙配置”,简单解释就是不同的“配置”提供不同的功能,而且不同的蓝牙设备应用场合、资源都不一样,所以对于一个具体的蓝牙设备来说,可以有某些“配置”,可以去掉某些“配置”(当然有些配置是强制的,如gap),总之这是为了让更多的设备支持蓝牙而做的模块化设计而已
-蓝牙开发
嵌入式linux 蓝牙怎么开发
一.Linux对于蓝牙的支持
在Linux 2.6内核已经实现如下协议。
串口形式蓝牙设备驱动(HCI UART driver)
USB蓝牙棒驱动(HCI USB driver)
内核也实现了L2CAP,RFCOMM串口接口,以及SCO链路支持.
另外内核也直接支持BNEP(Bluetooth Network Encapsulation Protocol ),即把蓝牙网络当成一个无线局域网操作。
Linux也带了蓝牙输入设备的相关支持。
需要打开 HIDP 和HID2HCI两个选项都要打开.
DUND 把蓝牙网络当成一个拨号网络来处理。
2.蓝牙协议栈
在实现了L2CAP后,也需要一个蓝牙协议栈处理。它起什么作用呢? 我的理解是内核封装到RFCOMM的层次,即只负责的蓝牙的包的封装与收发。至于包收上来,在蓝牙的四个阶段,如何应用的状态影响,以及如何响应正确的包,这一些事情由蓝牙协议栈来完成的。-蓝牙开发
在Linux实现蓝牙功能有多个互相竞争的蓝牙协议栈,但是影响最大是bluez.几乎已经成为Linux下的标准协议栈的代名词。
还有一个协议栈是Affix 不过用的人比较少
在应用程序级,它主要由两部分组成,一个是bluez的应用程序库,主要负责与内核的bluez通信,和bluez-util工具。即完成蓝牙四阶段处理的一些命令行工具。
3.蓝牙的概念。
配对由一方发起即可,如果本设备需要被其它设备搜索,需要有被发现功能。
二.Linux关于蓝牙命令
-------------------------------------------------
在Linux使用蓝牙最方便是使用bluez-util自带向个命令来测试。
我们这里采用市面最容易找到的蓝牙棒来做物理层设备与手机进行通讯测试。把蓝牙棒插LINUX下的USB口后,在dmesg我们会看到提示
表示USB蓝牙棒已经被识别了。如果
操作系统自带HCI工具主要来自bluez-util.
/usr/sbin/hciattach : attach serial devices via UART HCI to BlueZ stack
/usr/sbin/hcid :Bluetooth Host Controller Interface Daemon
/usr/sbin/hciemu :HCI emulator
/usr/sbin/hciconfig : configure Bluetooth devices
/usr/sbin/hcidump : Parse HCI data
/usr/bin/hcitool : configure Bluetooth connections
/usr/bin/sdptool : control and interrogate SDP servers-蓝牙开发
hciconfig类似于 hciconfig.类似的操作可以参见官网(这里不方便留链接,自己去搜索下就可以了)
检测USB设备,lsusb
2.查看hci设备,hciconfig
激活设备
hciconfig hci0 up
3.修改蓝牙配置文件
蓝牙采用/etc/bluetooth/
hcid.conf rfcomm.conf
其中hcid.conf有关配对信息。其中security user;表示每次配对询问用户对方PIN,而auto则直接采用passkey中的PIN码。
4.重启蓝牙服务
如果修改了蓝牙配置后,需要重启蓝牙服务
service bluetooth stop
service bluetooth start
5.扫描设备
6.增加自动配对设置
修改 /etc/bluetooth/rfcomm.conf
增加扫描蓝牙地址
7.创建设备结点(只合适于第一次)
rfcomm create dev #它将创建于/dev/rfcomm0 设备结点
它等同于如下命令系列
mknod /dev/rfcomm0 c 216 1
chmod 666 /dev/rfcomm0
rfcomm bind /dev/rfcomm0 00:21:19:A4:E0:F1-1
8.增加SDP消息信息
为了减少麻烦,把所有支持的蓝牙服务都加上.
sdptool add --channel=1 DID SP DUN LAN FAX OPUSH FTP HS HF SAP NAP GN PANU HID CIP CTP A2SRC A2SNK SYNCML NOKID PCSUITE SR1-蓝牙开发
9.增加蓝牙串口绑定
rfcomm bind /dev/rfcomm0 00:21:19:A4:E0:F1 1
#rfcomm bind /dev/rfcomm0 蓝牙设备地址 通道,这个命令可选
10.解除蓝牙绑定
格式:rfcomm unbind /dev/rfcomm0 蓝牙设备地址 通道
11.联接蓝牙设备
hcitool cc 00:21:19:A4:E0:F1
三.关于蓝牙配置文件
-------------------------------------------
蓝牙的配置文件主要是 /etc/bluetooth目录下的hcid.conf和rfcomm.conf.
这里的security 是表示配对的认证模式,user表示由用户输入密码。这个需要在后面用
pin_helper 指明用哪一个程序输入密码,这程序可以是图形界面程序,或者是字符界面程序。
常见的pin_helper有
/usr/bin/bluez-pin : bluez自带的pin输入界面
kbluepin
passkey 配置项指明请求联接的设备的pin码。当采用auto模式时,将采用这个密码来联接.
android蓝牙程序开发中,如何确定一台手机当前是服务器还是客户端
首先,要操作蓝牙,先要在AndroidManifest.xml里加入权限
《uses-permissionandroid:name=“android.permission.BLUETOOTH_ADMIN“ /》
《uses-permissionandroid:name=“android.permission.BLUETOOTH“ /》
然后,看下api,Android所有关于蓝牙开发的类都在android.bluetooth包下。 而需要用到了就只有几个而已:
1.BluetoothAdapter 顾名思义,蓝牙适配器,直到我们建立bluetoothSocket连接之前,都要不断操作它BluetoothAdapter里的方法很多,常用的有以下几个:cancelDiscovery() 根据字面意思,是取消发现,也就是说正在搜索设备的时候调用这个方法将不再继续搜索disable()关闭蓝牙enable()打开蓝牙,这个方法打开蓝牙不会弹出提示,更多的时候需要问下用户是否打开,一下这两行代码同样是打开蓝牙,不过会提示用户:Intemtenabler=new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enabler,reCode);//同startActivity(enabler);
getAddress()获取本地蓝牙地址getDefaultAdapter()获取默认BluetoothAdapter,实际上,也只有这一种方法获取BluetoothAdaptergetName()获取本地蓝牙名称getRemoteDevice(String address)根据蓝牙地址获取远程蓝牙设备getState()获取本地蓝牙适配器当前状态(感觉可能调试的时候更需要)isDiscovering()判断当前是否正在查找设备,是返回true***isEnabled()判断蓝牙是否打开,已打开返回true,否则,返回false***listenUsingRfcommWithServiceRecord(String name,UUID uuid)根据名称,UUID创建并返回BluetoothServerSocket,这是创建BluetoothSocket服务器端的第一步startDiscovery()开始搜索,这是搜索的第一步。 2.BluetoothDevice看名字就知道,这个类描述了一个蓝牙设备createRfcommSocketToServiceRecord(UUIDuuid)根据UUID创建并返回一个BluetoothSocket这个方法也是我们获取BluetoothDevice的目的——创建BluetoothSocket
这个类其他的方法,如getAddress(),getName(),同BluetoothAdapter;
3.BluetoothServerSocket如果去除了Bluetooth相信大家一定再熟悉不过了,既然是Socket,方法就应该都差不多,这个类一种只有三个方法
两个重载的accept(),accept(inttimeout)两者的区别在于后面的方法指定了过时时间,需要注意的是,执行这两个方法的时候,直到接收到了客户端的请求(或是过期之后),都会阻塞线程,应该放在新线程里运行。
还有一点需要注意的是,这两个方法都返回一个BluetoothSocket,最后的连接也是服务器端与客户端的两个BluetoothSocket的连接。
4.BluetoothSocket,跟BluetoothServerSocket相对,是客户端一共5个方法,不出意外,都会用到close(),关闭connect()连接getInptuStream()获取输入流getOutputStream()获取输出流getRemoteDevice()获取远程设备,这里指的是获取bluetoothSocket指定连接的那个远程蓝牙设备 。
-蓝牙开发
安卓编程,蓝牙连接怎么做
Android 蓝牙编程的基本步骤:
获取蓝牙适配器BluetoothAdapter blueadapter=BluetoothAdapter.getDefaultAdapter();
如果BluetoothAdapter 为null,说明android手机没有蓝牙模块。
判断蓝牙模块是否开启,blueadapter.isEnabled() true表示已经开启,false表示蓝牙并没启用。
启动配置蓝牙可见模式,即进入可配对模式Intent in=new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
in.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 200);
startActivity(in); ,200就表示200秒。
获取蓝牙适配器中已经配对的设备Set《BluetoothDevice》 device=blueadapter.getBondedDevices();
当然,还需要在androidManifest.xml中声明蓝牙的权限
《uses-permission android:name=“android.permission.BLUETOOTH“ /》
《uses-permission android:name=“android.permission.BLUETOOTH_ADMIN“ /》
接下来就是根据自己的需求对BluetoothAdapter 的操作了。