我使用RXTX库并成功打开串口(" COM1")并设置接收超时:
commport.enableReceiveTimeout(2000)
in = commport.getInputStream();
当我致电以下时间时:
byte[] buf = {0, 0, 0, 0};
int rd = in.read(buf, 0, 4);
即使并非所有4个字节都被接收,read()也会返回。
它是read(buf,off,len)函数的正确行为吗? (官方javacomm API文档上没有太多关于它的内容)
在我的预期"中,read(buf,off,buf)应该等到读取len
个字符或者在超时条件下引发异常。
是否有一种干净的方法来实现"读取
len
字节或在超时时引发异常"?我一次可以读取1个字节(int read())和"手动"使用getTickCount()检查超时条件;但它似乎不是一个很好的解决方案......