我正在尝试决定一种技术来开发可以与串行端口连接的桌面应用程序。我研究了 python,看起来基于控制台的应用程序并不难 - http://pyserial.sourceforge.net/,我还研究了 PyQt,它可以满足我项目的 GUI 部分。
但是是否可以在 PyQt 中包含像 PySerial 这样的 3rd 方模块?
我正在尝试决定一种技术来开发可以与串行端口连接的桌面应用程序。我研究了 python,看起来基于控制台的应用程序并不难 - http://pyserial.sourceforge.net/,我还研究了 PyQt,它可以满足我项目的 GUI 部分。
但是是否可以在 PyQt 中包含像 PySerial 这样的 3rd 方模块?
PyQt 和 pyserial 配合得很好(事实上,我在我的一个应用程序中使用它们。) pyserial 网站上的示例大多是简单的类似控制台的示例,但没有理由不能从任何 pyserial 对象中获取数据并在 PyQt 中使用它们。例如,您可以获取通过串行端口接收到的数据并将其推送到 QByteArray 或 NumPy 数组或任何适合您喜欢的类似数组中。
一些警告:如果你使用 Serial.readline(),它会阻塞直到它得到一个换行符 (\n)。这可能对您的 GUI 不利。如果您必须使用 readline() 而不是 read(),我建议将您的 pyserial 相关活动放在单独的线程中。你如何做到这一点取决于你,但我建议使用 Qt 的内置线程。然后,您可以在线程内将数据转换为 Qt 类型等。有关pyqt中的线程的更多信息。
编辑:差点忘了。如果有人关心,您也可以使用 PyQt 编写控制台应用程序。只需使用 QCoreApplication 而不是 QApplication。不太清楚为什么要在 python 中这样做,但是,除非你真的很喜欢 Qt 的数据类型......在这种情况下,你可以使用 PyQt 和 pyserial 来编写一个纯控制台应用程序:D