我使用java RXTX串口通信接收的数据太长时会被截去后面的内容?

发布于 2021-12-02 13:23:54 字数 792 浏览 795 评论 4

我用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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

野心澎湃 2021-12-06 15:48:03

你的buffer 才1024的大小,就只能每次接受1024,大了肯定截取了。  通常是规定发送端的每次发送大小,不足的补0. 要不然只能是每个字节读取,判断开头结束,但这效率就低了

顾忌 2021-12-05 15:03:10

什么意思能说下么?

樱花落人离去 2021-12-04 12:08:12

串口通讯本来就是字节流,需要自己组包的,你需要看下原理

猫烠⑼条掵仅有一顆心 2021-12-03 21:34:41

打印要放到While循环里

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文