我正在编写一个验证设备事件的python程序。
我正在从设备的串口中连续读取一些数据。当我在设备的serail端口上写东西时,设备在serialport上写一个字符串,我必须阅读。从串口继续读取部分是在一个单独的工作线程中,我逐行读取它并将其写入线程。设备连续写入一些数据,并将事件描述写在serail端口上。
当我在设备上写东西时更具体一点,它会在设备上生成一个事件。事件的描述将写回串行端口。我必须阅读它并验证事件是否已经发生。
现在发生了什么,因为我在线程中逐行读取设备输出,当我写东西并开始读取事件desc发生时,它的输出已经消失,接下来一些其他输出线正在读。我该如何同步?
有没有人帮我设计这部分?
答案 0 :(得分:0)
如果您只是使用线程进行异步IO,那么最好不要使用线程并使用select.select,或者甚至可以使用asyncore,如果你想让自己更容易。
答案 1 :(得分:-1)
代码段如下:
Class SerialCom:
__init__(self,comport):
self.comport = comport
self.readSerialPortThread = ReadSearialPortThread(self.comport)
def writeStringToSerialPort(someString):
self.comport.write(someString)
def waitfordata(someString):
#I have to continuously read data from serial port till we someString.
来自serialport的ReadSearialPortThread数据不断读取设备信息值。当我使用writeStringToSerialPort()写入数据时,设备将一些数据输出到串口,我必须从函数waitfordata读取这些数据,以验证设备的响应。
现在发生的事情是当我写一些值并调用waitfordata()时,readSerialPortThread已经读取了所需的值,并继续读取其他一些值,如设备信息。所以我在那里失去了价值观。我想知道如何同步它。