历史上的今天
返回首页

历史上的今天

今天是:2024年11月19日(星期二)

正在发生

2018年11月19日 | 单片机连接蓝牙4.0心得分享

2018-11-19 来源:eefocus

最近公司要搞一个智能硬件,通过APP连接硬件,发指令达到某些目的,对于从没有接触过蓝牙的小白,简直是两眼一抹黑,于是从网上找例子,找攻略,例子和代码都不是自己想要的,于是只能求助于谷歌API,拿着某翻译,一个个对着看,终于调试成功了,下面直接上思路及代码。


1、从谷歌官网下载一份demo(通用的),对于任何串口,只要符合规范,这个demo都能调试。


2、谷歌官方代码共有4个类,其中两个比较重要,如下:


BluetoothleService 蓝牙服务:里面有蓝牙的连接,写入命令后,蓝牙所返回的协议(这个协议是厂家给你的)


DeviceControlActivity 设备控制类:连上蓝牙后进入这个界面,会出现一大堆服务,及服务的特征


3、了解两个类,接下来我们要连上蓝牙给单片机发送指令,首先打开DeviceControlActivity类,找到如下代码:


//如果该char可写


if ((charaProp | BluetoothGattCharacteristic.PROPERTY_WRITE) > 0) {


LayoutInflater factory = LayoutInflater.from(parent.getContext());


final View textEntryView = factory.inflate(R.layout.dialog, null);


final EditText editTextName = (EditText) 


textEntryView.findViewById(R.id.editTextName);


final EditText editTextNumEditText = 


(EditText)textEntryView.findViewById(R.id.editTextNum);


AlertDialog.Builder ad1 = new AlertDialog.Builder(parent.getContext());


ad1.setTitle("WriteCharacteristic");


ad1.setView(textEntryView);


ad1.setPositiveButton("确定", new DialogInterface.OnClickListener() {


public void onClick(DialogInterface dialog, int i) {


byte[] value = new byte[20];


value[0] = (byte) 0x00;


if(editTextName.getText().length() > 0){


//write string


WriteBytes= editTextName.getText().toString().getBytes();


}else if(editTextNumEditText.getText().length() > 0){


WriteBytes= hex2byte(editTextNumEditText.getText().toString().getBytes());


}


characteristic.setValue(value[0],


BluetoothGattCharacteristic.FORMAT_UINT8, 0);


characteristic.setValue(WriteBytes);


mBluetoothLeService.writeCharacteristic(characteristic);


}


});


ad1.setNegativeButton("取消", new DialogInterface.OnClickListener() {


public void onClick(DialogInterface dialog, int i) {


}


});


ad1.show();


}


以上这段代码就是写入命令的代码,起初我在这里栽了跟头,发现一件事,直接输入命令,此处的返回和协议文档是对不上的,于是我做了如下修改:


if ((charaProp | BluetoothGattCharacteristic.PROPERTY_WRITE) > 0) {


byte[] bytes = hexStringToBytes("XXXXXXXXXXXX");


// characteristic.setValue(new byte[]{0xXX,0xXX,0xXX,0xXX,0xXX, (byte) 0xB2, (byte) 0xXX});


characteristic.setValue(bytes);


boolean status = mBluetoothLeService.writeCharacteristic(characteristic);


Log.e("shjysoft_info","状态:"+status);


}


先把协议的16进制的字符串变成字节,然后放到特征里面,写进去,然后就成功了,但是没有接触过蓝牙的朋友会有疑问,给哪个服务哪个特征写,这边我也遇到 过,我跑过去问前辈们,前辈们说了一句,一个一个试,没错,你一个一个点,哪个返回正确就是哪个


推荐阅读

史海拾趣

ETA Electric Industry Co Ltd公司的发展小趣事

在市场不断拓展的同时,ETA Electric Industry Co Ltd非常注重产品质量管理。他们引入了国际先进的质量管理体系,并严格执行每一项质量控制标准。公司还设立了专门的质量检测部门,对每一批出厂的产品进行严格把关。这种对质量的极致追求,赢得了客户的广泛认可和信赖。

Bliley Technologies Inc公司的发展小趣事

