posPrinter

来自于:开发者立即使用

概述

posPrinter 支持各品牌小票(热敏)打印机,可同时连接多台蓝牙、网口打印机,通过向打印机发送esc/pos指令直接打印,无需安装驱动。

posPrinter 支持多机同时打印,可自定义打印格式,打印联数,非常适用于打印收银小票、堂食/外卖订单、超市结账单等。

  • 使用蓝牙打印机:

    使用蓝牙打印机前,要把平板(或手机)和蓝牙打印机绑定。 手动绑定蓝牙打印机时,在手机或平板的蓝牙管理界面,搜索蓝牙设备,待搜索到蓝牙打印机后,进行绑定。然后调用模块的 printOnBondedPrinter 函数,把打印内容发送到绑定的打印机。

    如果知道蓝牙打印机的地址(如 98:D3:31:20:23:4A),也可以不进行绑定,直接调用 printOnSpecifiedPrinters,在参数中传入蓝牙打印机地址和打印内容。模块在打印前自动进行绑定,然后进行打印。

  • 使用网口打印机:

    使用网口打印机前,要保证网口打印机的IP地址和平板(手机)在同一个网段,即:IP地址的前三部分相同,建议将网口打印机和和平板(手机)连接到同一个路由器。然后调用 printOnSpecifiedPrinters,在参数中传入网口打印机的IP地址和打印内容,进行打印。

  • 多台打印机同时打印:

    当配置多台打印机进行打印时,调用 printOnSpecifiedPrinters 函数,传入蓝牙打印机的MAC地址或网口打印机的IP地址,以及对应的打印内容,模块根据地址格式自动判断打印机类型,并将打印内容发送至指定打印机。

  • 打印格式标签说明(标签允许嵌套):
<BR>为换行符
<CUT>为切纸符
<A></A>为放大
<B></B>为加粗
<L></L>字体2倍高度
<T></T>超大字体
<C></C>为居中
<QR></QR>按标签内的内容生成二维码并打印
<BASE64></BASE64>将标签内的base64编码还原为图片并打印
  • 字体相关表情允许混搭
如:<BA>放大加粗</BA>
  • 58mm 热敏打印机小票参考格式:
<C><A>测试打印</A></C><BR>
名称      单价  数量 金额<BR>
--------------------------------<BR>
番       1.0    1   1.0<BR>
番茄      10.0   10  10.0<BR>
番茄炒     10.0   100 100.0<BR>
番茄炒粉    100.0  100 100.0<BR>
番茄炒粉粉   1000.0 1   100.0<BR>
番茄炒粉粉粉粉 100.0  100 100.0<BR>
番茄炒粉粉粉粉 15.0   1   15.0<BR>
备注:快点送到<BR>
--------------------------------<BR>
合计:xx.0元<BR>
送货地点:xxxxxxxxxxxxxxxxx<BR>
联系电话:138000000000<BR>
订餐时间:2011-01-06 19:30:10<BR>
--------------------------------<BR>
<QR>http://www.apicloud.com/</QR><BR>
   <BR>
----------<CUT>----------<BR>
   <BR>
  • 80mm 热敏打印机小票参考格式:
<AB>桌号:22</AB><BR>
------------------------------------------------<BR>
<BL>测试餐厅名称(上菜单)</BL><BR>
************************************************<BR>
<L>订单流水号:T00000000030007(堂食)</L><BR>
------------------------------------------------<BR>
菜品名称                   单价   数量  金额<BR>
------------------------------------------------<BR>
牛肉圆葱(大)                30     1     30<BR><BR>
素三鲜(大)                  28     1     28<BR><BR>
韭菜鸡蛋(大)                28     1     28<BR><BR>
------------------------------------------------<BR>
<B>                         应收金额:86 元</B><BR>
<B>优惠方式:减5元          优惠金额:5 元</B><BR>
<B>                         实收金额:81 元</B><BR>
------------------------------------------------<BR>
就餐人数:1      备注: <BR>
------------------------------------------------<BR>
收银员:张三   结算方式:现金<BR>
 Pos机:0003     订餐时间:2016-09-12 14:36:55<BR>
