Java UsbDeviceConnection无法正常工作
我需要一个帮助来了解UsbDeviceConnection bulktransfer是如何工作的。例如,我不明白超时有什么好处?我将其更改为不同的值,但在接收到的数据中看不到任何差异 这里我有一个小的测试代码:Java UsbDeviceConnection无法正常工作,java,android,connection,usb,Java,Android,Connection,Usb,我需要一个帮助来了解UsbDeviceConnection bulktransfer是如何工作的。例如,我不明白超时有什么好处?我将其更改为不同的值,但在接收到的数据中看不到任何差异 这里我有一个小的测试代码: public static void read2(){ r = new Runnable() { @Override public void run() { synchronized (this) {
public static void read2(){
r = new Runnable() {
@Override
public void run() {
synchronized (this) {
final int SIZE = 4096;
send("M?");
while (true) {
if (mUsbManager.hasPermission(device)){
byte[] buffer = new byte[SIZE];
StringBuilder str = new StringBuilder();
if (connection.bulkTransfer(epIn, buffer, SIZE, 0) >= 0) {
for (int i = 2; i < SIZE; i++) {
if (buffer[i] != 0) {
str.append((char) buffer[i]);
} else {
Log.e("Database", "M=" + str.toString());
break;
}
}
Log.e("Database", "M=" + str.toString());
}
}
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
};
thread = new Thread(r);
thread.start();
}
public static void send(String command){
String fullCommand = "@" + command + "\r\n"; /*+ "\r\n"*/
bytes = fullCommand.getBytes();
while (connection==null){
continue;
}
connection.bulkTransfer(epOut, bytes, bytes.length, 100); //0
}
publicstaticvoidread2(){
r=新的可运行(){
@凌驾
公开募捐{
已同步(此){
最终整数大小=4096;
发送(“M?”);
while(true){
if(mUsbManager.hasPermission(设备)){
字节[]缓冲区=新字节[大小];
StringBuilder str=新的StringBuilder();
if(connection.bulkTransfer(epIn,buffer,SIZE,0)>=0){
对于(int i=2;i
在这里,我尝试向USB设备发送一个命令,然后它向我发回一个字符串。这个字符串应该是25个字符长,但是我得到的结果是不同的,有时是2个字符,有时是5个字符,但是我没有得到整个字符串
我试图更改缓冲区大小、超时时间、Thread.sleep()等待时间,但没有解决我的问题
有谁能帮助我理解这整件事是如何工作的,问题出在哪里,我应该如何设置这些变量来获得一个有效的代码 批量传输中的数据大小受设备限制。通过调用方法
Endpoint.getMaxPacketSize()
获得正确的值。您必须将数据拆分为具有此最大大小的片段,并按顺序发送 批量传输中的数据大小受设备限制。通过调用方法Endpoint.getMaxPacketSize()
获得正确的值。您必须将数据拆分为具有此最大大小的片段,并按顺序发送 谢谢你的提示-但是。。。每个命令发送的数据比64字节要少,64字节是提示的最大包大小,但是。。。我每个命令发送的数据比64字节的最大包大小要少