【发布时间】:2016-03-27 11:26:09
【问题描述】:
我正在创建一个应用程序来通过蓝牙串行端口读取字符串值。我的数据接收但分为两部分。如果我通过蓝牙发送 $F00,A,B,0,M#,它只会在第一部分读取$,在下一部分读取F00,A,B,0,M#。我在这里提供了我的代码。如果我错了,请纠正我。
InputStream inputStream=null;
int avilableBytes=0;
public ConnectedThread(BluetoothSocket socket){
InputStream temp=null;
try{
temp=socket.getInputStream();
}catch (IOException e){
e.printStackTrace();
}
inputStream=temp;
}
public void run() {
try{
int bytes;
while (true){
try{
avilableBytes=inputStream.available();
if (avilableBytes>0){
byte[] buffer=new byte[avilableBytes];
bytes=inputStream.read(buffer);
final String readMessage=new String(buffer,0,bytes);
bt_handler.obtainMessage(handlerState,bytes,-1,readMessage).sendToTarget();
Log.d("PRAVEEN",readMessage);
}
}catch (IOException e){
e.printStackTrace();
}
}
}catch (Exception e){
e.printStackTrace();
}
}
【问题讨论】:
-
不是这样的,它取决于蓝牙,它可以在不同的时间读取不同的模式。
-
90% 的时间我有时会丢失确切的字符串
-
您是否尝试使用我的示例修复代码?
-
@Majkl 抱歉回复晚了。我尝试了很多方法,但得到了同样的错误。我会尽快尝试您的代码,因为现在我被困在另一个项目中。干杯
-
你试过我的解决方案了吗?这个问题结束了吗?
标签: android bluetooth inputstream