0
我一直在更新這個全局變量是一個字符串數組時遇到問題。這個rfDataArray
應該是隨着射頻數據從另一個設備進入而更新的。現在,當我測試了這個而沒有發送任何東西到雲服務器,它的工作原理(rfDataArray
得到更新頻繁的數據發送),但只要我開始發送數據,rfDataArray
數組似乎是停留在最初的數組,不會再次更新過...發送數據到雲服務器後變量不更新
import httplib, urllib
import time, sys
import serial
key = 'MY_API_KEY'
rfDataArray = []
rfWaterLevelVal = 0
ser = serial.Serial('/dev/ttyUSB0',9600)
def rfWaterLevel():
global rfWaterLevelVal
global rfDataArray
rfDataArray = ser.readline().strip().split()
print 'incoming: %s' %rfDataArray
if len(rfDataArray) == 5:
rfWaterLevelVal = float(rfDataArray[4])
print 'RFWater Level1: %.3f cm' % (rfWaterLevelVal)
def sendRFWaterlevel():
params = urllib.urlencode({'field1':rfWaterLevelVal, 'key':key})
headers = {"Content-type": "application/x-www-form-urlencoded",
"Accept": "text/plain"}
conn = httplib.HTTPConnection("api.thingspeak.com:80", timeout = 5)
conn.request("POST", "/update", params, headers)
print 'RFWater Level2: %.3f cm' % (rfWaterLevelVal)
response = conn.getresponse()
print response.status, response.reason
data = response.read()
conn.close()
while True:
try:
rfWaterLevel()
time.sleep(1)
sendRFWaterlevel()
time.sleep(3)
except KeyboardInterrupt:
print "caught keyboard interrupt"
sys.exit()
我需要更新rfDataArray
變量(所以rfWaterlevelVal
更新發送到雲服務器)。
你能否給我指出如何應用這兩種潛在解決方案? – Verglas
[這裏是一個簡單的堆棧溢出解決方案](http://stackoverflow.com/questions/1239035/asynchronous-method-call-in-python)異步調用。 [Here]是用於Synchronous調用的Python文檔(https://docs.python.org/3/library/asyncio-sync.html) – rt88