android - 传输大量数据 USB

标签 android usb

嘿,我已经尝试了一段时间,但我就是一无所获

我正在尝试从 USB 设备中获取字节,这对于输入的一两行来说工作正常,但是当它达到相当多时它就不起作用了。

我正在使用这行代码来引入数据:

conn.bulkTransfer(epIN, buffer, 57600, 500);

有什么方法可以反复进行 USB 传输,直到没有更多数据输入为止?因为传入的数据量可以从 8 字节到几 MB 不等


回复用户387184

像这样的东西可以传输大量数据吗?

while ( conn.bulkTransfer(epIN, buffer, 57600, 500) > 0 ){
    \\do some stuff
}

最佳答案

当您尝试与转换器下游的(最终)串行设备通信时,如果协议(protocol)设计为发送和接收的消息具有终止字符,这将非常有用。这使您不必猜测在接下来的几毫秒内是否会收到更多数据。换行符是一个很常见的选择。例如:

主持人:你叫什么名字?\n

装置:卡米洛特的加拉哈德爵士。\n

主持人:你最喜欢什么颜色?\n

设备:蓝色\n否,黄色\n

鉴于设备已在“蓝色”后用\n 终止响应,主机不会期望看到第二个澄清答案。如果设备以这种方式“违反规则”,通常会发生什么情况是主机不会读取“不,黄色”,直到它寻找下一个问题的答案,此时它可能会拒绝它,因为它不可信响应,并向设备发出复位命令。 (一些协议(protocol)有一个“在响应前加上重复问题”的方案来防止这种混淆)

除了使用终止字符之外,当然还有另外两种众所周知的可能性:一种是非常缩写的代码 - 单个字符或可能无法打印的二进制 - 具有预期的长度响应(可能因代码的开头而异)。另一个是在数据包结构中有一些东西——一个可识别的头、一个长度字段,然后是数据。

但要点是,“等待,看看是否还有更多”协议(protocol)主要用于两个人之间或一个人与自动化系统之间。当自动化系统相互交谈时,它们倾向于使用一种协议(protocol),该协议(protocol)定义了您如何知道是否还会有更多。 如果您的最终下游端点设备固件的创建者了解他们的业务,那么您应该和不应该期望更多数据的时间就会有明确的规则。

关于android - 传输大量数据 USB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10931558/

相关文章:

android - 为什么 map URL 的 `sll` 查询参数被(某种程度上)忽略了?

android - 你能从 LUA 为 iOS、Android、WP8 制作原生库吗?

android - 从另一个线程更新 UI 时 View.GONE 与 View.INVISIBLE

Java USB 事件监听器,用于在 USB 插入时收到通知

java - Android USB 主机异步批量传输示例

linux - 来自 tty 的 "disconnecting"/dev/input/event14

android - 在数据加载到 Recycler View 之前加载 View

android - 将字段添加到现有的 sqlite 数据库

Android - 丢失传入(高速)USB 数据

android - USB/RS232通信安全异常android.permission.sec.MDM_APP_MGMT