Androidとコントローラーの間で通信を試みています。さまざまな方法を見てきましたが、それぞれの方法がなぜなのかわかりません。Android からコントローラーにメッセージを 32 バイトで送信したいと考えています。私はこのコードを持っています:
private void sendData(){
int baudRate = 115200;
byte stopBitsByte = 1;
byte parityBitesByte = 0;
byte dataBits = 32;
byte[] msg = {
(byte) (baudRate & 0xff),
(byte) ((baudRate >> 8) & 0xff),
(byte) ((baudRate >> 16) & 0xff),
(byte) ((baudRate >> 24) & 0xff),
stopBitsByte,
parityBitesByte,
(byte) dataBits
};
deviceConnection.controlTransfer(UsbConstants.USB_TYPE_CLASS | 0x01, 0x20, 0, 0, msg, msg.length,5000);
deviceConnection.controlTransfer(UsbConstants.USB_TYPE_CLASS | 0x01, 0x22, 0x1, 0, null, 0, 0);
}
私が非常にはっきりしているもう 1 つのことは、メッセージがコントローラーから Android にどのように受信されるかです。このために、私はこのコードを持っています:
private void receiveData(){
int bufferMaxLength=epIN.getMaxPacketSize();
ByteBuffer mBuffer = ByteBuffer.allocate(bufferMaxLength);
UsbRequest inRequest = new UsbRequest();
inRequest.initialize(deviceConnection, epIN);
while(inRequest.queue(mBuffer, bufferMaxLength) == true) {
deviceConnection.requestWait();
}
}
PS: UsbDevice、UsbManager、USBInterface、UsbEndpoint、UsbDeviceConnection、UsbRequest、または UsbConstants を初めて使用します。
PS2: コードは、Android Arduino との間でメッセージを送受信するために提供されます。