我正在开发基于arduino的小型嵌入式系统,它使用中断来计算事件。 代码是这样的:
volatile float count= 0;
attachInterrupt(0, increaseCount, CHANGE);
void increaseCount(){
++count;
}
count变量应该是volatile,以便在中断内访问它。 现在,我正在使用python在Raspberry pi上编写它。但是,python没有任何名为volatile的东西。那么,是否存在另一种在线程/事件期间增加变量的技术。 当事件发生并且变量增加时,python会给我错误。
File "MyApp.py", line 5, in my_callback
count += 1
UnboundedLocalError: local variable 'count' referenced before assignment
任何帮助??
答案 0 :(得分:3)
不,Python中没有volatile
这样的东西,这是一个太低级别的概念。
您应该确保存在变量可以驻留的某些共享上下文(如对象实例),以便可以在两个上下文之间共享它。 Python将完成剩下的工作。
class MyApp(object):
def __init__(self):
self._counter = 0
registerInterrupt(self.interruptHandler)
def interruptHandler(self):
self._counter += 1
def getCount(self):
return self._counter
这样的事情就足够了,当然你必须填写详细信息并进行必要的调用以创建MyApp
的实例,并确保有一个函数registerInterrupt()
这样就可以将回调设置到实例中。
另外,请注意C中的counter
事件几乎不应该是float
,这是非常奇怪的设计。