我想使用USB连接,如下面的蓝牙连接代码:
public void run() {
byte[] buffer; // buffer store for the stream 1024
int bytes=0; // bytes returned from read()
while (true){
buffer = new byte[1];
try {
for (int i=0; i<responseLength;i++) {
bytes = mmInStream.read(buffer);
result[i] = buffer[0];
}
mHandler.obtainMessage(MainActivity.READ, bytes, -1, result)
.sendToTarget();
mHandler.sendEmptyMessage(0);
while (mmInStream.available()>0){
mmInStream.read(buffer);
}
} catch (IOException e) {
e.printStackTrace();
break;
}
}
}
这段BT的代码读取 responseLength 时间为1个字节,因为每次我确切知道,我得到的消息将持续多长时间。
我曾尝试为USB连接编写这样的代码,但我的问题是,虽然蓝牙就像一个管道,所以发送了什么,我可以逐字节读取,以防USB连接我避风港能够逐字节读取,因为消息消失了,我不得不在更大的部分阅读它。
所以这是我目前的USB通信代码:
static byte[] readBytes = new byte[4096];
...
r = new Runnable() {
@Override
public void run() {
reading=true;
synchronized (this) {
while (reading) {
try {
Thread.sleep(400);
} catch (InterruptedException e) {
e.printStackTrace();
}
Arrays.fill(readBytes, (byte) 0);
if (mUsbManager!=null && mUsbManager.hasPermission(device)){
recvBytes = connection.bulkTransfer(epIn, readBytes, readBytes.length, 0);
if (recvBytes != 2) {
readString = new String(readBytes);
readString = readString.replace("\u0001`","");
readString = readString.replace("\u0000","");
if (!readString.equals("")){
Message message = handler2.obtainMessage();
message.obj = readString;
handler2.sendMessage(message);
}
}
}
}
}
}
};
thread = new Thread(r);
thread.start();
你能帮助我吗,如何编写USB读取代码,就像蓝牙通信中的队列或管道一样?
修改
我尝试过其他代码:
while (true){
readBytes = new byte[1];
for (int i=0; i<responseLength;i++) {
recvBytes = connection.bulkTransfer(epIn, readBytes, readBytes.length, 100);
Log.e("bbb", "!" + (new String(readBytes)) + "!" + recvBytes + " " + i);
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
并且Log给了我无限的东西:
02-10 13:24:42.210 14602-14755/? E/bbb: !����������������������������!-1 0
02-10 13:24:42.261 14602-14755/? E/bbb: !����������������������������!-1 1
02-10 13:24:42.312 14602-14755/? E/bbb: !����������������������������!-1 2
02-10 13:24:42.362 14602-14755/? E/bbb: !����������������������������!-1 3
02-10 13:24:42.412 14602-14755/? E/bbb: !����������������������������!-1 4
02-10 13:24:42.463 14602-14755/? E/bbb: !����������������������������!-1 5
02-10 13:24:42.513 14602-14755/? E/bbb: !����������������������������!-1 6
02-10 13:24:42.564 14602-14755/? E/bbb: !����������������������������!-1 7
02-10 13:24:42.614 14602-14755/? E/bbb: !����������������������������!-1 8
02-10 13:24:42.665 14602-14755/? E/bbb: !����������������������������!-1 9
02-10 13:24:42.716 14602-14755/? E/bbb: !����������������������������!-1 10
02-10 13:24:42.766 14602-14755/? E/bbb: !����������������������������!-1 11
02-10 13:24:42.817 14602-14755/? E/bbb: !����������������������������!-1 12
02-10 13:24:42.867 14602-14755/? E/bbb: !����������������������������!-1 13