Cxg Bluetooth Serial

/ Title: cxgBluetoothSerial Description: cxgBluetoothSerial /

来自于:开发者立即使用

isEnabledBluetooth openBluetooth closeBluetooth listenBluetoothStatus bondedDevices isScanning scan stopScan connect disconnect connectedDevice sendData readData

论坛示例

模块demo论坛帖示例:https://community.apicloud.com/bbs/thread-147782-1-1.html

概述

蓝牙串口简介

蓝牙串口通信的基本支持。

cxgBluetoothSerial 模块概述

本模块封装了与经典单片机蓝牙模块 HC-05,HC-06 等蓝牙串口模块的通信接口。

内置心跳检测及定义了一个简单的通信协议。

模块接口

isEnabledBluetooth

获取当前的蓝牙状态

isEnabledBluetooth({}, callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. //当前设备是否开启蓝牙
  3. state: true; //布尔型;true|false
  4. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code: 0, //数字类型: 错误代码
  3. //-1(未知错误)
  4. //0(不支持蓝牙)
  5. msg:"" //字符串类型;
  6. //对应错误码的错误信息
  7. }

示例代码

  1. var bluetoothSerial = api.require("cxgBluetoothSerial");
  2. bluetoothSerial.isEnabledBluetooth({}, function(ret, err) {
  3. if (!err) {
  4. alert(ret.state);
  5. } else {
  6. alert("code: " + err.code + " msg: " + err.msg);
  7. }
  8. });

可用性

Android 系统

可提供1.0.0及更高的版本

openBluetooth

打开蓝牙

openBluetooth({}, callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. state: true; //布尔类型 蓝牙已经打开
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code: 0, //数字类型;
  3. //错误码:
  4. //-1(未知错误)
  5. //0(没有蓝牙)
  6. //1(未获取到activity)
  7. //2(请求打开蓝牙)
  8. msg:"" //字符串类型;
  9. //对应错误码的错误信息
  10. }

示例代码

  1. var bluetoothSerial = api.require("cxgBluetoothSerial");
  2. bluetoothSerial.openBluetooth({}, function(ret, err) {
  3. if (!err) {
  4. alert(ret.state);
  5. } else {
  6. alert("code: " + err.code + " msg: " + err.msg);
  7. }
  8. });

可用性

Android 系统

可提供1.0.0及更高的版本

closeBluetooth

关闭蓝牙

closeBluetooth({}, callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. state: true; //布尔类型
  3. //蓝牙关闭成功
  4. //蓝牙已经关闭
  5. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code: 0, //数字类型;
  3. //错误码:
  4. //-1(未知错误)
  5. msg:"" //字符串类型;
  6. //对应错误码的错误信息
  7. }

示例代码

  1. var bluetoothSerial = api.require("cxgBluetoothSerial");
  2. bluetoothSerial.closeBluetooth({}, function(ret, err) {
  3. if (!err) {
  4. alert(ret.state);
  5. } else {
  6. alert("code: " + err.code + " msg: " + err.msg);
  7. }
  8. });

可用性

Android 系统

可提供1.0.0及更高的版本

listenBluetoothStatus

监听蓝牙的状态变化, 多次返回

listenBluetoothStatus({}, callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: ""; //字符串
  3. //STATE_TURNING_ON (蓝牙正在打开)
  4. //STATE_ON (蓝牙已经打开)
  5. //STATE_TURNING_OFF (蓝牙正在关闭)
  6. //STATE_OFF (蓝牙已经关闭)
  7. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code: 0, //数字类型;
  3. //错误码:
  4. //-1(未知错误)
  5. msg:"" //字符串类型;
  6. //对应错误码的错误信息
  7. }

示例代码

  1. var bluetoothSerial = api.require("cxgBluetoothSerial");
  2. bluetoothSerial.listenBluetoothStatus({}, function(ret, err) {
  3. if (!err) {
  4. alert(ret.status);
  5. } else {
  6. alert("code: " + err.code + " msg: " + err.msg);
  7. }
  8. });

可用性

Android 系统

可提供1.0.0及更高的版本

bondedDevices

获取已经配对的设备

