2012-09-07 115 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