Я отправляю данные на Android 9 SB C через rawhid на teensy2 ++.
Мне удалось установить двухстороннюю связь, однако получение обновления происходит очень медленно, примерно каждые половину секунда.
Вот соответствующий код, с которым я работаю до сих пор.
Я открываю устройство с помощью:
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);
}
}
};
Кто-нибудь видел это раньше или есть идеи о том, как ускорить общение? Если я подключаю устройство для подростков к windows и запускаю SimpleHidWrite, я получаю ожидаемую частоту обновления, поэтому я считаю, что устройство работает правильно.
Спасибо за любую помощь по этому