离子蓝牙打印POS命令不起作用

时间:2017-02-06 07:42:57

标签: android cordova ionic-framework printing bluetooth

我正在使用这个离子应用程序,我正在使用此库使用蓝牙热敏打印机打印收据。

https://github.com/srehanuddin/Cordova-Plugin-Bluetooth-Printer

我想在打印后剪纸,因为我的打印机具有此功能。

BTPrinter.printPOSCommand(function(data){
    console.log("Success");
    console.log(data)
},function(err){
    console.log("Error");
    console.log(err)
}, "1D")

我尝试过0x1d和“0x1d v 1”,但它不起作用。

1 个答案:

答案 0 :(得分:1)

您是如何尝试发送该命令的?尝试:

BTPrinter.printPOSCommand(function(data){
    console.log("Success");
    console.log(data)
},function(err){
    console.log("Error");
    console.log(err)
}, "0x1d")

如果这不起作用,您可以尝试编辑插件本身以添加方法,但这有点复杂。

在pluginfolder / src / android的Bluetoothprint.java文件中尝试以下操作:

采用以下方法:

 boolean printPOSCommand(CallbackContext callbackContext, byte[] buffer)     throws IOException {
        try {
        //mmOutputStream.write(("Inam").getBytes());
        //mmOutputStream.write((((char)0x0A) + "10 Rehan").getBytes());
        mmOutputStream.write(buffer);
        //mmOutputStream.write(0x0A);

        // tell the user data were sent
        Log.d(LOG_TAG, "Data Sent");
        callbackContext.success("Data Sent");
        return true;
    } catch (Exception e) {
        String errMsg = e.getMessage();
        Log.e(LOG_TAG, errMsg);
        e.printStackTrace();
        callbackContext.error(errMsg);
    }
    return false;
}

将方法属性byte []缓冲区更改为字符串缓冲区 并改变行

 mmOutputStream.write(buffer);

为:

mmOutputStream.write(buffer.getBytes());

另外,只是为了确保您的打印机支持您可以尝试直接放置的方法:

mmOutputStream.write(0x1d);

只是为了测试它是否有效。

编辑:

尝试这个byteArray我发现:

public static byte[] FEED_PAPER_AND_CUT = {0x1D, 0x56, 66, 0x00};
BTPrinter.printPOSCommand(function(data){
    console.log("Success");
    console.log(data)
},function(err){
    console.log("Error");
    console.log(err)
}, FEED_PAPER_AND_CUT)