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:图片上传不上去。。
展开
 我来答
Utrecht1984
2015-04-08 · TA获得超过157个赞
知道答主
回答量:72
采纳率:0%
帮助的人:86.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,然后在循环里打印
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式