0 0

android 蓝牙通讯问题0

现在通过connect方法已经与单片机的蓝牙模块连接的上了,并且通过socket取得了输出输入流。根据下位机(单片机)的规定,android手机必须向下位机发送‘0x11,0x03,0x0C,0x00,0x1E,(byte) 0xC2 字符,下位机若接收得到0x11,0x03,0x0C,0x00,0x1E,(byte) 0xC2字符的话返回16 01 0C DD字符,并自动启动空气质量检测仪。

现在问题是,我发送字节数组后,空气质量检测仪也启动了,但是返回的数组总是不对。
我获取数组的代码是:
/**
* 发送指令并从下位机得到的原始数据
* */
public byte[] getData() {

byte[] data = null;

try {

InputStream in = socket.getInputStream();
data = new byte[in.available()];

in.read(data, 0, data.length);

} catch (IOException e) {

e.printStackTrace();
}

return data;

}

预期是:in.available()返回的是4,但是实际返回的是1。
2014年5月09日 09:53

1个答案 按时间排序 按投票排序

0 0

in.available()返回的不一定是全部可读的字节,所以你最好是采用标准的方法,is.read(),这个返回-1就表示读到头了

2014年5月09日 14:46

相关推荐

Global site tag (gtag.js) - Google Analytics