最近做的微信小程序要调用手机自带的4.0蓝牙发送、接收数据
4.0蓝牙又叫BLE,整理了下,蓝牙连接要经过如下步骤:
- 初始化蓝牙
- 检查蓝牙是否初始化成功
- 开始搜索附近蓝牙设备
- 显示扫描得到的蓝牙
- 选择连接特定MAC地址的蓝牙设备
- 连接成功后,获取service ID
- 然后获取characteristic ID
- write/read data
*每个步骤对应的操作在js代码中有注释
我遇到的坑:一定要启用notify功能,否则只能发送,无法接收数据!!!
index.json为空,只上传了index.wxml,index.wxss,index.js三个文件,源码如下
index.wxml
<!--pages/mine/mine.wxml-->
<view class="container">
<view class="section"> <!-- 第一行 -->
<view class="content">
<text>蓝牙开关</text>
</view>
<view class="switch">
<switch checked="{
{isbluetoothready}}" bindchange="open_BLE" />
</view>
</view>
<view class="section"> <!-- 第二行 -->
<button type="default" size="{
{primarySize}}" loading="{
{searchingstatus}}" plain="{
{plain}}" disabled="{
{disabled}}" bindtap="search_BLE"> {
{searchingstatus?"搜索中":"搜索蓝牙"}} </button>
</view>
<block wx:for="{
{list}}"> <!-- 第三行 -->
<view class="section" style="flex-direction:row" >
<view>
<text>{
{index}}:\n </text>
<text>设备名称: {
{item.name}}\n</text>
<text>MAC地址: {
{item.deviceId}}</text>
</view>
<view class="connection">
<button id="{
{item.deviceId}}" size="mini"
bindtap="connectTO"> {
{deviceconnected?"已连接":"连接"}} </button>
</view>
</view>
</block>
<block wx:if="{
{deviceconnected}}"> <!-- 第四行 -->
<view >