java读取com口数据的问题

asiaja 2012-05-26 10:38:54
利用java comms包 向com口发送字节数组数据并读取返回值,发送一切正常,读取返回值采用com口监听事件进行读取,但是读取返回值的时候有些问题:
1. 先定义数组,然后读取到数组里。代码:
byte[] readBuffer = new byte[50];
if(input.available() > 0 ) {
int numBytes = input.read(readBuffer);
}
采用这个方法读取时,只能读取到一部分数据(大部分情况只读取了前10个字节),后半部分数据读不到 readbuffer数组中。
2. 一个字节一个字节读取。代码:
ArrayList<Integer> rec=new ArrayList<Integer>();
int r;
while(r=input.read()!=-1 ) {
recbuf.add(r);
}
采用这个方法读取时,读取速度奇慢,严重超时。

哪位大侠解决过类似情况或 有其他的读取方法,请指教一二,先谢了。


...全文
221 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ldhbq2014 2012-05-26
  • 打赏
  • 举报
回复


InputStream input = new FileInputStream("c:\\1.text");

byte[] readBuffer = new byte[input.available()];


int len=input.read(readBuffer);
int total=0;

while(total<readBuffer.length) {

total+= len;
input.read(readBuffer, total, readBuffer.length-total);
}
input.close();
古布 2012-05-26
  • 打赏
  • 举报
回复
int numBytes = input.read(readBuffer);
while(numBytes != -1 ) {
....
numBytes = input.read(readBuffer);
}
淡定的峰哥 2012-05-26
  • 打赏
  • 举报
回复
可以用ByteArrayOutputStream将InputStream读取到一个byte数组里面

InputStream is = new FileInputStream("c:\\1.text");//或从其他地方获取的输入流
ByteArrayOutputStream baos= new ByteArrayOutputStream();
int read =-1;
while( -1 !=(read =is.read()))
{
baos.write(read);
}
byte[] array = baos.toByteArray();
baos.close();
is.close();

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