0

これを読んでくれてありがとう!

esc/pos コマンドを使用して、USB インターフェイスを介して EPSON TM-T88V レシート プリンターにバイトを送信するために Java アプリを使用しています。

ラズベリーパイで実行したときと、開発用ラップトップで実行したときの動作は異なります(これは非常に奇妙です!)

ラズベリーパイからバイトが出力されると、完了する前に停止します

コードは次のとおりです。

public void sendToPrinter(byte[] message) throws UsbException {
   UsbDevice device = getPrinterDevice(); //find the usb using usb4java

   UsbConfiguration configuration = device.getActiveUsbConfiguration();
   UsbInterface iface = configuration.getUsbInterfaces().get(0); //There was only 1

   if (!iface.isClaimed()) {
      iface.claim(usbInterface -> true);
   }

   UsbEndpoint endpoint = (UsbEndpoint) iface.getUsbEndpoints().get(0);
   UsbPipe pipe = endpoint.getUsbPipe();

   pipe.open();

   try {
      LOG.info(Arrays.toString(message));
      int sent = pipe.syncSubmit(message);
      LOG.info("Bytes Sent: " + sent);
   } finally {
      pipe.close();
   }

   iface.release();
}

私が調査したこと:

  1. 重い処理中にpiがUSBデバイスへの電力を失う可能性があることをjava8について読み、2Aを受け取るように電源をpiにアップグレードしました
  2. 開発マシンとpiからプリンターに送信されたバイトを比較してみましたが、それらは同一です(送信されたバイトと送信されたバイト数は同一です)

ラップトップから送信された esc/pos コマンドは期待どおりに機能するため、プリンターに送信したバイトに関する詳細情報を提供できます。

あなたのご親切に感謝します!

4

2 に答える 2

-1

必要なバイトを送信した後、さらに多くのバイト (1、2 千?!) をプリンターに送信してみてください。0x00またはで試してください0xFF

于 2016-01-12T19:23:24.320 に答える