单片机连接蓝牙4.0心得分享

发布者:boyhxz最新更新时间:2018-11-19 来源: eefocus关键字:单片机  连接蓝牙4 手机看文章 扫描二维码
随时随地手机看文章

最近公司要搞一个智能硬件,通过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进制的字符串变成字节,然后放到特征里面,写进去,然后就成功了,但是没有接触过蓝牙的朋友会有疑问,给哪个服务哪个特征写,这边我也遇到 过,我跑过去问前辈们,前辈们说了一句,一个一个试,没错,你一个一个点,哪个返回正确就是哪个


关键字:单片机  连接蓝牙4 引用地址:单片机连接蓝牙4.0心得分享

上一篇:单片机编程开发技巧经验分享
下一篇:学单片机,到底在学什么?

推荐阅读最新更新时间:2024-03-16 16:17

基于ARMlinux的嵌入式远程测控系统设计
  前言   目前,大多数远程测控系统中,系统的硬件采用8/16位的单片机,软件多采用汇编语言编程,该编程仅包含一个简单的循环处理的控制流程;单片机与单片机(或上位机)之间的通信通过RS232、RS485或CAN总线来组成局域网,再用Pc机作为Web服务器,与Internet进行通讯。这样的远程测控设备成本高、体积大、速度慢、功耗大。现在,32位嵌入式CPU价格已下降,性能指标也有提高,为嵌入式系统的广泛应用提供了可能性。基于上述情况,我们将嵌入式系统应用于远程测控系统,大大提高了测控系统的性能,同时降低了成本和功耗,体积也大大减小。   嵌入式系统一般应用嵌入式操作系统来开发。在嵌入式操作系统的选择上,由于Linux有完整开
[测试测量]
什么是单片机_51单片机学前预备知识
  一、单片机的概念:   二、单片机的用途:   工业自动化:数据采集,测控技术;   智能仪器仪表:数字示波器、数字信号源、数字万用表、感应电流表等;   消费类电子产品:洗衣机、电冰箱、空调机、手机等;   凡是与控制或简单计算有关的电子设备都可以用单片机来实现,再根据具体实际情况选择不同性能的单片机,如:atmel,stc,pic,avr,凌阳,80C51,arm等。   三、怎么学单片机:   实践第一;补充必要的理论知识,即缺什么补什么;做工程项目积累经验。(可在网络上搜索些题目,也可自己有什么想法大胆的去试验。)。   四、为什么选择51单片机作为单片机学习的入门:   学51单片机成本低,而且51单片机技术最成
[单片机]
基于MAXQ微控制器构建增强型智能4-20mA变送器
简单的环路工作 在电流环路中,传感器的输出电压首先按比例转换成电流,一般4mA表示传感器的零电平输出,20mA表示满量程输出。远端接收器将4-20mA电流又转换为电压,利用计算机或显示模块做进一步处理。 典型的4-20mA电流环电路包括四个部分:传感器/变送器、电压-电流转换器、环路电源和接收器/监视器。在环路供电的应用中,传感器驱动电压-电流转换器,其他三个部分串联连接,构成闭环回路(图1)。 图1. 4-20mA环路供电电路框图 智能型4-20mA变送器 传统上,4-20mA变送器包括一个安装在现场的器件,该器件感测物理参数并产生4-20mA标准范围内的比例电流。为适应工业需求,出现了称作“智能型变送器”的第二代
[应用]
基于CAN控制器的对等式单片机多机系统的通信
    摘要: 针对单片机多机系统主从式通信的缺点,提也了利用CAN控制器实现单片机多机系统对等式通信,并对其硬件组成原理、通信程序的设计做了详细的分析。     关键词: 单片机多机系统 “对等式”通信 控制器局域网(CAN) 关于单片机的多机通信,许多文章及相关书籍都有介绍,但就其多机通信的方式而言大多为“主从式”,这一通信方式限制了单片机功能的发挥及广泛的应用。虽然文献 利用巧秒的硬件手段实现了单片机多机之间的“对等式”通信,但其通信方式实质上仍是“主从式”。本文介绍了一种基于CAN控制器的单片机多机系统,从本质上实现了任意两机之间直接相互通信,从而克服了“主从式”多机通信的缺点。 1 CAN技术简
[应用]
AVR单片机的相关总结
1、AVR文档里要求最好不要中断嵌套,只能执行完这个中断再执行下一个中断; 2、ADC采样的时候,外部存在上拉51K的情况下,断路,测量的电压值是5V(工作电压是5V),说明mega88的输入阻抗是相当大的 哈哈; 3、SREG状态寄存器中, SEI、CLI就是开全局中断、关全局中断 (还以为没有来着),_NOP 、 _WDR; 4、Volatile (不稳定的) AVR全局变量的时候用 (可以避免编辑器对其的优化); 5、不用的IO口如果悬空的话,1是耗电量大处于判断状态;2是 受外界一点点干扰就可能成为反复振荡的输入信号(干扰问题); 6、推挽结构,输出不能直接接地 (大电流烧掉管子); 7、明确 PC (Program
[单片机]
AVR<font color='red'>单片机</font>的相关总结
集节能、低成本与紧凑体积于一体 东芝扩充TX03 MCU阵容
东芝公司(Toshiba Corporation)推出最新款TMPM375FSDMG设备,从而扩充了东芝TX03系列微控制器(MCU)的产品阵容。TMPM375FSDMG MCU基于ARM Cortex-M3内核,采用了新一代矢量引擎,可改善电机控制,减少组件数量,降低能耗和功耗。该MCU非常适合用于需要高可靠性、工作效率和精准变速控制的无刷直流(BLDC)电机控制应用,如用于家电(洗衣机、空调和电冰箱)、电机、空调设备、泵、售货机和ATM机的电机控制。 TMPM375FSDMG可通过减少组件数量降低磁场定向控制的系统成本—省去了模拟前端,而5V操作则省去了对3V稳压器的需求。业界标准的ARM Cortex-M3 CPU,加上专
[单片机]
单片机学习----MC-S51单片机简介
MCS-51单片机是美国INTE公司于1980年推出的产品,与MCS-48单片机相比,它的结构更先进,功能更强,在原来的基础上增加了更多的电路单元和指令,指令数达111条,MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品,各高校及专业学校的培训教材仍与MCS-51单片机作为代表进行理论基础学习。我们也以这一代表性的机型进行系统的讲解。 MCS-51系列单片机主要包括8031、8051和8751等通用产品,其主要功能如下: 8位CPU 4kbytes 程序存储器(ROM) 128bytes的数据存储器(RAM) 32条I/O口线
[单片机]
单片机控制摩托车点火器新理念的综合设计
点火系统汽油机中起着非常重要作用,点火能量必须按规定要求足够大,否则就不能点燃气缸内混合气;点火时刻或点火提前角是影响发动机性能重要参数之一,每个给定发动机运行工况都对应着一个最佳点火提前角,过早或过迟点火,都会直接影响到摩托车燃油经济性和动力性。为此,试验获取发动机最佳点火提前角,并控制发动机尽量按最佳时刻点火是设计关键。 目前,国外大排量运动型摩托车已开始应用微机控制技术,日本本田、川崎、铃木公司等都有这样车型推出,而我国点火提前数字控制技术应用方面远远落后于发达国家。事实上,这项技术我国生产轿车汽油机上应用才刚刚开始,但摩托车汽油机上还未应用。 1、数字控制点火系统组成 数字控制点火系统主要由霍尔元件、信号整
[单片机]
<font color='red'>单片机</font>控制摩托车点火器新理念的综合设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved