Android - 从移动打印机上的应用程序进行打印

问题描述 投票:0回答:3

我有一个应用程序,可以使用Rongta RRP-200移动打印机打印一些文本,通过蓝牙与我的手机连接。

为此,我使用这个插件:https://github.com/srehanuddin/Cordova-Plugin-Bluetooth-Printer

我可以将我的设备连接到打印机,甚至可以从我的应用程序运行打印功能,这会返回一条消息,通知我数据已发送。但是,打印机不执行任何操作(除了指示灯亮起之外)。

这是尝试打印我的文本的功能(来自插件):

boolean printText(CallbackContext callbackContext, String msg) throws IOException {
    try {
        mmOutputStream.write(msg.getBytes());

        // 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;
}

这里可能出什么问题?

android cordova mobile printing bluetooth
3个回答
0
投票

发现插件工作正常,但是你必须给打印机完整的一行才能让它打印一些东西。因此,请在字符串末尾添加

\n
。这是打印某些内容的功能,以防有人需要它(在 Ionic 应用程序控制器中):

$scope.print = function(text) {
    BTPrinter.connect(function(data){
        BTPrinter.printText(function(data){
            BTPrinter.disconnect(function(){},function(err){
                console.log("Error");
                console.log(err)
            }, "Your Printer device")
        }, function(err){
            console.log("Error");
            console.log(err)
        }, text + "\n")
    }, function(err){
            console.log("Error");
            console.log(err)
    }, "Your Printer device");
}

0
投票

我有同样的打印机并编写了一个小插件,它对我来说非常棒。我在RPP200和RPP300上测试过。

https://github.com/CXRom/cordova-plugin-rpp

Rpp.Connect("00:0E:0E:0B:7B:93", // <-- MAC Address of the printer
  function(print) {
    //At this point we send the action but we need to wait until the connection
    console.log(`connect ok ${JSON.stringify(print)}`);
  },
  function (err){
    console.log(`connect err ${JSON.stringify(err)}`);
  });

//Ask is device is connected
Rpp.IsConnected(function(conn) {
  //Send to print
  Rpp.Print({
    marginTop: 10, //Margin before print
    marginBottom: 10, //Margin after print
    lineSpacing: 50, //Size of line
    lines: [ //Lines to print
      { text: "Title", align: 1, bold: true, underline: true, size: 17 }, //long name properties
      { text: "Subtitle", a: 1, b: true, u: true, s: 17 }, //short name properties
      { text: "normal line" },
      { text: ":)", h: true }
    ]
  }, function(res) {
    console.log(`print ok ${JSON.stringify(res)}`);
  }, function(err){
    console.log(`print err ${JSON.stringify(err)}`);
  });
}, function(err) {

});

0
投票

不确定这是否仍然有必要,但请尝试 TruewindIT 的 Cordova-Bluetooth-Printer-Plugin

{
    "version": "1.0.0",
    "name": "Cordova-Bluetooth-Printer-Plugin",
    "cordova_name": "Cordova Bluetooth Printer Plugin",
    "license": "MIT License",
    "author": "Truewind IT",
    "platforms": [ "android"],
    "repository": {
        "type": "git",
        "url": "git+https://github.com/TruewindIT/Cordova-Bluetooth-Printer-Plugin.git"
    }
}

$("#console")
只是一个用于在我的 Android 应用程序中打印状态的文本区域标记

$("#deviceList")
是一个 ul 标签,其中包含已连接设备的列表

列出已连接的设备:

BTPrinter.list(function(success){
        $("#console").append("Success");
        $("#console").append("::"+JSON.stringify(success, null, 2)+"::");
        success.forEach((e) => {
                $("#deviceList").append(`<li value="${e}">${e}</li>`)
            });
      },function(err){
        $("#console").append("Error\n");
        $("#console").append(JSON.stringify(err, null, 2))
      })

连接并打印

注意:

BTPrinter.print()
是正确的方法,而不是基于
BTPrinter.printText()
BluetoothPrinter.java

$('#deviceList').on('click', 'li', function () {
      var deviceId = $(this).val();
      var deviceName = $(this).text();

      BTPrinter.connect(function(data){
        $("#console").append("Connect Success\n");
        $("#console").append(JSON.stringify(data, null, 2)+"\n")
        
          BTPrinter.print(function(data){
            $("#console").append("Printing Success:\n");
            $("#console").append(JSON.stringify(data, null, 2)+"\n");

              BTPrinter.disconnect(function(){
                
               $("#console").append("Disconnect Success:\n");
              },function(err){
                $("#console").append("Disconnect Error");
            }, deviceName)

          },function(err){
              $("#console").append("Failed in Printing:\n")
              $("#console").append(JSON.stringify(err, null, 2)+"\n")
          }, "Hello world text.\n\n\n\n")

      },function(err){
        $("#console").append("Connect Error\n");
        $("#console").append(JSON.stringify(err, null, 2)+"\n")
      }, deviceName)
      // Attempt to connect to the selected device
  });

cordova-bluetooth-printer-plugin/src/android/BluetoothPrinter.java
121 号线

else if( action.equals("print") ) 
        {
            try 
            {
                String msg = args.getString(0);
                print(callbackContext, msg);
            } 
            catch( IOException e ) 
            {
                Log.e(LOG_TAG, e.getMessage());
                e.printStackTrace();
            }

            return true;
        }
© www.soinside.com 2019 - 2024. All rights reserved.