Pyro&WSGI Raspberry Pi

问题描述:

我目前正在研究一个可以控制我正在工作的机器人的web应用程序。出于某种原因,我无法让Pyro正常工作。看起来一切正常(没有错误),但当我点击网页上的按钮时,“服务器”中的方法从不会被调用。Pyro&WSGI Raspberry Pi

这里是我的“服务器代码”:

import Pyro.core 
import Pyro.naming 
from rrb2 import * 

class Robot(Pyro.core.ObjBase): 

    def _setup(self): 
      rr = RRB2() 
      print "SETUP" 
    def ledOneOn(): 
      rr.set_led1(1) 
      print "LED ONE ONE" 
    def ledOneOff(): 
      rr.set_led1(0) 
      print "LED ONE OFF" 
    def ledTwoOn(): 
      rr.set_led2(1) 
      print "LED TWO ON" 
    def ledTwoOff(): 
      rr.set_led2(0) 
      print "LED TWO OFF" 
    def forward(): 
      rr.forward() 
      print "FORWARD" 
    def stop(): 
      rr.stop() 
      print "STOP" 
    def __init__(self): 
      Pyro.core.ObjBase.__init__(self) 
      self._setup() 

if __name__ == "__main__": 
    # Create a Pyro server and register our module with it 
    Pyro.core.initServer() 
    ns = Pyro.naming.NameServerLocator().getNS() 
    daemon = Pyro.core.Daemon() 
    daemon.useNameServer(ns) 
    uri = daemon.connect(Robot(),"robot") 
    daemon.requestLoop() 

我知道机器人()班正在设置的,因为我看到的输出,但没有其他方法写的输出。

这里是我的“客户端代码”该网页呼吁:

import Pyro.core 
from cgi import parse_qs 

def application(environ, start_response): 
    robot = Pyro.core.getProxyForURI("PYRONAME://robot") 
    parameters = parse_qs(environ['QUERY_STRING']) 

    if 'command' in parameters: 
      command = parameters['command'][0] 

      if 'command' == 'ledOneOn': 
        robot.ledOneOn() 
      elif 'command' == 'ledTwoOn': 
        robot.ledTwoOn() 

      status = '200 OK' 
    else: 
      status = '400 Bad Request' 

    response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(status)))] 
    start_response(status, response_headers) 

    return [status] 

我已经验证了机器人被设定为URI和参数变量包含正确的信息。代码正在流向'if'语句。但是在Robot()类中调用安装之后,没有任何方法正在被调用。有没有人有任何想法?

+0

您是否在服务器上记录异常?服务器进程是否具有系统用户权限来设置GPIO引脚? –

+0

是的,我通过Apache登录他们,我什么也没看到。脚本以系统的形式运行。我让他们通过rc.local启动。 – QuantumPhysGuy

看起来你正在使用不再支持的Pyro版本3.它的最后一个版本是3年前。如果可以,我可以建议升级到Pyro4吗?