gpt4 book ai didi

android - UsbHost 模式下的 TransactionTooLargeException

转载 作者:行者123 更新时间:2023-11-29 17:55:19 25 4
gpt4 key购买 nike

我正在使用 usb-serial-for-android 库,我得到了一些奇怪的结果。连续2.5小时与串口通信,读写成功,出现如下异常:

exception in UsbManager.openDevice
android.os.TransactionTooLargeException
at android.os.BinderProxy.transact(Native Method)
at android.hardware.usb.IUsbManager$Stub$Proxy.openDevice(IUsbManager.java:339)
at android.hardware.usb.UsbManager.openDevice(UsbManager.java:255)
at com.hoho.android.usbserial.driver.UsbSerialProber$1.probe(UsbSerialProber.java:63)
at com.hoho.android.usbserial.driver.UsbSerialProber.probeSingleDevice(UsbSerialProber.java:174)

但是当我强制关闭我的应用程序然后重新启动它时,一切都很好,我的应用程序可以再次与端口通信。

在异常之前提到它可能有用,我得到了这个异常:

java.io.FileNotFoundException: /sdcard/log.txt: open failed: EMFILE (Too many open files)
at libcore.io.IoBridge.open(IoBridge.java:406)
at java.io.FileOutputStream.<init>(FileOutputStream.java:88)
at java.io.FileWriter.<init>(FileWriter.java:58)
at org.example.myapp.util.L.log(L.java:32)

我使用类 L 进行日志记录:

public class L {

public synchronized void log(String message){

File logFile = new File("sdcard/log.txt");
if (!logFile.exists())
{
try
{
logFile.createNewFile();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try
{
//BufferedWriter for performance, true to set append to file flag
BufferedWriter buf = new BufferedWriter(new FileWriter(logFile, true));
buf.append(new Date(DateProvider.getInstance().getCurrentDateAsMillisecs()).toString()+": "+message);
buf.newLine();
buf.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

似乎某种缓冲区或缓存已满并阻止与设备通信。

如何摆脱异常?

更新:

写入日志文件永远不会失败,即使我收到异常也是如此。它只影响与 USB 设备的通信。

最佳答案

您打开的文件太多。我发现的问题:
- 你永远不会关闭 logFile
- 您在日志函数中打开文件,静态文件会更好并且可以在 log_init() 中初始化;功能。
或者,使 logFile 成为对象变量并在构造函数中对其进行初始化。

我认为解决这些将解决您的问题。

关于android - UsbHost 模式下的 TransactionTooLargeException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19877459/

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