************************************************<BR>
分店地址:测试餐厅地址<BR>
订餐电话:010-12345678<BR>
  <BR>
<QR>http://www.apicloud.com/</QR><BR>
---------------------<CUT>--------------------------<BR>
  <BR>
  • 打印二维码参考格式(1.1.0及以上版本支持):
<QR>http://www.apicloud.com/</QR><BR>
  • 打印base64编码图片参考格式(1.1.0及以上版本支持):
    <BR>
    <BASE64>iVBORw0KGgoAAAANSUhEUgAAACoAAAAbCAYAAAAK5R1TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2tpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ZjRmYWQ4ZC05YTdkLTQ3ZjEtOTYxMC03YjU2NDk5ZDE1MmQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjhCRTMwNTE5NzcyMTFFNjhBNTFFMjQ2NjNGNTg2RjQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjhCRTMwNTA5NzcyMTFFNjhBNTFFMjQ2NjNGNTg2RjQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Qzc0QjUyNDMzOTIyMTFFNjlEMTVCQThCOTM4Mjc5NjQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Qzc0QjUyNDQzOTIyMTFFNjlEMTVCQThCOTM4Mjc5NjQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz783Hw/AAACWklEQVR42mJgIB8wAbEXEM8E4gtA/BWI/wPxTyB+AsRbgLgEiKUZBggwAnEsED+AOowQ/g3ES4FYkZ6OFAPinUQ6EB2DQjyZHo6UB+I7ZDoSGbfT0pFCQHwDh8Ug8QYg9gRiAyC2BOIEIF4GxD9w6CmjhSNBmWYHFsveAnE0NM3iAqCMtAqL3r9AbEFthzpjseguECuRYEYVFjNOQwOBqsAbiN9DLQDRamSYMQGLY/1pkQRAIXgOiH3J1M+OpUjbREqZiA4UgDgRiN2gOZ0LLb3+o8CzILNYkfggx34C4u9A/AiI9wDxfGjpghOwAXEnEP+iQhFECf4NTSYcuBy5bYAdiI73ocUmGEwcZI6E4dnIaVQDiK8AMTOSw0Hl3EIg3grE76icKdcBsSASvxmIz0IbOElAzIKWhk2gmRij2AClEQ8a1XACWELNHkneAdr6whqqN9EkJtGwKk5EswtUgvCjqWlHU/MEJoFeHzvQyJHM0HYrsl1HsagzxxLqrExoaYIBWqbRAuQBsT6a2AIs6r5hEQO78Qma68tp4MgALOUzqIDnxKI2B03de5jEEjSJ19AaiRqAE5qr/2GJziAcra3naOrWwyRdsRjyDIjjoe1QcnoBZtA26nMc5eM0ND2g4ioKGsp4Gy476ViIrwXiw0SqPYweCpJAfI8OjuyB5v4DRKh9gisJSkOLC1o48DxasUfIoWcI9VpBVWok1KC/FDruMbQadsXSnDyAo3tyBJo3mIhpjyLnWFAo85CYmUBV4AvkYgULUEEz9xs0qr/hDMH///8zDAUAEGAAiGvKl5Gx5PgAAAAASUVORK5CYII=</BASE64>
    <BR>
    

getBluetoothPrinters

获取蓝牙打印机列表

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

params

status:

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

callback(ret, err)

ret:

  • 类型:JSON数组,其中每一个JSON对象代表一个蓝牙设备
  • 内部字段:
[
    {
        name:     ''   //字符串;蓝牙设备名称
        address:  ''    // 字符串;蓝牙设备地址
        isBonded: 'yes|no'   // 字符串; 该蓝牙设备是否已绑定  
    }
]

