如何在Android上从USB写入和读取数据?

时间:2019-06-28 20:20:29

标签: java android usb

我需要使用USB端口将设备连接到我的Android智能手机,这样手机才能从该设备读取一些数据并在Android应用程序的屏幕上打印。

我已经阅读了一堆有关如何做的材料,但似乎都无法正常工作。我只知道我需要向设备发送一些信息,以便它可以向我发送回一些响应。

我已经使它可以完美地从我的计算机上直接从COM端口读取,现在如何在Android上做到这一点? Android的文档根本没有帮助我,也没有找到谷歌搜索的某些库。

我尝试过的示例:https://github.com/felHR85/UsbSerial

public class MainActivity extends AppCompatActivity {

    UsbDevice device;
    UsbDeviceConnection usbConnection;
    private TextView data;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        data = findViewById(R.id.data);

        UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
        manager.openDevice(device);

        UsbSerialDevice serial = UsbSerialDevice.createUsbSerialDevice(manager.getDeviceList().get(0), usbConnection);

        serial.open();
        serial.setBaudRate(57600);
        serial.setDataBits(UsbSerialInterface.DATA_BITS_8);
        serial.setStopBits(1);
        serial.setParity(UsbSerialInterface.PARITY_NONE);
        serial.setFlowControl(UsbSerialInterface.FLOW_CONTROL_OFF);
        byte[] raw = new byte[]{(byte) 0xA5, (byte) 0x10, (byte) 0x02, (byte) 0x1A, (byte) 0x00};
        serial.write(raw);
        serial.read(mCallback);
        serial.close();
    }

    private UsbSerialInterface.UsbReadCallback mCallback = new UsbSerialInterface.UsbReadCallback() {

        @Override
        public void onReceivedData(byte[] arg0)
        {
            data.setText(arg0[0]);
        }

    };
}

但是它准时崩溃了,我真的不认为它甚至快要工作了!

1 个答案:

答案 0 :(得分:0)

有完整的文档,可使用USB主机或附件模式与USB设备(http://developer.android.com/guide/topics/connectivity/usb/index.html)进行通信;如果您希望以HOST模式与设备进行通信,则可以使用下面的链接。 (http://developer.android.com/guide/topics/connectivity/usb/host.html)。