2015-11-05 70 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最高優先級而不是鬆散的信息。