0

我正在编写一个验证设备事件的 python 程序。

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

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

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

任何人都可以帮助我设计这部分吗?

4

2 回答 2

0

如果您只是将线程用于异步 IO,最好不要使用线程并使用 select.select,或者如果您想让自己更轻松,甚至可以使用 asyncore。

http://docs.python.org/library/asyncore.html

于 2012-09-07T23:07:00.803 回答
-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 中,来自串行端口的数据不断读取设备信息值。当我使用 writeStringToSerialPort() 写入数据时,设备会向串行端口输出一些数据,我必须从函数 waitfordata 读取这些数据,以验证来自设备的响应。

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

于 2012-09-21T19:46:17.323 回答