У меня есть базовая установка django, и в настоящее время я выполняю вызовы dajaxice для записи некоторых данных в последовательное соединение (RainbowDuino находится на другом конце).Поддерживать постоянное последовательное соединение, которое могут использовать вызовы dajaxice?
Следующий код работает, однако, когда вы устанавливаете последовательное соединение с Arduino, вы должны подождать, прежде чем записывать данные в него, как сбрасывает Arduino.
from django.utils import simplejson
from dajaxice.decorators import dajaxice_register
import time, serial
def serialWrite(msg):
try:
ser = serial.Serial('/dev/ttyUSB0', 9600)
time.sleep(1.5) #wait for arduino to reset
ser.write(msg)
return "Running Animation"
except:
return "Failed to communicate with cube"
@dajaxice_register
def animate(request, data):
msg = serialWrite(str(data))
return simplejson.dumps({'message':msg})
Я новичок на все вещи питона и Джанго, так что я не уверен, как поддерживать постоянный объект, который может использовать последовательное соединение в этой среде. Из моего собственного чтения и тестирования я вижу, что зарегистрированный метод dajaxice вызывается только при получении соответствующего нажатия кнопки.
Это случай, когда я могу потенциально использовать представление моего приложения для создания последовательного соединения, если да, то как я могу поделиться соединением с вызовом dajaxice?
Возможно, это не идеальная настройка, но есть ли у вас конкретная причина для установки постоянного соединения? Могут быть другие способы, но они действительно зависят от вашей настройки времени выполнения (как вы фактически используете приложение Django). Другой подход может заключаться в том, чтобы запустить отдельный процесс, который устанавливает постоянное соединение с вашим Arduino и прослушивает команды, отправленные из Django (возможно, через Redis). – robertklep
Честно говоря, это просто личное предпочтение, оно не выглядит великолепно, когда кубик 4x4 во главе выключается при перезагрузке. В настоящее время приложение django обслуживается от малины pi, это требование школьного проекта. Я буду исследовать Редиса, спасибо за это предложение. – Gybe