Я пытаюсь использовать WebIOPi, но я совершенно потерял работу с моим проектом.
Фон:
Я использую Raspberry Pi B + под управлением Wheezy. Я работаю над веб-приложением, доступ к которому возможен только локально. У меня есть несколько файлов php в / var / www, которые работают на 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 в течение нескольких часов, но я могу найти информацию только о том, как прочитать состояние булавки, а не прослушивать прерывания. Кто-нибудь может указать мне правильное направление?
Любая помощь будет принята с благодарностью. Спасибо!
Итак, у вас, кажется, есть две проблемы:
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) для опроса этого значения на вашей странице клиента.
Других решений пока нет …