需要拔出/插入才能通过USB端口访问ChromeApp

时间:2019-08-16 18:35:59

标签: linux usb google-chrome-app thermal-printer

我想做一个Chrome应用来接收打印请求。此应用程序需要通过USB连接到打印机,但是在重新启动PC时需要拔出/插入打印机才能访问它,为什么我需要拔出/插入打印机?

我正在Linux上工作,但我也在Windows上进行过尝试,甚至都没有出现。 (在三台不同的计算机上)

重新启动后,出现以下错误:

未选中的runtime.lastError:无法打开设备。

如果我拔掉插头就可以了。

我删除了一些检查以使其更具可读性

 

    function printDataToDevice(data, device) {
      chrome.usb.openDevice(device, function(handle) {
        printDataToHandle(data, device, handle) 
      });
    }

    function printDataToHandle(data, device, handle) {
      chrome.usb.claimInterface(handle, 0, function() {
        printDataToInterface(data, device, handle);
      });
    }

    function printDataToInterface(data, device, handle) {
      if(!handle)
        return;
      var info = {
        "direction": "out",
        "endpoint": 1,
        "data": data
      };
      chrome.usb.bulkTransfer(handle, info, function(transferResult) {
        chrome.usb.releaseInterface(handle, 0, function() {
          if (chrome.runtime.lastError)
            console.error(chrome.runtime.lastError);
          return;
        });
      });
    }
     
In the app manisfest:
<pre> <code>
"permissions": ["usb","storage", {
      "usbDevices": [
        {
          "vendorId": 1046,
          "productId": 20497
        }
      ]
    }],

1 个答案:

答案 0 :(得分:0)

通常在这种情况下,在尝试再次打开USB设备之前,没有正确清除以前使用USB设备的尝试。我会调试一下,以确保打印完成并在您期望的时候调用releaseInterface。

拔下设备插头会强制释放设备。