我正在尝试使用WebIOPi,但我很难将其用于我的项目。
背景:我正在使用Raspberry Pi B+运行Wheezy。我正在开发一个只能在本地访问的基于web的应用程序。我在/var/www中有一堆php文件,它们在Apache上运行。现在我需要让我的硬币接收器与项目。硬币接收器http://www.adafruit.com/products/787发送单个脉冲(我只需要一个硬币)。我首先尝试了使用中断的python脚本的硬币接收器,它运行良好。
GPIO.setup(PIN_COIN_INTERRUPT,GPIO.IN)
GPIO.add_event_detect(PIN_COIN_INTERRUPT,GPIO.FALLING,callback=coinEventHandler)
但现在我需要能够捕捉这些脉冲并将其显示在php页面上,更新每个硬币插入的金额。我已经研究WebIOPi好几个小时了,但我只能找到关于读取pin状态的信息,而不能监听中断。有人能给我指正确的方向吗?
如有任何帮助,我们将不胜感激。非常感谢。
因此,您似乎有两个问题:1.如何在服务器上检测新的硬币事件2.然后如何将其推送到客户端浏览器。
我根本不了解webiopi,所以我不能说没有办法同时使用它来解决这两个问题,但作为一种替代方案:
对于第1部分:您有一个python程序,您说它有效;我建议作为后台服务运行,让它做一些简单的事情,比如将铸币的最新价值写入文件:
GPIO.setup(PIN_COIN_INTERRUPT,GPIO.IN)
GPIO.add_event_detect(PIN_COIN_INTERRUPT,GPIO.FALLING,callback=coinEventHandler)
def coinEvenHandler(*arguments):
try:
f = open("coin.txt","rt")
cnt = int(f.read())
f.close()
except: # handle file doesn't exist and file doesn't contain an int
cnt = 0
f = open("coin.txt","wt")
f.write(str(cnt))
f.close()
对于第2部分:1.创建一个返回"coin.txt"值的页面2.使用Ajax(例如jquery)从客户端页面轮询该值。