bondedDevices({}, callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. //数组 已经配对的设备
  3. data: [
  4. {
  5. name: "", //字符串 蓝牙名称
  6. address: "" //字符串 蓝牙地址
  7. }
  8. ];
  9. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code: 0, //数字类型;
  3. //错误码:
  4. //-1(未知错误)
  5. msg:"" //字符串类型;
  6. //对应错误码的错误信息
  7. }

示例代码

  1. var bluetoothSerial = api.require("cxgBluetoothSerial");
  2. bluetoothSerial.bondedDevices({}, function(ret, err) {
  3. if (!err) {
  4. alert(JSON.stringify(ret.data));
  5. } else {
  6. alert("code: " + err.code + " msg: " + err.msg);
  7. }
  8. });

可用性

Android 系统

可提供1.0.0及更高的版本

isScanning

是否正在搜索设备

isScanning({}, callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. state: true; //布尔类型 true|false
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code: 0, //数字类型;
  3. //错误码:
  4. //-1(未知错误)
  5. msg:"" //字符串类型;
  6. //对应错误码的错误信息
  7. }

示例代码

  1. var bluetoothSerial = api.require("cxgBluetoothSerial");
  2. bluetoothSerial.isScanning({}, function(ret, err) {
  3. if (!err) {
  4. alert(ret.state);
  5. } else {
  6. alert("code: " + err.code + " msg: " + err.msg);
  7. }
  8. });

可用性

Android 系统

可提供1.0.0及更高的版本

scan

扫描周边设备

scan({}, callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. //返回搜索到的设备, 会多次返回
  3. data: {
  4. name:"", //蓝牙名称
  5. address:"" //蓝牙地址
  6. },
  7. //搜索完成后, data 返回字符串 "ACTION_DISCOVERY_FINISHED"
  8. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code: 0, //数字类型;
  3. //错误码:
  4. //-1(未知错误)
  5. //0(当前未打开蓝牙)
  6. //1(请授予相关权限)
  7. msg:"" //字符串类型;
  8. //对应错误码的错误信息
  9. }

示例代码

  1. var bluetoothSerial = api.require("cxgBluetoothSerial");
  2. bluetoothSerial.scan({}, function(ret, err) {
  3. if (!err) {
  4. if (ret.data == "ACTION_DISCOVERY_FINISHED") {
  5. alert("搜索完成");
  6. } else {
  7. alert(JSON.stringify(ret.data));
  8. }
  9. } else {
  10. alert("code: " + err.code + " msg: " + err.msg);
  11. }
  12. });

可用性

Android 系统

可提供1.0.0及更高的版本

stopScan

停止扫描周边设备

stopScan({}, callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. state: true; //布尔类型 只有true
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code: 0, //数字类型;
  3. //错误码:
  4. //-1(未知错误)
  5. msg:"" //字符串类型;
  6. //对应错误码的错误信息
  7. }

示例代码

  1. var bluetoothSerial = api.require("cxgBluetoothSerial");
  2. bluetoothSerial.stopScan({}, function(ret, err) {
  3. if (!err) {
  4. alert(ret.state);
  5. } else {
  6. alert("code: " + err.code + " msg: " + err.msg);
  7. }
  8. });

可用性

Android 系统

可提供1.0.0及更高的版本

connect

连接到设备

connect({params}, callback(ret, err))

params

address:

  • 类型:字符串
  • 示例: “AB:35:57:57:34:02”
  • 描述:蓝牙设备的地址

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. state: true; //布尔类型 连接成功
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code: 0, //数字类型;
  3. //错误码:
  4. //-1(未知错误)
  5. //0(未获取到蓝牙连接地址)
  6. //1(创建socket失败)
  7. //2(连接失败)
  8. msg:"" //字符串类型;
  9. //对应错误码的错误信息
  10. }

示例代码

  1. var bluetoothSerial = api.require("cxgBluetoothSerial");
  2. bluetoothSerial.connect(
  3. {
  4. address: "AB:35:57:57:34:02"
  5. },
  6. function(ret, err) {
  7. if (!err) {
  8. alert("连接成功");
  9. } else {
  10. alert("code: " + err.code + " msg: " + err.msg);
  11. }
  12. }
  13. );

可用性

Android 系统

可提供1.0.0及更高的版本

disconnect

断开连接

disconnect({}, callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. state: true; //布尔类型 断开成功
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code: 0, //数字类型;
  3. //错误码:
  4. //-1(未知错误)
  5. msg:"" //字符串类型;
  6. //对应错误码的错误信息
  7. }

