posScanner

来自于:开发者立即使用

概述

posScanner 提供了一个读取扫描枪数据的便捷接口,在扫描枪扫码时,将得到的数据传给指定的回调函数。

posScanner 支持各品牌蓝牙扫描枪、USB扫描枪,非常适合餐厅收银、超市结账类的App使用。

  • 使用 posScanner 模块连接蓝牙扫描枪:

    使用蓝牙扫描枪前,要把平板(或手机)和蓝牙打印机绑定。

    手动绑定蓝牙打印机时,在手机或平板的蓝牙管理界面,搜索蓝牙设备,待搜索到蓝牙扫描枪后,进行绑定。

    如果知道蓝牙扫描枪MAC地址(如 98:D3:31:20:23:4A),可直接调用 createBondToScanner,在参数中传入蓝牙扫描枪MAC地址地址和pin码,进行绑定。

    绑定后,调用模块的 connectScanner 函数,和蓝牙扫描枪进行连接,并设定回调函数。在扫描枪扫码时,posScanner 模块将得到的数据传给指定的回调函数。

  • 使用 posScanner 模块连接USB扫描枪:

    不能将USB扫描枪配置为USB-KBW(键盘模式),因为在该模式下,Android系统认为连接了外接键盘,将不再弹出虚拟键盘。

    不能将USB扫描枪配置为USB虚拟串口模式,因为Android系统里面的app需要获得root权限才能访问串口。

    USB扫描枪设置可以参考说明书,例如,“得力条码扫描枪(usb接口)”,根据此扫描枪说明书,把它设置为“USB-POS”模式,即可正常使用本模块。

getBluetoothScanners

获取蓝牙扫描枪列表

getBluetoothScanners({params}, callback(ret))

params

status:

  • 类型:字符串
  • 描述:(可选项)表示要获取绑定的设备还是搜索周边所有蓝牙设备
  • 取值范围:bonded | all 默认值为 all
  • 示例: 传入 {status: 'bonded'} 获取绑定的蓝牙设备,null 或 {status: 'all'} 搜索周边所有蓝牙设备

callback(ret)

ret:

  • 类型:JSON数组,其中每一个JSON对象代表一个蓝牙设备
  • 内部字段:
[
    {
        name:     ''   //字符串;蓝牙设备名称
        address:  ''    // 字符串;蓝牙设备地址
        bondState:    // 数值类型; 12表示该蓝牙设备已绑定,11表示正在绑定,其它值表示未绑定
    }
]

示例代码

var scannerModule = api.require('posScanner');
var param = {
    'status': 'bonded'
};
scannerModule.getBluetoothScanners(param, function (ret) {
    alert(JSON.stringify(ret));
});

补充说明

搜索周边所有蓝牙设备时,需要30秒左右才能返回搜索到的设备列表

可用性

Android系统

可提供的1.0.0及更高版本

getUsbScanners

获取USB扫描枪

getUsbScanners(callback(ret))

callback(ret)

ret:

  • 类型:JSON数组,其中每一个JSON对象代表一个USB设备
  • 内部字段:
[
    {
        name:''         // 字符串:USB 设备名称
        address:  ''    // 字符串:USB 设备地址
    }
]

示例代码

var module = api.require('posScanner');
module.getUsbScanners(function (ret) {
    alert(JSON.stringify(ret));
});

可用性

Android系统

可提供的1.0.0及更高版本

createBondToScanner

绑定蓝牙扫描枪

createBondToScanner({params}, callback(ret))

params

address:

  • 类型:字符串
  • 描述:(必填项)蓝牙扫描枪 MAC 地址

pin:

  • 类型:字符串
  • 描述:(可选项)绑定蓝牙设备时需要输入的pin码
  • 说明: 一般的pin码为 0000 或 1234,如果不输入,系统尝试使用这两个值进行绑定

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    result:     'ok|fail'   //字符串;ok表示绑定成功,fail表示未能绑定
    msg:  ''    // 字符串;操作结果说明  
}

示例代码

var scannerModule = api.require('posScanner'); 
var param = { 
    'address': '5C:B6:CC:02:C9:33',
    'pin': '0000' 
}; 
scannerModule.createBondToScanner(param, function (ret) { 
    alert(JSON.stringify(ret));
});

