创建自定义gsource时如何使用串行引脚?

时间:2017-02-22 03:27:05

标签: c glib gobject

我试图编写GSource的子类来处理串口事件。我发现这样做的方法是使用POSIX终端接口,它使用文件描述符。出于任何原因,GLib的主事件循环有一种特殊的方式来处理这个变量。

作为official documentation says,有两个GSource抽象函数用于准备调度,一个在fds池之前运行,一个在之后运行。这表明可能重要的是让GLib处理文件描述符而不是在我自己的prepare函数中实现它,但是there is no condition喜欢"引脚状态改变了#34;使用串行端口引脚。关于这一点,我有一些问题。

  1. 为什么GLib团队选择让库处理文件描述符?

  2. 如果我忽略它并在我自己的准备函数中实现它,我可以得到一些问题吗?

1 个答案:

答案 0 :(得分:0)

  1. foreach (PPT.Slide slide in pptDoc.Slides) { foreach (PPT.Shape shape in slide.Shapes) { if (shape.Type == Microsoft.Office.Core.MsoShapeType.msoPicture) { shape.Export(filename, Microsoft.Office.Interop.PowerPoint.PpShapeFormat.ppShapeFormatPNG); } } } 需要处理文件描述符,因为它需要能够将其传递给GSource以进行低级事件轮询。
  2. 你的问题不清楚。忽略什么?实施什么?
  3. 我怀疑您应该能够使用g_unix_fd_source_new()创建的poll()来观看终端FD上的输入。在其回调(GUnixFDSource)中,您应该能够使用普通的终端I / O功能从FD读取数据。 g_source_set_callback()实际上就是将FD集成到全局事件循环中(GMainContext)。