我有一个项目,我有一个 HC-05 无线电,每 1 秒传输大约 500 到 800 个字符的 XML 格式数据。我在一个 android 应用程序中接收它,将其转换为字符串,然后使用 XmlPullParserFactory 处理 XML。一切都很好,除了每 5 到 10 秒只有一部分传输的数据被接收到。然后它的其余部分在一秒钟后与下一个数据集一起被接收。我有一些理论,但没有得到证实。
... 目前正在研究这个理论 >
我不知道 HC-05 收音机在内部是如何工作的,所以我的建议可能听起来很愚蠢,问题是,收音机是在字符到达时立即通过蓝牙传输字符,还是等待数据停止然后将所有数据发送到一个“包”?我在想它可能会限制它一次可以传输多少个字符,从而导致数据传输中断。但它并不一致,所以这几乎不是问题。
任何有关此事的帮助将不胜感激。在需要的地方问我清楚。
下面是将输入流转换为字符串的代码片段,如果我有错误,请告诉我。
@Override
public void run() {
InputStream inputStream;
try {
inputStream = mBTSocket.getInputStream();
while (!bStop) {
byte[] buffer = new byte[1200];
if (inputStream.available() > 0) {
inputStream.read(buffer);
int i = 0;
for (i = 0; i < buffer.length && buffer[i] != 0; i++) {
}
final String strInput = new String(buffer, 0, i);
}
Thread.sleep(100);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}