Как подключить и использовать последовательный порт? - PullRequest
0 голосов
/ 18 июня 2019

У меня проблема с подключением от UsbDeviceConnection.Я не могу использовать serialPort.open?Когда я удаляю UsbEndpoint и UsbInterface, connection.claimInterface и bulkTransfer, которые я получаю в своем приложении, не может открыть порт без приложения для сбоя

Но если я использую здесь код, я получаю: E / UsbManager: исключение в UsbManager.openDevicejava.lang.SecurityException: пользователь не дал разрешения на устройство UsbDevice ...

BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();

//            UsbDevice device = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
//            UsbDeviceConnection connection = usbManager.openDevice(device);
//            handleIntent(getIntent());

            if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) {
                UsbDevice device = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
                UsbDeviceConnection connection = usbManager.openDevice(device);
                UsbInterface intf = device.getInterface(0);
                UsbEndpoint endpoint = intf.getEndpoint(0);
                connection.claimInterface(intf, true);
                connection.bulkTransfer(endpoint, "test".getBytes(), "test".length(), 0);

                if(device != null) {
//                printSomething();
                    UsbSerialDevice serialPort = UsbSerialDevice.createUsbSerialDevice(device, connection);

                    boolean granted = intent.getExtras().getBoolean(UsbManager.EXTRA_PERMISSION_GRANTED);
                    if(granted) {
                        serialPort.open();
                        showCommand.setText("serial port " + serialPort.syncOpen());
                    }
                    else{
                        showCommand.setText("Can't open port" + endpoint.getType());
                    }
                }
                else{
//                    showCommand.setText("Test");
                    printSomething();
                }
            }


        }
    };

...