擅长:python、mysql、java
<p>来自@theGtknerd的解决方案并不是很理想。使用<code>g_timeout_add_seconds</code>不是很好,您在数据接收上增加了1秒的延迟。使用<code>g_timeout_add</code>只会隐藏真正的问题:您正在进行轮询。你知道吗</p>
<p>相反,应该使用<a href="https://developer.gnome.org/glib/stable/glib-IO-Channels.html#g-io-add-watch" rel="nofollow noreferrer">^{<cd3>}</a>在数据真正到达时调用回调。然而,这需要有一个<code>GIOChannel</code>可以被<code>pyserial</code>使用。<code>GIOChannel</code>可以从文件描述符上创建,我只是不知道如何从pyserial对象获取文件描述符,但这应该是可行的。。。你知道吗</p>