javaRXTX串口通信接收的数据太长时会被截去后面的内容?
我用rxtx进行串口通信接收数据的时候发现如果写入到串口的数据太长的时候,后面的内容会被截取。有没有什么办法把完整内容打印出来的?publicvoidserialEven...
我用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();
}
}
}
我的代码。 展开
有没有什么办法把完整内容打印出来的?
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();
}
}
}
我的代码。 展开
2个回答
展开全部
在串口设置里,可以设置接受和发送缓冲区大小。你改大些就是了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-17
展开全部
分段是肯定会的,这些都是有缓存的。
更多追问追答
追问
能把内容全部打印出来么?
追答
那是肯定的。
这样会好一点
while ((len = in.read(buffer)) > 0){
baos.write(buffer, 0, len);
}
不行的话,就另开一线程,专门读。
串口虽然的缓存,但,也是要及时读取的。即中间处理不能延时太久。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询