我使用KISS Python模块从串行通信端口收集数据。 该模块具有返回从串行端口获得的值的值的函数。获取模块源代码的代码行如下:
for frame in frames:
if len(frame) and ord(frame[0]) == 0:
self.logger.debug('frame=%s', frame)
self.logger.debug('hola soy el logger debug')
if callback:
callback(frame)
我试图将frame的值存储在变量中。我需要在我通过继承创建类QThread
的对象的线程中完成。我正在使用PyQt4创建一个应用程序。
课程如下:
class OperativeKISSThread(KISSThread):
def __init__(self, parent = None):
KISSThread.__init__(self, parent)
def doWork(self):
prueba.read(callback=self.catchValue(frame))
return True
def catchValue(self, frame):
print frame
当我运行上面的代码时,我得到以下屏幕输出:
Traceback (most recent call last):
File "_client_amp.py", line 432, in run
success = self.doWork(self.kissTNC)
File "_client_amp.py", line 452, in doWork
prueba.read(callback=self.catchValue(frame))
NameError: global name 'frame' is not defined
我的代码会对框架的值进行哪些更改?
答案 0 :(得分:2)
应仅使用函数名指定回调,例如:
def doWork(self, prueba):
prueba.read(callback=self.catchValue)
return True