2015-11-05 42 views
0

其实我有一个功能来监视我的beaglebone上的GPIO。当数字输入端口发生事件(外部中断)时,我将该功能设置为发送用户信号(SIGUSR1),但该功能必须处于循环状态。我可以插入一个线程或fork()它的功能,但我不认为这是优雅的解决方案。Beaglebone中数字输入端口(GPIO)的流式传输?

我想知道是否存在任何方式/功能/功能随时可以使用C语言来设置监测的前景(更高的优先级),而不放在一个循环运行,就像一个setitimer其只声明一次,并运行(保持监视),无需进入循环。

我不知道用beaglebone/linux可以使用PIC,但是这个功能被称为“Streaming Parallel Port”(SPP)。

回答

0

我不知道你是怎么监控GPIO,而是从用户空间 与GPIO的工作(见https://www.kernel.org/doc/Documentation/gpio/sysfs.txt) 你可以使用select和poll,以最小的超时时间调用它时,你可以 不循环工作,或者如果您使用Qt/gtk,则可以在此框架的事件循环中插入gpio检查。

第二个变量是,如果你希望只使用C, 没有C++ /升压使用了setjmp/longjmp和

此外,如果你谈论的定时器可以使用man 2 alarm实行定期定时器,

对我来说最简单的方法是使用pthreads,并且安装线程监视gpio最高优先级而不是松散的信息。