gpt4 book ai didi

android - 通过 USB 从 Arduino 接收数据到 Android 设备

转载 作者:太空狗 更新时间:2023-10-29 15:03:02 24 4
gpt4 key购买 nike

我正在尝试从 Arduino 接收数据到我的 Android 设备。我从here开始在应用程序的 Activity 部分,他们做了

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
if(fromUser){
if(sUsbController != null){
sUsbController.send((byte)(progress&0xFF));
}
}
}

在发送函数中

public void send(byte data) {
mData = data;
synchronized (sSendLock) {
sSendLock.notify();
}
}

在 UsbRunnable 部分

private class UsbRunnable implements Runnable {
private final UsbDevice mDevice;

UsbRunnable(UsbDevice dev) {
mDevice = dev;
}

@Override
public void run() {//here the main USB functionality is implemented
UsbDeviceConnection conn = mUsbManager.openDevice(mDevice);
if (!conn.claimInterface(mDevice.getInterface(1), true)) {
return;
}
// Arduino Serial usb Conv
conn.controlTransfer(0x21, 34, 0, 0, null, 0, 0);
conn.controlTransfer(0x21, 32, 0, 0, new byte[] { (byte) 0x80,
0x25, 0x00, 0x00, 0x00, 0x00, 0x08 }, 7, 0);
...
...

conn.bulkTransfer(epOUT, new byte[] { mData }, 1, 0);

因此,App 获取了搜索栏的进度并将其发送给 Arduino。但是,我希望我的应用程序从 Arduino 接收数据。我想我也需要使用 bulktransfer 函数。认为我想将数据保存到 mData 变量。我该怎么做?

最佳答案

使用 bulkTransfer 方法是可行的方法。您将需要使用 IN 端点来接收数据。例如,要从 Arduino 获取一个字节的数据,请使用:

byte[] reply = new byte[1]; // to store data from Arduino
int size = 1; // receive at most 1 byte of data
int timeout = 100; // try to receive data for up to 100 milliseconds
int count = conn.bulkTransfer(epIN, reply, size, timeout);

if(count < 0) {
Log.d("ArduinoUSB", "Failure occurred when receiving from Arduino");
} else {
Log.d("ArduinoUSB", "Received " + count + " bytes: " + Arrays.toString(reply));
}

数据将存储在reply中。

关于android - 通过 USB 从 Arduino 接收数据到 Android 设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24651357/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com