2014-03-19 71 views
0

我有一個python函數,每次點擊web界面上的一個按鈕時,都會將伺服器向左或向右移動。目前,它的工作是這樣的:儘管多次調用函數,如何保持變量的值?

@cherrypy.expose 
def turnCamera (self, **data): 

    import pigpio 
    import time 

    servos=[4,7] #GPIO number 
    pigpio.start() 
    key = data['direction'] 
    if key=="left": 
      servostatus = "left" 
      print servostatus 
      m=1500 

    elif key=="right": 
      servostatus = "right" 
      print servostatus 
      m=1000 

    #to dispense pill 
    if key=="dispense": 
     m=900 
     pigpio.set_servo_pulsewidth(servos[0], m) 
     servostat= "Position of servo: %s"%m 
     print servostat 
     time.sleep(1) 
     m=1500 
     pigpio.set_servo_pulsewidth(servos[0], m) 
     servostat= "Position of servo: %s"%m 
     print servostat 
     time.sleep(1) 


    pigpio.stop() 

    return servostat 

的數據是從jQuery的發佈:

$('#left_button').click(function(){ 
         $.post('/turnCamera', {direction:"left"}).done(function (reply) { 
          $('#camerapos').empty().append(reply); 
          alert("left button clicked");}); 

        }); 
        $('#right_button').click(function(){ 
         $.post('/turnCamera', {direction:"right"}).done(function (reply) { 
          $('#camerapos').empty().append(reply); 
          alert("right button clicked");}); 
        }); 

但是我想伺服開啓,使得每一次點擊將它變成100。當腳本第一次運行時,它會到達初始位置m=1500。然後用戶可以通過點擊左側或右側來控制攝像頭的位置。事情是這樣的:

m=1500 
while (m >= 500 and m <= 2500): 
     if (key =="left"): 
      m=m+100 
     elif (key =="right"): 
      m=m-100 

然而,我明白,這是行不通的,因爲M將得到恢復到1500每次的功能被觸發(按鈕被點擊)。我如何存儲m的值?

+0

將其存儲到數據庫或服務器上的文件中。 –

+0

使方法'返回[servostat,m]',然後改變方法,使它有一個參數,你從前面的調用中通過'm' – sshashank124

+0

@ sshashank124聽起來像個好主意! – yvonnezoe

回答

0

可以使該方法

return [servostat, m]

,然後改變方法,使其具有這樣你在M通過從以前的電話就像def turnCamera(self, **data, m):

如下參數:

$('#left_button').click(function(){ 
       $.post('/turnCamera', {direction:"left",m_value:m}).done(function (reply) { 
        $('#camerapos').empty().append(reply); 
        alert("left button clicked");}); 
+0

但我應該在哪裏初始化m的值? – yvonnezoe

+0

@yvonnezoe,方法之外。可能在你的方法,調用'turnCamera' – sshashank124

+0

將在jQuery文章? – yvonnezoe

相關問題