我正在尝试使用Mike Wakelly的android USB串行库通过USB串行与Arduino巨型克隆进行通信(谢谢!)我已经找出了权限错误,但现在我遇到了以下问题:
09-02 15:08:03.628 18694-18792/org.drivebuv.buvmonitor W/SerialInputOutputManager﹕ Run ending due to exception: Error queueing request.
java.io.IOException: Error queueing request.
at org.drivebuv.buvmonitor.CdcAcmSerialDriver$CdcAcmSerialPort.read(CdcAcmSerialDriver.java:168)
at org.drivebuv.buvmonitor.SerialInputOutputManager.step(SerialInputOutputManager.java:158)
at org.drivebuv.buvmonitor.SerialInputOutputManager.run(SerialInputOutputManager.java:140)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
方法如下。抛出错误的行是带有的if循环!要求队列(基本单位,目标长度)
public int read(byte[] dest, int timeoutMillis) throws IOException {
if (mEnableAsyncReads) {
final UsbRequest request = new UsbRequest();
try {
request.initialize(mConnection, mReadEndpoint);
final ByteBuffer buf = ByteBuffer.wrap(dest);
if (!request.queue(buf, dest.length)) {
throw new IOException("Error queueing request.");
}
final UsbRequest response = mConnection.requestWait();
if (response == null) {
throw new IOException("Null response");
}
final int nread = buf.position();
if (nread > 0) {
Log.d(TAG, HexDump.dumpHexString(dest, 0, Math.min(32, dest.length)));
return nread;
} else {
return 0;
}
} finally {
request.close();
}
}
final int numBytesRead;
synchronized (mReadBufferLock) {
int readAmt = Math.min(dest.length, mReadBuffer.length);
numBytesRead = mConnection.bulkTransfer(mReadEndpoint, mReadBuffer, readAmt,
timeoutMillis);
if (numBytesRead < 0) {
// This sucks: we get -1 on timeout, not 0 as preferred.
// We *should* use UsbRequest, except it has a bug/api oversight
// where there is no way to determine the number of bytes read
// in response :\ -- http://b.android.com/28023
if (timeoutMillis == Integer.MAX_VALUE) {
// Hack: Special case "~infinite timeout" as an error.
return -1;
}
return 0;
}
System.arraycopy(mReadBuffer, 0, dest, 0, numBytesRead);
}
return numBytesRead;
}
以前,他的CdcAcmSerialDriver里似乎有一只虫子。java在第319行:mDataInterface=mDevice。获取接口(1)
因此,我将1改为0,根据如何修复java修复了索引越界错误。lang.ArrayIndexOutOfBoundsException:长度=1;指数=1。最后搬走了他所有的房子。将java文件放入我的包中,以便编辑它们。甚至不确定这是否相关。
目前,我的应用程序在出现异常后挂起。一句话:我在这里的低级代码中游弋,并没有什么乱七八糟的东西了。你能给我指一下陆地吗?
因此,在包括Chromium在内的所有代码示例中,没有一个实际检查请求的结果。队列看这里http://src.chromium.org/chrome/trunk/src/media/base/android/java/src/org/chromium/media/UsbMidiDeviceAndroid.java
if (!request.queue(buf, dest.length)) {
throw new IOException("Error queueing request.");
}
因此,在代码内部,每当出现异常SerialInputOutputManager停止时,最好是在出现错误时重新运行它。
@Override
public void onRunError(Exception e) {
Log.d(TAG, "Runner stopped.");
//restart if the error is the queue
}
或者让它不运行异常,但是requestWait很可能返回null。
如果我想出一个天才的解决方案,它将帮助我在我的github项目中使用这个库。
null 为简洁起见,排除了getter和setter(用于所有字段)以及toString()。 我尽了最大的努力按照指导原则格式化代码,但它没有发生,请耐心等待。 @Entity@Table(name=“Products”)@XmlRootElement@NamedQueries({@NamedQuery(name=“Product.FindAll”,query=“从产品p中选择p”),@nam
队列,和 栈一样,也是一种对数据的"存"和"取"有严格要求的 线性存储结构。 与栈结构不同的是, 队列的两端都"开口",要求数据只能从一端进,从另一端出,如图 1 所示: 图 1 队列存储结构 通常,称进数据的一端为 "队尾",出数据的一端为 "队头",数据元素进队列的过程称为 "入队",出队列的过程称为 "出队"。 不仅如此, 队列中数据的进出要遵循 "先进先出" 的原则,即最先进队列的数据元素
问题内容: 我在Windows 7盒子中以angular-fullstack开始了angular应用。我安装了带有-g选项的npm软件包,包括grunt-bower- install。我首先通过运行创建了应用程序 yo角全栈应用程序名称 在创建应用程序期间也不例外。成功创建应用程序后,我尝试使用 发牢骚 期望服务器运行。但是“发脾气”失败了 运行“ bower-install:app”(bower
下面是我的代码。当我运行它时,我在线程“main”java.lang.IndexOutOfBoundsException:Index:3、Size:2中得到异常,而不是我的异常消息。谁能解释一下我做错了什么,为什么会这样?谢谢!
我们每天都使用jsch-0.1.53.jar通过SFTP获取文件,但是运行了几年后,它现在停止工作了。我想服务器管理员可能已经升级了服务器软件。 相关代码(JAVA 1.7)不包含任何意外: 最后一行抛出“java.io.IOException:io流读取结束”,所以我想服务器会关闭连接。 我升级到了jsch 0.1.55(尽管下面的日志声称它是0.1.54),但这并没有改变任何事情。 jsch的
问题内容: 我在搜索我的网站上具有自动完成/提前输入功能。我看到他们有时是一个例外。我们正在使用代理服务器。 引起原因:java.net.ConnectException:连接被拒绝 这是我的编码方式 谁能告诉我为什么我只在某个时候得到这个例外?是否可能是由于从Android应用程序发出搜索请求而导致此异常,因为我们的网站不支持从android应用程序发出请求 问题答案: 当您尝试打开与IP地址/