找回密码
 立即注册

使用微信账号登录

只需一步,快速开始

查看: 38360|回复: 163

[其他] 如何开始蓝牙软件开发?

 火... [复制链接]

暂无签到数据

发表于 2013-4-30 09:17:33 | 显示全部楼层 |阅读模式
本帖最后由 goldenwater 于 2013-4-30 09:19 编辑

    本帖简单介绍了如何开始蓝牙软件开发的基础准备和环境搭建。不当之处,欢迎大家补充。

    本教程基于PC环境,是以学习蓝牙软件开发为目的而写的。虽然比不上上万块的开发板好用,但便宜啊,一个适配器搞定。
    如果你计划基于PC开发蓝牙应用,则开发环境直接可用。如果是非PC环境,则本环境可以用于学习和测试。
    本例以实现HFP的Audio Gateway side为例子说明。本例完成后,可以用蓝牙耳机连接到运行本例的PC上。

1、需要的基础:
(1)C语言开发基础
(2)了解基本的蓝牙使用知识,配对、连接、使用等。
(3)仔细阅读过蓝牙核心协议中基本蓝牙规范,包括SDP、GAP、RFCOMM等,和要实现的profile规范,例如HFP profile。

2、基本的开发环境:
(1)购买一个USB蓝牙适配器,10块钱左右。
(2)安装千月,确保千月可以连上蓝牙耳机。千月蓝牙软件网上有下载。
(3)可以用于进行连接测试的蓝牙设备,例如蓝牙耳机、手机等等,视你要实现的profile。
    本例就是蓝牙耳机。
(4)Bluesoleil SDK和文档。见附件。
   

3、开发调试
(1)PC上安装C的开发环境,例如visual studio的VC++。
(2)基于Bluesoleil SDK建立测试工程,添加一个SDP实例,假设使用HFP的从机(HFP Side),编译通过后起动。正常情况下,手机蓝牙可以搜索到你写的这个服务,显示为蓝牙耳机。但是连接不上,因为还没有实现HFP连接方面的代码。
    这一步的目的是测试整个环境。
(3)接下来就可以动手实现HFP的Audio Gageway了。
    可以自己按profile规范实现,也可以直接从开源协议栈中直接移植一个HFP的Gateway代码。
    代码中需要添加必要的日志,便于查看工作情况。否则,你需要写大量的代码去实现界面和功能,才知道工作情况。
    界面中添加一个text框和一个连接按钮,text框用于输入要连接的设备的MAC地址,按钮用于连接。
    添加一个连接后的测试功能。例如,用弹窗显示耳机端的当前操作。例如,当接收到手机的末位重拨操作(程序上是SPP收到AT+BLDN)后,弹窗显示。
(4)调试:
    编译通过后启动,在程序的文本框输入耳机的MAC地址(可以用千月查到),点击连接。
    正常连接后,在耳机端进行末位重拨操作,看程序能否正常接收到。

4、其他开发:
(1)实现SPP,分别装在两个电脑上,进行SPP连接。可以直接使用串口工具进行信息收发测试。
(2)实现A2DP,用你的程序,将歌曲从PC播放的蓝牙耳机。
(3)实现PBAP,将你手机的通讯录读到PC上来。
等等......

5、关于手机蓝牙开发:
(1)Android:
    先看下android的SDK的蓝牙部分。android已经实现了RFCOMM接口的封装,实现基于RFCOMM的协议就很方便,例如SPP、HSP、HFP等。
    但有个问题,android的phoneapp启动的时候,启动和bluetoothheadsetservice,注册了SCO连接,所以实现HSP/HFP可以启动和连接SPP,但无法连接SCO。
    如果有可能,可以直接去google下载anroid源码,阅读一下蓝牙部分的代码,大有裨益!
    android实现SPP,楼主另一个帖子有描述。
(2)IOS:
    IOS目前的SDK中蓝牙部分的接口很少。IOS蓝牙对非MFI(made for ios)设备也仅仅用于蓝牙耳机,和ios设备之间蓝牙联机游戏。
    不过,破解后就没这个限制了。btstack是IOS上比较好的开源协议栈。安装了任何一个btstack应用后,就有了btstack环境了,就可以开发各种应用了。
(3)windows phone:
    楼主暂时未设计windows phone 的蓝牙开发,但WP的封闭策略,蓝牙部分封闭到什么程度,欢迎大家补充。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册  

×

评分

参与人数 6金币 +13 收起 理由
merlin_wang + 2 很给力!
aprogramer + 3
confucius + 3 赞一个!
jszxlyyhm -1 赞一个!
零的界点 + 3 赞一个!
52bluetooth + 3 赞一个!

查看全部评分

楼主热帖
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!

暂无签到数据

发表于 2013-5-4 11:08:52 | 显示全部楼层
看似很复杂啊
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:885天
签到总奖励:15306金币
发表于 2013-5-4 11:18:26 | 显示全部楼层
好好学习天天向上
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

暂无签到数据

 楼主| 发表于 2013-5-6 11:22:20 | 显示全部楼层
donghailong 发表于 2013-5-4 11:08
看似很复杂啊


嗯,是需要花些时间。
如果之前就是做软件开发的,那就比较简单了。所以,不赞成没有软件开发基础的童鞋来做。
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:541天
签到总奖励:6436金币
发表于 2013-5-6 21:50:37 | 显示全部楼层
很好的资料,极力推荐!
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

暂无签到数据

发表于 2013-5-11 14:06:26 | 显示全部楼层
很专业的蓝牙软件开发资料,谢谢楼主分享!
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

暂无签到数据

发表于 2013-5-25 22:30:11 | 显示全部楼层
SDK的BIN中,只有一个LIB文件。
这个开发环境怎么用的?而且看是2008年写的文档。
现在4.0还能用吗?
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

暂无签到数据

 楼主| 发表于 2013-5-26 15:01:28 | 显示全部楼层
TTblue 发表于 2013-5-25 22:30
SDK的BIN中,只有一个LIB文件。
这个开发环境怎么用的?而且看是2008年写的文档。
现在4.0还能用吗?


lib是库文件,引入到工程就可以使用里面的函数了。具体怎么引入,是C开发基础知识,也和开发工具有关。

2008年的文档,是和你的SDK对应的,应该不适合4.0,那时候4.0还没出来呢。你用的sdk中一般都包括有文档,如果SDK支持4.0,那对应的文档就支持。
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

暂无签到数据

发表于 2013-5-29 22:21:20 | 显示全部楼层
good job
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

暂无签到数据

发表于 2013-5-30 23:12:21 | 显示全部楼层
有用且详细的指教。
没有蓝牙手机,IPad能不能用来进行连接测试?
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

小黑屋|手机版|我爱蓝牙网 - 52Bluetooth

GMT+8, 2024-4-19 17:35 , Processed in 0.209361 second(s), 23 queries , Gzip On, MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表