我有一個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的值?
將其存儲到數據庫或服務器上的文件中。 –
使方法'返回[servostat,m]',然後改變方法,使它有一個參數,你從前面的調用中通過'm' – sshashank124
@ sshashank124聽起來像個好主意! – yvonnezoe