gpt4 book ai didi

java - Android USB批量传输Teensy2++更新缓慢

转载 作者:行者123 更新时间:2023-12-01 19:01:28 26 4
gpt4 key购买 nike

我正在通过 teensy2++ 上的 rawhid 将数据发送到 Android 9 SBC。

我已经成功实现了双向通信,但是接收更新非常慢,大约每半秒一次。

这是我迄今为止正在工作的相关代码。

我打开设备:

 public void openUsb(View view){
if(connected == true){
HashMap<String , UsbDevice> deviceList = mManager.getDeviceList();
Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();

while (deviceIterator.hasNext()) {
UsbDevice tempDevice = deviceIterator.next();
if ((Integer.toHexString(tempDevice.getVendorId()).equalsIgnoreCase(Vid)) && (Integer.toHexString(tempDevice.getProductId()).equalsIgnoreCase(Pid))) {

{
mDevice = tempDevice;

mUsbInterface = mDevice.getInterface(0);
mEndpointWrite = mUsbInterface.getEndpoint(1);
mEndpointRead = mUsbInterface.getEndpoint(0);

connection = mManager.openDevice(mDevice);

boolean claim = connection.claimInterface(mUsbInterface, true);

if (claim == true) {
writeToStatus("USB Connection Claimed");
}
else{
writeToStatus("USB Connection Claim failed");
}
}
}
}
}
else{
writeToStatus("Check USB Connection");
}
}

我可以使用以下方式写入设备:

    public void writeStart(View view) {

if(connected == true) {

final int BUF_LEN = 2;

byte buf[] = new byte[BUF_LEN];
buf[0] =1;
buf[1] =5;

int res = connection.bulkTransfer(mEndpointWrite, buf, buf.length, 1000);
writeToStatus(String.valueOf(res));
}
else{
writeToStatus("Check USB Connection");
}
}

读取是在它自己的可运行线程中完成的

    public void readUsb(View view) {
handler.postDelayed(runnable, 1);
}

private Runnable runnable = new Runnable() {
@Override
public void run() {
if(connected == true) {

String strYaw ;
String strPitch ;
String strRoll ;

byte[] recordIn = new byte[16];
int receivedLength = connection.bulkTransfer(mEndpointRead, recordIn, recordIn.length, 10);
if (receivedLength > -1) {

byte[] tempYaw = new byte[4];
byte[] tempPitch = new byte[4];
byte[] tempRoll = new byte[4];

tempYaw[0] = recordIn[3];
tempYaw[1] = recordIn[2];
tempYaw[2] = recordIn[1];
tempYaw[3] = recordIn[0];

float Yaw = bytearray2float(tempYaw);

strYaw = "Y:" + Yaw;

Message msg = handler.obtainMessage();
Bundle bundle = new Bundle();
bundle.putString("yaw", strYaw );
msg.setData(bundle);
handler.sendMessage(msg);
}

handler.postDelayed(this, 10);
}
}
};

有人以前见过这个或者对如何加快通信有任何想法吗?如果我将这个 teensy 设备连接到 Windows 并运行 SimpleHidWrite,我会得到预期的更新率,因此我相信该设备工作正常。

感谢您对此的任何帮助

最佳答案

通过删除青少年代码中所有对 Serial 的使用,该问题已得到解决,

我将 Hid 写入复制到串行写入以进行调试,因为我没有读取 Android 中的串行端点,我猜它是在超时或其他情况下暂停的?

关于java - Android USB批量传输Teensy2++更新缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59632305/

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