2011-03-27 52 views
1

我想使用的代码从一个Arduino沟通,Posix的串行连接与回调

http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/

它使用termios的开放和交谈的一个Arduino在非阻塞的方式,工作正常。我想知道的是什么时候在Java上使用rxtx我可以注册一个回调函数,当线上有数据时被调用,这样我就不必手动检查了。我GOOGLE了,但找不到任何有关如何注册回调函数的信息?

我在Linux/OS X上,我试图避免启动一个新线程来监视/读取线上的数据。

回答

1

Posix本身没有定义一个方法来分配一个回调函数,当串行数据到达时被调用。如果您不想使用单独的线程,则执行此类处理的标准方法是使用库函数select。这允许程序定义你的程序感兴趣的一组文件描述符,然后进入睡眠状态。如果您感兴趣的某个文件描述符发生了某些有趣的事情(例如新数据可供读取),Select将自动唤醒您的进程。这避免了必须忙于等待并轮询多个活动描述符。

另一种选择是使用像libevent这样的库,它位于Posix图层之上并提供回调基础结构。 http://monkey.org/~provos/libevent/

1

Boost.Asio可以在使用串口时提供回调功能。它运行在Linux和Mac OS X上。