什么时候需要在GUI中使用串行通信线程?

时间:2016-03-30 13:20:41

标签: python python-2.7 tkinter python-multithreading pyserial

我正在使用Python 2.7和Tkinter模块编写一个简单的GUI。 GUI需要通过串口连接两个独立的设备,因此我将使用Pyserial。

我将打开两个串口,但为了维护GUI的响应,我考虑使用多个线程来处理GUI和两个设备之间的任何串行来回。我想知道这是否是别人会推荐的,或者是否有替代方法。

我的程序会出现一些情况。

1)只有在设备发送命令后,GUI才会发出设备的响应或多个响应。

2)GUI将从设备接收响应或多个响应,而不会提示或期待它。

对于第一种情况,有两种方法可以将命令发送到GUI将要查找响应的设备。

1)用户将输入一行并点击发送。然后设备将响应。我想象一下这种情况会发生的速度,如果发生这种情况,这可能会导致没有线程化。

2)GUI将输入一个逐行读取文本文件的函数,每行代表一个要发送给设备的命令。该功能仅在收到设备的确认响应时才发送下一行。由于此功能仅在到达EOF时结束,用户暂停,或者用户强制退出该功能,该功能将花费很长时间才能完成,并且GUI在运行时会冻结。我觉得这应该是自己的线索,以避免冻结。

如果我觉得设备的自发响应将成为程序中的常见事件,或者我不希望任何类型的GUI无响应,我可以设计一个函数,该线程会照顾它所做的一切检查是否有回复。我认为一个线程可以处理来自多个设备的响应。该函数还将具有一个检查值,该值将返回检查值是用户可控制的函数,该函数也应该关闭该线程。

第二个线程将处理运行函数,该函数逐行向设备发送命令。该功能可能是将一些命令行发送到一个设备或另一个设备。如果我可以打开两个线程,那么检查serial.readline是否为真是不是很糟糕?

我很感激任何意见。谢谢。

0 个答案:

没有答案