可用性

Android系统

可提供的1.0.0及更高版本

removeBondToScanner

将指定的蓝牙扫描枪解除绑定

removeBondToScanner({params}, callback(ret))

params

address:

  • 类型:字符串
  • 描述:(必填项)要解除绑定的蓝牙扫描枪地址

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    result:     'ok|fail'   //字符串;ok表示解绑成功,fail表示未能解绑
    msg:  ''    // 字符串;操作结果说明  
}

示例代码

var scannerModule = api.require('posScanner'); 
var param = { 
'address': '5C:B6:CC:02:C9:33' 
}; 
scannerModule.removeBondToScanner(param, function (ret) { 
alert(JSON.stringify(ret)); 
});

可用性

Android系统

可提供的1.0.0及更高版本

listenScanner

连接设备绑定的扫描枪并设定回调函数,如果扫描枪连接中断,会自动重新连接

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

params

address:

  • 类型:字符串
  • 描述:(必填项)蓝牙扫描枪地址(可通过getBluetoothScanners获取)、Usb扫描枪地址(可通过getUsbScanners获取)

callback(ret, err)**

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:'',//扫描枪状态,offline:断开,online:已连线
    msg:'',   //offline的原因描述
    data:     '',   //字符串;扫描枪扫码获得的数据
}

err:

  • 类型:JSON对象
  • 内部字段:
{
    msg: ""
}

示例代码

var scannerModule = api.require('posScanner'); 
var param = { 
    'address': '5C:B6:CC:02:C9:33' 
    }; 
    scannerModule.listenScanner(param, function (ret) { 
            if (err) {
                alert(err.msg);
                return;
            }
            //apiAlert(ret);
            if (ret.status == "offline") {
                 //扫描抢断开
            } else if (ret.status == "online") {
                //扫描枪连上
            } else if (ret && ret.data) {
                //扫描成功
            }

    });

可用性

Android系统

可提供的1.0.0及更高版本

connectScanner

连接设备绑定的扫描枪

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

params

address:

  • 类型:字符串
  • 描述:(必填项)蓝牙扫描枪地址(可通过getBluetoothScanners获取)、Usb扫描枪地址(可通过getUsbScanners获取)

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    result:'',//如果为ok,表示连接成功
    data:     ''   //字符串;扫描枪扫码获得的数据
}

err:

  • 类型:JSON对象
  • 内部字段:
{
    msg: ""
}

示例代码

var scannerModule = api.require('posScanner'); 
var param = { 
    'address': '5C:B6:CC:02:C9:33' 
    }; 
    scannerModule.connectScanner(param, function (ret, err) { 
        if(err)
            {
            alert(err.msg);
            }
        else if(ret.result == "ok"){
            alert("连接成功"); 
        }
        else if(ret.data){
            alert(JSON.stringify(ret)); 
        }

    });

可用性

Android系统

可提供的1.0.0及更高版本

disconnectScanner

和蓝牙扫描枪断开连接,不再接收扫描数据(模块将不再调用回调函数)

disconnectScanner({params})

params

address:

  • 类型:字符串
  • 描述:(必填项)扫描枪地址

示例代码

var scannerModule = api.require('posScanner'); 
var param = { 
'address': '5C:B6:CC:02:C9:33' 
}; 
scannerModule.disconnectScanner(param);

可用性

Android系统

可提供的1.0.0及更高版本

getScannerStatus

获取设备绑定的蓝牙扫描枪状态

getScannerStatus({param}, callback(ret));

params

address:

  • 类型:字符串
  • 描述:(必填项)扫描枪地址

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    connected:     'yes|no'   //字符串;yes表示已连接扫描枪,no表示未连接扫描枪
}

示例代码

var scannerModule = api.require('posScanner'); 
var param = { 
'address': '5C:B6:CC:02:C9:33' 
}; 
scannerModule.getScannerStatus(param, function (ret) { 
alert(JSON.stringify(ret.connected)); 
});

可用性

Android系统

可提供的1.0.0及更高版本