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