NullPointerException при использовании Star Printer SDK - PullRequest
0 голосов
/ 15 февраля 2019

Я получаю следующую ошибку после задания печати, выполненного на принтере Star TSP100III.

#0. Crashed: Thread-58
       at com.starmicronics.stario.e.readPort(Unknown Source)
       at com.starmicronics.stario.e.retreiveStatus(Unknown Source)
       at com.starmicronics.starioextension.StarIoExtManager$g.run(SourceFile:875)

--

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.hardware.usb.UsbDeviceConnection.bulkTransfer(android.hardware.usb.UsbEndpoint, byte[], int, int)' on a null object reference
       at com.starmicronics.stario.e.readPort(Unknown Source)
       at com.starmicronics.stario.e.retreiveStatus(Unknown Source)
       at com.starmicronics.starioextension.StarIoExtManager$g.run(SourceFile:875)

#0. Crashed: Thread-58
       at com.starmicronics.stario.e.readPort(Unknown Source)
       at com.starmicronics.stario.e.retreiveStatus(Unknown Source)
       at com.starmicronics.starioextension.StarIoExtManager$g.run(SourceFile:875)

#1. FinalizerWatchdogDaemon
       at java.lang.Object.wait(Object.java)
       at java.lang.Daemons$FinalizerWatchdogDaemon.sleepUntilNeeded(Daemons.java:269)
       at java.lang.Daemons$FinalizerWatchdogDaemon.run(Daemons.java:249)
       at java.lang.Thread.run(Thread.java:761)

#2. ReferenceQueueDaemon
       at java.lang.Object.wait(Object.java)
       at java.lang.Daemons$ReferenceQueueDaemon.run(Daemons.java:150)
       at java.lang.Thread.run(Thread.java:761)

#3. pool-42-thread-1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2127)
       at sun.misc.Unsafe.park(Unsafe.java:325)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:161)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2035)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1091)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1084)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1058)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1118)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
       at java.lang.Thread.run(Thread.java:761)

#4. pool-47-thread-1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2127)
       at sun.misc.Unsafe.park(Unsafe.java:325)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:161)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2035)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1091)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1084)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1058)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1118)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
       at java.lang.Thread.run(Thread.java:761)

#5. pool-9-thread-1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2127)
       at sun.misc.Unsafe.park(Unsafe.java:325)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:161)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2035)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1091)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1084)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1058)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1118)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
       at java.lang.Thread.run(Thread.java:761)

#6. pool-11-thread-1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2127)
       at sun.misc.Unsafe.park(Unsafe.java:325)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:161)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2035)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1091)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1084)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1058)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1118)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
       at java.lang.Thread.run(Thread.java:761)

Но трассировка стека исключений не указывает ни на одно место, где произошел сбой из моего кода.

protected Void doInBackground(String... params) {
        StarIOPort port = null;
        try {
            // Port open
            port = starIoExtManager.getPort();
            // Print end monitoring -Start
            status = port.beginCheckedBlock();
            //printer is online
            byte[] command = PrinterFunctions.createRasterData(selectedStarReceiptPrinter.getEmulation(), bitmapToPrint, selectedStarReceiptPrinter.getPaperWidth(), true);
            port.writePort(command, 0, command.length);
            bitmapToPrint.recycle();
            // Print end monitoring -Endt
            status = port.endCheckedBlock();

        } catch (StarIOPortException e) {
            // Error
            starPrinterException = e;
            Log.i(TAG, ">>>>>>>>>>>>>>>>> PRINTER ERROR: 2 - BitmapPrintAsyncTask | StarIOPortException");
        } catch (Exception e) {
            e.printStackTrace();
            Log.i(TAG, ">>>>>>>>>>>>>>>>> PRINTER ERROR: 2 - BitmapPrintAsyncTask | Exception");
        }finally {
            try {
                // Port close
                StarIOPort.releasePort(port);

            } catch (StarIOPortException e) {
            }
        }
        return null;
    }

Это пример кода, в котором используется функция печати.Я использую StarIoExtManager для обработки состояний принтера.

Как найти основную причину в подобном случае?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...