2012-09-07 49 views
0

我在写一个验证设备事件的python程序。线程同步的设计帮助

我连续从设备的串行端口读取一些数据。当我在设备的serail端口上写入内容时,设备会在串口上写入一个字符串,我必须阅读它。不断从串口读取部分是在一个单独的工作线程中,我逐行读取并写入线程。该设备连续写入一些数据,并且将事件描述写入到serail端口。

更具体地说,当我在设备上写东西时,它会在设备上生成一个事件。事件的描述被写回串行端口。这我必须读回来并验证事件是否发生。

现在当我在一个线程中逐行读取设备输出时,我写了一些东西并开始读取事件desc发生时,输出已经消失,接下来的一些其他输出行是正在阅读。我如何同步这个?

任何帮助我设计这部分?

+0

你有什么小代码片段,你现在正在做什么?如果您不断从设备读取数据,那么应该没有办法“错过”一条线。 – jdi

+0

另外,这个阅读和写作过程是否需要两个独立的线程是有原因的?这听起来像是一个单线程的请求 - 响应系统。它应该是异步的,在稍后的时间读者将验证发布的事件,并且作者可以继续前进? – jdi

+0

代码段如下所示: 类SerialCom: __init __(个体,COMPORT): self.comport =相称 self.readSerialPortThread = ReadSearialPortThread(self.comport) DEF writeStringToSerialPort(): self.comport .write(somedata) –

回答

-1

代码段如下所示:

类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. 

在ReadSearialPortThread数据的serialport从连续读取装置信息值。当我使用writeStringToSerialPort()写入数据时,设备向串口输出一些数据,我必须从函数waitfordata中读取此数据,以验证设备的响应。

现在发生了什么是当我写一些值和调用waitfordata()所需的值已被readSerialPortThread读取,并继续读取一些其他值,如设备信息。所以我失去了那里的价值。我想知道如何同步。

+0

请仅使用* Post answer *按钮才能得到实际答案。您应该修改原始问题以添加其他信息。 – jdi