err:

  • 内部字段:
{
        msg:     ''   //错误信息
}

示例代码

var printModule = api.require('posPrinter');
var param = {
    'status': 'bonded'
};
printModule.getBluetoothPrinters(param, function (ret, err) {
    alert(JSON.stringify(ret));
});

补充说明

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

可用性

Android系统

可提供的1.0.0及更高版本

createBondToPrinter

绑定蓝牙打印机

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

params

address:

  • 类型:字符串
  • 描述:(必填项)蓝牙打印机 MAC 地址

pin:

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

callback(ret, err)

ret:

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

err:

  • 内部字段:
{
        msg:     ''   //错误信息
}

示例代码

var printModule = api.require('posPrinter');
var param = {
    'address': '98:D3:31:20:23:4A'
    'pin': '0000'
};
printModule.createBondToPrinter(param, function (ret, err) {
    alert(JSON.stringify(ret));

可用性

Android系统

可提供的1.0.0及更高版本

removeBondToPrinter

将指定的蓝牙打印机解除绑定

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

params

address:

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

callback(ret, err)

ret:

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

err:

  • 内部字段:
{
        msg:     ''   //错误信息
}

示例代码

var printModule = api.require('posPrinter');
var param = {
    'address': '98:D3:31:20:23:4A'
};
printModule.removeBondToPrinter(param, function (ret, err) {
    alert(JSON.stringify(ret));
});

可用性

Android系统

可提供的1.0.0及更高版本

printOnBondedPrinter

通过设备绑定的蓝牙打印机进行打印

printOnBondedPrinter({params})

params

content:

  • 类型:字符串
  • 描述:(必填项)要打印的内容,内容格式通过标签进行控制
  • 说明: 每行只能使用一个格式控制标签

copyNum:

  • 类型:数字类型
  • 描述:(可选项)重复打印次数,默认值为1

callback(ret, err)

err:

  • 内部字段:
{
        msg:     ''   //错误信息
}

示例代码

var orderInfo;
orderInfo = "<CA>测试打印</CA><BR>";
orderInfo += "名称      单价  数量 金额<BR>";
orderInfo += "--------------------------------<BR>";
orderInfo += "番       1.0    1   1.0<BR>";
orderInfo += "番茄      10.0   10  10.0<BR>";
orderInfo += "番茄炒     10.0   100 100.0<BR>";
orderInfo += "番茄炒粉    100.0  100 100.0<BR>";
orderInfo += "番茄炒粉粉   1000.0 1   100.0<BR>";
orderInfo += "番茄炒粉粉粉粉 100.0  100 100.0<BR>";
orderInfo += "番茄炒粉粉粉粉 15.0   1   15.0<BR>";
orderInfo += "备注:快点送到<BR>";
orderInfo += "--------------------------------<BR>";
orderInfo += "合计:xx.0元<BR>";
orderInfo += "送货地点:xxxxxxxxxxxxxxxxx<BR>";
orderInfo += "联系电话:138000000000<BR>";
orderInfo += "订餐时间:2011-01-06 19:30:10<BR>";
orderInfo += " <BR> <BR>";

var printModule = api.require('posPrinter');
var param = { 'content': orderInfo, 'copyNum': 2 };
printModule.printOnBondedPrinter(param);

可用性

Android系统

可提供的1.0.0及更高版本

printOnSpecifiedPrinters

将打印内容发送到指定地址的打印机(蓝牙打印机为MAC地址,网口打印机为IP地址),支持多机打印

printOnSpecifiedPrinters({params})

params

taskList:

  • 类型:JSON数组
  • 描述:(必填项)打印机、打印内容、重复打印次数组成的JSON对象数组
  • 内部字段:
[
    {
        printerAddr: '98:D3:31:20:23:4A',  //字符串;打印机地址
        content: orderInfo,     //字符串;打印内容
        copyNum: 2                 //数值类型;重复打印次数,默认值为1 
    }
]

callback(ret, err)

err:

  • 内部字段:
{
        msg:     ''   //错误信息
}

示例代码

var orderInfo;
orderInfo = "<CA>测试打印</CA><BR>";
orderInfo += "名称      单价  数量 金额<BR>";
orderInfo += "--------------------------------<BR>";
orderInfo += "番       1.0    1   1.0<BR>";
orderInfo += "番茄      10.0   10  10.0<BR>";
orderInfo += "番茄炒     10.0   100 100.0<BR>";
orderInfo += "番茄炒粉    100.0  100 100.0<BR>";
orderInfo += "番茄炒粉粉   1000.0 1   100.0<BR>";
orderInfo += "番茄炒粉粉粉粉 100.0  100 100.0<BR>";
orderInfo += "番茄炒粉粉粉粉 15.0   1   15.0<BR>";
orderInfo += "备注:快点送到<BR>";
orderInfo += "--------------------------------<BR>";
orderInfo += "合计:xx.0元<BR>";
orderInfo += "送货地点:xxxxxxxxxxxxxxxxx<BR>";
orderInfo += "联系电话:138000000000<BR>";
orderInfo += "订餐时间:2011-01-06 19:30:10<BR>";
orderInfo += " <BR> <BR>";

var printModule = api.require('posPrinter');
var param = 
{ 
    taskList: 
    [
        { 
            printerAddr: '98:D3:31:20:23:4A', 
            content: orderInfo, 
            copyNum: 2 
        },
        { 
            printerAddr: '192.168.1.10', 
            content: orderInfo, 
            copyNum: 2 
        }
    ] 
};
printModule.printOnSpecifiedPrinters(param);

可用性

Android系统

可提供的1.0.0及更高版本

sendEscCommandToPrinter

向指定打印机发送 ESC/POS 指令(不了解ESC/POS指令慎用)

sendEscCommandToPrinter({params})

params

printerAddr:

  • 类型:字符串
  • 描述:(必填项)蓝牙打印机地址(可通过getBluetoothPrinters获取)、IP打印机地址、USB打印机地址(可通过getUsbPrinters获取)

decCmd:

  • 类型:JSON数组
  • 描述:(必填项)以十进制数字组成的 ESC/POS 指令数组
  • 示例: 传入 [27, 112, 0, 60, 255] 表示打开钱箱指令,传入[29, 86, 66, 0] 表示切纸命令

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    result:     'ok'   //字符串;ok表示调用成功
}

err:

  • 类型:JSON对象
  • 内部字段:

        {
            msg:''       //错误信息描述
        }

示例代码

var printModule = api.require('posPrinter');
var param = {
    'printerAddr': '98:D3:31:20:23:4A',
    'decCmd': [27, 112, 0, 60, 255]    // 向打印机发送打开钱箱指令
};
printModule.sendEscCommandToPrinter(param);

可用性

iOS系统,Android系统

可提供的1.1.0及更高版本

getPrinterStatus

获取打印机状态

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

params

printerAddr:

  • 类型:字符串
  • 描述:(必填项)打印机Mac地址或IP地址

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    online :  'yes|no',    // 字符串;打印机联机状态,yes表示在线,no表示离线
    paper : 'yes|no',   // 字符串; 打印机纸张状态,yes表示有纸,no表示缺纸
    cashboxOpen :     'yes|no'   //字符串;打印机连接的钱箱是否打开,yes表示开启,no表示关闭
}

err:

  • 内部字段:
{
        msg:     ''   //错误信息
}

示例代码

var printModule = api.require('posPrinter');
var param = { printerAddr: '192.168.3.243' };
printModule.getPrinterStatus(param , function(ret , err)
{
    alert("是否联机:" + ret.online + ", 有打印纸:" + ret.paper + ", 钱箱开启:" + ret.cashboxOpen);
});

可用性

Android系统

可提供的1.1.0及更高版本