java通过串口接收数据,不正常。求大神指导
最近老师交给我一个小任务:通过java代码来接收温度传感器通过串口发送的数据。我用串口助手接收的数据如下:16161616。可是我用javax.comm接收的数据确实这样...
最近老师交给我一个小任务:通过java代码来接收温度传感器通过串口发送的数据。
我用串口助手接收的数据如下:
16
16
16
16
。可是我用javax.comm 接收的数据确实这样的
16
1
6
16
16
这样断断续续的。
java相关代码如下:
try {
while (inputStream.available() > 0) {
inputStream.read(readBuffer);
readStr += new String(readBuffer).trim();
}
s2 = new String(readBuffer).trim();
// int numberDate=Integer.parseInt(readStr);
System.out.println("接收到数据"+readStr);
} catch (IOException e) {
}
PS:图片上传不上去。。 展开
我用串口助手接收的数据如下:
16
16
16
16
。可是我用javax.comm 接收的数据确实这样的
16
1
6
16
16
这样断断续续的。
java相关代码如下:
try {
while (inputStream.available() > 0) {
inputStream.read(readBuffer);
readStr += new String(readBuffer).trim();
}
s2 = new String(readBuffer).trim();
// int numberDate=Integer.parseInt(readStr);
System.out.println("接收到数据"+readStr);
} catch (IOException e) {
}
PS:图片上传不上去。。 展开
1个回答
展开全部
不要使用inputStream.available(),如果我没有记错的话,available返回的是没有被阻断的字节数(已经被缓冲的内容),可以尝试read(byte b[])方法,然后通过返回值是否-1来判断,如下。
int bytesRead = inputStream.read(readBuffer);
while (bytesRead != -1) {
readStr += new String(readBuffer).trim();
bytesRead = inputStream.read(readBuffer);
}
更多追问追答
追问
不行啊。。这样退不出while循环,不能打印出数据了
追答
readBuffer的长度可以设为固定长2,然后在循环里打印
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询