我已经做了几年的web应用程序开发人员,现在正在使用Python和Robotics。在
我已经将pythontornado设置为基于javascript websocket命令运行。 这太棒了,移动马达,打开LED。没问题。在
我想做两件事。在
1)闪烁LED
2)使用超声波测距传感器,如果量程为<;X,则停止前进动作
我自己都知道如何做到。在
但是,我使用python的方式如下
在WS.py公司在
import tornado.httpserver
import tornado.websocket
import tornado.ioloop
import tornado.web
import time
# My Over python module
import tank
class WSHandler(tornado.websocket.WebSocketHandler):
def open(self):
print 'New connection was opened'
self.write_message("Welcome to my websocket!")
tank.init()
def on_message(self, message):
print 'Incoming message:', message
tank.run(message)
self.write_message("You said: " + message)
def on_close(self):
tank.end()
print 'Connection was closed...'
def check_origin(self, origin):
return True
application = tornado.web.Application([
(r'/ws', WSHandler),
])
if __name__ == "__main__":
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(8888)
tornado.ioloop.IOLoop.instance().start()
在坦克.py 进口零售物价指数作为gpio 导入时间
^{pr2}$注:坦克.py是摘要而不是实际代码。在
我的JS在Mouse Down上工作,用go调用python WS,Mouse up,call stop
就像我说的,效果很好
但是如果我在moveForward()方法上添加一个while循环来计算范围并在close时停止,那么我的WS将被绑定,而不会监听stop
同样,如果我运行一个方法来打开LED,sleeps,turn,sleeps,我的WS将无法监听任何命令。在
听起来你需要屈服于IOLoop,这样它就可以处理更多的输入,同时在“前进”中继续执行。在
如果需要在前进中的循环之间暂停,请执行以下操作:
从不使用“时间。睡觉“在Tornado回调或协同程序中,它会阻止整个进程的所有事件处理。使用IOLoop.add_超时,或“屈服”一般睡眠(n) “,而不是。在
相关问题 更多 >
编程相关推荐