在Bliley的发展历程中,技术创新始终是推动其不断前进的重要动力。从最初的石英晶体生产,到后来的恒温控制晶体振荡器(OCXO)、温度补偿晶振(TCXO)和压控晶体振荡器(VCXO)等先进产品的开发,Bliley始终站在行业技术的最前沿。公司拥有一支专业的研发团队,致力于开发更高效、更稳定、更精确的频率控制产品。这些技术创新不仅提升了Bliley的产品竞争力,也推动了整个电子行业的发展。

Faraday Technology公司的发展小趣事

Bliley Technologies Inc.的历史可以追溯到1930年,当时它作为Bliley压电公司成立,专注于为业余无线电市场生产石英晶体。石英晶体的精确频率控制特性使其成为无线电通信领域的理想选择。随着技术的不断进步和市场需求的扩大,Bliley很快发现其产品的潜力远不止于此。到了20世纪30年代中期,Bliley的客户和产品范围迅速扩展到新兴的军事和商业通信领域,公司也因此更名为Bliley Electric Company。这一转变标志着Bliley从一家小型压电公司成长为晶振行业的佼佼者。

强盛电子(AEC)公司的发展小趣事

随着环保意识的日益增强,AEC积极响应国家绿色发展的号召,将环保理念融入企业的日常运营中。公司投入大量资金进行环保技术的研发和应用,推动生产过程的绿色化、低碳化。同时,AEC还积极参与社会公益活动,为保护环境、促进可持续发展贡献了自己的力量。

胜利(VICTOR)公司的发展小趣事

进入21世纪,胜利公司加大了对技术研发的投入,不断推出具有创新性的产品。例如,公司研发的碳纤维羽毛球拍,不仅轻盈耐用,而且性能卓越,迅速成为市场上的热销产品。此外,公司还积极引入新材料、新工艺,不断提升产品的品质和性能。

无锡友达公司的发展小趣事

随着产品性能的不断提升和市场需求的扩大,无锡友达开始积极拓展国内外市场。公司的产品不仅覆盖国内二十多个省、市,还远销欧美、中东、港澳台等国家和地区。通过与国际知名企业的合作,无锡友达不断提升自身的品牌影响力,逐渐在全球电子行业中占据一席之地。

问答坊 | AI 解惑

LED封装用环氧树脂的基本知识

replyreload += \',\' + 697129;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答>

基于模型设计第一帖

 上次我在申请MP430的帖子里写了关于基于模型设计的概念:  下面我先推荐一篇文章,给大家一个基本概论:什么是基于模型设计. 这篇文章是我转的ilovematlab论坛创始人的一篇文章,是个加拿大华裔,文章如下:      ...…

查看全部问答>

【求助】定时器问题

我用定时器A定时 用430f1101芯片 外接32768晶震 我设置为ACLK TIMEA定时到32768时产生中断 WDTCTL = WDTPW + WDTHOLD; TACTL |=TASSEL0; CCTL0 |=CCIE; _EINT(); TACTL |=MC0+ TACLR+ TAIE; ...…

查看全部问答>

请教高手: 看门狗问题

为什么 430F413 看门狗复位时,内部ran,全部清零呢。这样过程值就不能使用了。看门狗就没什么意义了。请指导下。…

查看全部问答>

C语言之父不可不说的故事

        计算机科学家先驱、C语言之父丹尼斯•里奇(Dennis Ritchie )已于10月12日去世,享年70岁。里奇是公认的Unix操作系统最好的合伙创始人,并且他还早在1971年就开发了C语音编程。下面就由福州卓跃教 ...…

查看全部问答>

msp430 入门 TI MSP430 LaunchPad 欢乐学习季学习交流

刚刚入手msp430 到ti公司申请了两片msp430f149 然后自己搭了最小系统就开始了msp430 我用的是iar for msp430   下面是io口操作的源代码…

查看全部问答>

altium designer 各种封装库

看着比较全的PCB封装 不想自己画封装的快来下载吧 [ 本帖最后由 最美的太阳 于 2012-6-8 09:11 编辑 ]…

查看全部问答>

如何将51程序移植为AVR的程序,求指导啊!

用那个屏,是从51改AVR的,就是显示不了字库的字,显示全黑了…

查看全部问答>

蓝牙4.0遥控电扇方案

一、风扇市场简介在炎热的夏天,人们离不开可以降温的家电,虽然在城市生活中空调已经非常普遍,但是电风扇引起便宜的价格、小巧的体积、摆放方便等优点仍然占领着中小城市和农村家庭的大部分市场,而且技术也越来越成熟,功能越来越完善, 电风扇 ...…

查看全部问答>