我有一个基本的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})
我是新来的所有的东西Python和Django的,所以我不知道该如何保持一个持久化对象,可以使用在这种环境下串行连接。从我自己的阅读和测试中,我可以看到dajaxice注册的方法只在收到相应的按钮点击后才被调用。
这是我可以使用我的应用程序的视图实例化串行连接的情况下,如果是这样我怎么能与一个dajaxice调用共享连接?
它可能不是一个理想的设置,但是您是否有建立持久连接的特定原因?可能还有其他方法,但它们真的取决于您的运行时设置(您是如何为您的Django应用程序提供服务的)。一种不同的方法可能是运行一个单独的进程,它建立与Arduino的持久连接,并侦听从Django发送的命令(可能通过Redis)。 – robertklep 2013-03-06 17:12:30
老实说,这只是个人喜好,当4x4 LED立方体刚刚在重置时关闭时,它看起来不太好。目前,django应用程序是从树莓派服务的,这是学校项目的一项要求。我会调查Redis,谢谢你的建议。 – Gybe 2013-03-06 17:47:31