2017-02-22 65 views
0

我想寫一個GSource的子類來處理串口事件。我發現這樣做的方式是使用POSIX終端接口,該工作使用文件描述符。出於任何原因,GLib的主事件循環有一個特殊的方法來處理這個變量。如何在創建自定義gsource時使用串行引腳?

作爲official documentation says,有兩個GSource抽象函數用於準備分派,一個在fds池之前運行,另一個在一個之後運行。這表明,讓GLib處理文件描述符可能非常重要,而不是在我自己的準備功能中實現這一點,但there is no condition(如「引腳狀態已更改」)可用於串行端口引腳。關於這個我有一些問題。

  1. 爲什麼GLib團隊選擇讓庫處理文件描述符?

  2. 我可以得到一些問題,如果我忽略它,並在我自己的準備功能中實現這一點?

回答

0
  1. GSource需要處理的文件描述符,因爲它需要能夠將它傳遞給poll()的低級別事件輪詢。
  2. 你的問題不清楚。忽略什麼?實施什麼?

我懷疑你應該能夠使用g_unix_fd_source_new()創建的GUnixFDSource來觀察終端FD上的輸入。在其回調(g_source_set_callback())中,您應該能夠使用普通的終端I/O功能從FD中讀取數據。 GSource實際上就是將FD集成到全局事件循環(GMainContext)中。

相關問題