我使用java RXTX串口通信接收的数据太长时会被截去后面的内容?
我用rxtx进行串口通信接收数据的时候发现如果写入到串口的数据太长的话,后面的内容会被截取掉。 现在有没有什么办法把完整内容打印出来的?小菜求牛人解答
我的代码:public void serialEvent(SerialPortEvent event) // 如果串口有数据上报则主动调用此方法 { if (event.getEventType() == SerialPortEvent.DATA_AVAILABLE)// 当有可用数据时读取数据,并且给串口返回数据 { ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = -1; try { while (in.available() > 0) { len = in.read(buffer); baos.write(buffer, 0, len); } baos.flush(); System.out.println(new String(baos.toByteArray())); } catch (IOException e) { e.printStackTrace(); } } }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
你的buffer 才1024的大小,就只能每次接受1024,大了肯定截取了。 通常是规定发送端的每次发送大小,不足的补0. 要不然只能是每个字节读取,判断开头结束,但这效率就低了
什么意思能说下么?
串口通讯本来就是字节流,需要自己组包的,你需要看下原理
打印要放到While循环里