嘿,我已经尝试了一段时间,但我就是一无所获
我正在尝试从 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/