我再使用SUN的串口包进行串口通信的时候遇到一个十分郁闷的问题,如果哪位高人能给解决的话我可以另开帖子给你加分。 我的问题是这样,我采用一个线程负责数据的接收(用串口类获取InputStream,然后调用其read()方法即可),另一个线程负责数据的处理,两者之间用“生产者-消费者”模式运行。
Thread t = new Runnable(){
public void run(){
int data = 0;
while( true){
int data = inputStream.read();
if( data ==-1)//数据接收完
break;
//以下是其他处理过程
}
});
然而在串口返回数据的速率很快的时候,上述循环中接收数据的速率远远小于串口收到的数据的速率,这就导致另一个线程的工作远远滞后于实际,而我的应用偏偏又是实时系统,不能忍受这样的滞后,请问高人,如何提高数据接收的速率.如果你的答案有贡献,我是不吝惜分述的。可以另开帖子加分
Thread t = new Runnable(){
public void run(){
int data = 0;
while( true){
int data = inputStream.read();
if( data ==-1)//数据接收完
break;
//以下是其他处理过程
}
});
然而在串口返回数据的速率很快的时候,上述循环中接收数据的速率远远小于串口收到的数据的速率,这就导致另一个线程的工作远远滞后于实际,而我的应用偏偏又是实时系统,不能忍受这样的滞后,请问高人,如何提高数据接收的速率.如果你的答案有贡献,我是不吝惜分述的。可以另开帖子加分
这是什么意思啊?你的2个线程不是一个是接受线程,一个处理线程吗?有些不明白你的意思。如果说要提高/降低read速度,可以尝试增加/减少读入缓冲区的大小(减少/增加循环read次数)来实现。