示例代码

  1. var bluetoothSerial = api.require("cxgBluetoothSerial");
  2. bluetoothSerial.disconnect({}, function(ret, err) {
  3. if (!err) {
  4. alert("断开连接成功");
  5. } else {
  6. alert("code: " + err.code + " msg: " + err.msg);
  7. }
  8. });

可用性

Android 系统

可提供1.0.0及更高的版本

connectedDevice

获取已经连接的设备

connectedDevice({}, callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. //已经连接的蓝牙设备, 不存在时返回 null
  3. data: {
  4. name:"", //设备名称
  5. address:"" //设备地址
  6. }
  7. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code: 0, //数字类型;
  3. //错误码:
  4. //-1(未知错误)
  5. msg:"" //字符串类型;
  6. //对应错误码的错误信息
  7. }

示例代码

  1. var bluetoothSerial = api.require("cxgBluetoothSerial");
  2. bluetoothSerial.connectedDevice({}, function(ret, err) {
  3. if (!err) {
  4. alert(JSON.stringify(ret.data));
  5. } else {
  6. alert("code: " + err.code + " msg: " + err.msg);
  7. }
  8. });

可用性

Android 系统

可提供1.0.0及更高的版本

sendData

发送数据

sendData({params}, callback(ret, err))

params

data:

  • 类型:字符串
  • 描述:需要发送的字符串

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. state: true; //波尔类型 发送成功
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code: 0, //数字类型;
  3. //错误码:
  4. //-1(未知错误)
  5. //0(参数解析失败)
  6. //1(发送失败)
  7. //2(未获取到socket)
  8. msg:"" //字符串类型;
  9. //对应错误码的错误信息
  10. }

示例代码

  1. var bluetoothSerial = api.require("cxgBluetoothSerial");
  2. bluetoothSerial.sendData(
  3. {
  4. data: "hello word"
  5. },
  6. function(ret, err) {
  7. if (!err) {
  8. alert("发送成功");
  9. } else {
  10. alert("code: " + err.code + " msg: " + err.msg);
  11. }
  12. }
  13. );

可用性

Android 系统

可提供1.0.0及更高的版本

readData

读取数据,多次返回

readData({params}, callback(ret, err))

params

bufferSize:

  • 类型:数字类型, 正整数
  • 默认值:256
  • 描述:数据读取 buffer 的大小, 一般无需设置

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. data: "";
  3. //字符串 读取到的数据
  4. //数组 [eventName, dataBody, timeId, checkCode] 解析到的通信指令
  5. //数组第一项: 事件名称 1-32个字符
  6. //数组第二项: 数据体 1-1024个字符
  7. //数组第三项: 数字类型, 发送数据的时间, 0-99999
  8. //数组第四项: 数字类型, 验证码 0-99999
  9. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code: 0, //数字类型;
  3. //错误码:
  4. //-1(未知错误)
  5. //0(未连接到蓝牙设备)
  6. //1(获取输入流失败)
  7. //2(读取数据失败)
  8. msg:"" //字符串类型;
  9. //对应错误码的错误信息
  10. }

示例代码

  1. var bluetoothSerial = api.require("cxgBluetoothSerial");
  2. bluetoothSerial.readData(
  3. {
  4. bufferSize: 256
  5. },
  6. function(ret, err) {
  7. if (!err) {
  8. if (typeof ret.data == "string") {
  9. alert(ret.data);
  10. } else {
  11. alert(JSON.stringify(ret.data));
  12. }
  13. } else {
  14. alert("code: " + err.code + " msg: " + err.msg);
  15. }
  16. }
  17. );

补充说明

在设备连接成功后,手机会每秒自动向设备发送”\0”空字符,来进行心跳检测。

内置一个通信协议 “{eventName,dataBody,timeId,checkCode}” 如果接收到的数据字符串像这种形式,会自动进行解析。 示例:{info,speed=200&deg=90,12345,345}

eventName:事件名称 1-32个字母

dataBody: 不超过1024个字符, 并且不能含有”{},”字符

timeId: 数字类型, 下位机发送数据时的系统时间, 取值范围1-99999

checkCode: 数字类型, 该数据的校验码, 自行设计, 取值范围1-99999

可用性

Android 系统

可提供1.0.0及更高的版本