从arduinoc到Raspberry pi python volatile变量访问线程内部

2024-06-16 13:42:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我在arduino上开发小型嵌入式系统,它使用中断来计算事件。 代码是这样的:

 volatile float count= 0;
 attachInterrupt(0, increaseCount, CHANGE); 

 void increaseCount(){
 ++count;
 }

count变量应该是可变的,以便在中断内访问它。 现在,我正在用python在Raspberry pi上编写它。但是,python没有所谓的volatile。那么,在线程/事件期间是否还有另一种增加变量的技术呢。 当事件发生并且变量增加时,python会给我这个错误。在

^{pr2}$

有什么帮助吗??在


Tags: 代码系统count错误pi事件floatchange
1条回答
网友
1楼 · 发布于 2024-06-16 13:42:12

不,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()来完成将回调设置到实例中所需的工作。在

另外,请注意事件的counter在C中几乎永远不应该是float,这是一个非常奇怪的设计。在

相关问题 更多 >