我试图编写GSource的子类来处理串口事件。我发现这样做的方法是使用POSIX终端接口,它使用文件描述符。出于任何原因,GLib的主事件循环有一种特殊的方式来处理这个变量。
作为official documentation says,有两个GSource抽象函数用于准备调度,一个在fds池之前运行,一个在之后运行。这表明可能重要的是让GLib处理文件描述符而不是在我自己的prepare函数中实现它,但是there is no condition喜欢"引脚状态改变了#34;使用串行端口引脚。关于这一点,我有一些问题。
为什么GLib团队选择让库处理文件描述符?
如果我忽略它并在我自己的准备函数中实现它,我可以得到一些问题吗?
答案 0 :(得分:0)
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
以进行低级事件轮询。我怀疑您应该能够使用g_unix_fd_source_new()
创建的poll()
来观看终端FD上的输入。在其回调(GUnixFDSource
)中,您应该能够使用普通的终端I / O功能从FD读取数据。 g_source_set_callback()
实际上就是将FD集成到全局事件循环中(GMainContext
)。