spputil

来自于:开发者立即使用

概述

本模块支持串口服务(UUID:00001101-0000-1000-8000-00805F9B34FB), 支持HEX数据发送,支持多个设备通讯。当前只支持Android,IOS后续版本实现。

init

初始化

init({params}, callback(ret))

params

log:

  • 类型:字符串
  • 描述:日志文件路径名,默认值spplogs。

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    logPath: "/storage/emulated/0/UZMap/appid/spplogs", //日志文件默认路径,可以在该路径下查看spp模块日志信息
    status: 'poweredOn'       //字符串类型;蓝牙设备连接状态,取值范围如下:
                             //poweredOn:设备开启状态 -- 可用状态
                             //poweredOff:设备关闭状态
                             //resetting:正在重置状态
                             //unknown:初始的时候是未知的
                             //unsupported:设备不支持的状态
}

示例代码

var spp = api.require('spputil');
spp.init(function(ret){
        alert("当前设备状态:" + ret.status);
});

可用性

Android系统

可提供的1.0.0及更高版本

scan

扫描附近蓝牙设备,会自动停止

scan(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: 'FOUND' ,  // 符串类型;蓝牙设备扫描状态,取值范围如下:
                      //BLUTTOOTH_DISABLED:蓝牙设备不可用
                       //START_DISCOVERY_FAILED:启动扫描失败
                      //FOUND:发现设备
                      //DISCOVERY_FINISHED:扫描完成
                      //DISCOVERY_STARTED:开始扫描
    device :'', //字符串类型;扫描到的设备,当状态为FOUND时候,会有该字段,该字段为json格式的字符串,包含name,address,bondState(12:已经绑定;11:正在绑定;10:未绑定)三个属性,
    devicesNum : 2 ,//数字类型;扫描到的设备数量,当状态为DISCOVERY_FINISHED时候会有该字段
    devices:''//数组类型;包含本次扫描所有扫描到的设备;
}

示例代码

var spp = api.require('spputil');
spp.scan(function(ret) {
    if (ret.status == "BLUTTOOTH_DISABLED") {
        api.alert({
            title: '错误',
            msg: '蓝牙未启用,请启用蓝牙设备',
        });
    } else if (ret.status == "FOUND") {
        console.log("发现新设备:" + ret.device);
        var device = JSON.parse(ret.device);
        //do something with device;
    } else if (ret.status == "DISCOVERY_FINISHED") {
        console.log("扫描完成,共发现" + ret.devicesNum + "个设备");
    } else if (ret.status == "DISCOVERY_STARTED") {
        console.log("开始扫描");
    }
});

可用性

Android系统

可提供的1.0.0及更高版本

isScanning

是否在扫描

isScanning(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true   //布尔型;true||false
}

示例代码

var spp = api.require('spputil');
spp.isScanning(function(ret) {
        console.log("当前是否再扫描蓝牙设备:" + ret.status);
})

可用性

Android系统

可提供的1.0.0及更高版本

stopScan

停止扫描

stopScan()

示例代码

var spp = api.require('spputil');
spp.stopScan();

补充说明

不调用该方法,扫描任务也会自动停止

可用性

Android系统

可提供的1.0.0及更高版本

connect

连接指定外围设备

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

params

address:

  • 类型:字符串
  • 描述:要连接的外围设备的 MAC地址。

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true ,  //布尔型;true||false 连接是否成功
    device: ''// 字符串类型;连接成功的蓝牙设备,当状态为true时候,会有该字段,该字段为json格式的字符串,包含name,address,bondState(12:已经绑定;11:正在绑定;10:未绑定)三个属性,
}

err:

  • 类型:JSON对象
  • 内部字段:
{
    msg: 'device not exist'     //字符串类型;
                                // device not exist : 设备不存在
                                // 其他:系统级别的错误信息

}

示例代码

var spp = api.require('spputil');
spp.connect({
    address: address
}, function(ret, err) {
    if (ret.status) {
         console.log("连接蓝牙设备【" + address + "】成功");
         var device = JSON.parse(ret.device)
    } else {
        console.log("连接蓝牙设备【" + address + "】失败:" + err.msg);
    }
});

可用性

Android系统

可提供的1.0.0及更高版本

disconnect

断开连接

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

params

address:

  • 类型:字符串
  • 描述:要断开连接的外围设备的 MAC地址。

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true   //布尔型;true||false
}

err:

  • 类型:JSON对象
  • 内部字段:
{
    msg: ''     //字符串类型;系统级别的错误信息
}

示例代码

var spp = api.require('spputil');
spp.disconnect({
    address: address
}, function(ret, err) {
});

可用性

Android系统

可提供的1.0.0及更高版本

isConnected

设备是否连接

isConnected({params}, callback(ret))

params

address:

  • 类型:字符串
  • 描述:要判断连接状态的外围设备的 MAC地址。

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: 'connected'   //字符串类型;可能的取值:
                          //connected:已经连接
                          //not connect:连接存在,但未连接
                          //connect not exist:连接不存在
}

示例代码

var spp = api.require('spputil');
spp.isConnected({
    address: address
}, function(ret) {
    console.log("设备的连接状态为:"  +  ret.status);
});

可用性

Android系统

可提供的1.0.0及更高版本

send

发送数据

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

params

address:

  • 类型:字符串
  • 描述:外围设备的 MAC地址。

sendData

  • 类型:字符串
  • 描述:发送的数据。

isHex

  • 类型:布尔类型
  • 描述:是否是HEX数据

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
  status: true,      //布尔型;true||false 发送是否成功
}

err:

  • 类型:JSON对象
  • 内部字段:
{
    msg: 'device not connect'     //字符串类型;
                                // device not connect : 设备未连接
                                // 其他:系统级别的错误信息
}

示例代码

    var spp = api.require("spputil");
    spp.send({
        address: address,
        isHex: true,
        sendData: '55CC090010013B0000',
    }, function(ret, err) {
        if(ret.status){
            console.log("发送数据成功")
        } else {
            alert(err.msg)
        }
    })

可用性

Android系统

可提供的1.0.0及更高版本

receive

接收数据

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

params

address:

  • 类型:字符串
  • 描述:外围设备的 MAC地址。

isHex

  • 类型:布尔类型
  • 描述:是否是HEX数据

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,      //布尔型;true||false  是否成功接收数据
    data : ''//字符串类型;接收到的数据,当状态为true是包含该字段
}

err:

  • 类型:JSON对象
  • 内部字段:
{
    msg: 'device not connect'     //字符串类型;可能的取值:
                                // device not connect : 设备未连接
}

示例代码

var spp = api.require("spputil");
spp.receive({
    address: address,
    isHex : true
}, function(ret) {
    if (ret.status) {
        var data = ret.data;
    } else {
        console.log("设备未连接");
    }
});

补充说明

接收数据不需要重复调用接口,只需要调用一次,如果蓝牙数据有数据返回会不停的触发回调函数。

可用性

Android系统

可提供的1.0.0及更高版本