无法连接到设备:NullPointerException通过USB从android连接到Zebra打印机吗?

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

试图使用新的UsbConnection()通过USB从Android应用程序连接到型号为ZDesigner GK420t的Zebra打印机,其中分配给USBConnection()构造函数的参数如下:

            UsbManager manager = (UsbManager) mContext.getSystemService(Context.USB_SERVICE);
        HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
        String DeviceName = "";
        for (String s : deviceList.keySet()) {
            DeviceName = s;
            break;
        }
        UsbDevice device = deviceList.get(DeviceName);
        connection = new UsbConnection(manager, device);
        connection.open();

但是,connection.Open()导致以下异常:异常消息:无法连接到设备:NullPointerException异常类:com.zebra.sdk.comm.ConnectionException原因:java.lang.NullPointerException

到目前为止,我尝试确保分配给UsbManager和UsbDevice的参数不会被处理到UsbConnection()上,因为Nulls在connection.Open()之前追加Toasts,如下所示,其中Toasts分别打印为“ manager” ,“设备”:

            Toast.makeText(mContext, manager == null ? "null manager" : "manager", Toast.LENGTH_LONG).show();
        Toast.makeText(mContext, device == null ? "null device" : "device", Toast.LENGTH_LONG).show();

还通过在Toast打印的连接处附加如下Toast,然后在connection.Open()之前确保实例化的连接不为空:

[Toast.makeText(mContext,connection == null?“ null connection ==”:“ connection”,Toast.LENGTH_LONG).show();

无法确定是什么原因导致NullPointerException

请告知,预先感谢,

android printing usb zpl zebra
1个回答
0
投票
可能有多个USB设备同时可用。如此摘要...

for (String s : deviceList.keySet()) { DeviceName = s; //first device name could be "hp_keyboard" break; //your device could be at second position }

我建议您首先验证设备名称,例如...

for (String s : deviceList.keySet()) { if (s.equals("/dev/bus/usb/001/002")) { DeviceName = s; break; } } if (!TextUtils.isEmpty(DeviceName)) { UsbDevice device = deviceList.get(DeviceName); connection = new UsbConnection(manager, device); connection.open(); }

注意:使用后请不要忘记close()

© www.soinside.com 2019 - 2024. All rights reserved.