Ich habe Probleme mit der Aktualisierung dieser globalen Variablen, die ein Array von Strings ist. Diese rfDataArray
soll aktualisiert werden, da die RF-Daten von einem anderen Gerät kommen. Nun, wenn ich diese ohne Senden von etwas zu den Cloud-Servern getestet habe, funktioniert es (die rfDataArray
wird aktualisiert, so oft wie die Daten gesendet werden), aber sobald ich mit dem Senden der Daten zu starten, scheint die rfDataArray
Array zu sein bei der ersten Array steckt und nicht immer wieder ...Variable wird nicht aktualisiert, nachdem Daten an Cloud-Server gesendet wurden
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()
ich die rfDataArray
Variable aktualisieren muß aktualisiert wird erhalten (so wird die rfWaterlevelVal
aktualisiert, um den Cloud-Server zu senden über).
Könnten Sie mir vielleicht Hinweise geben, wie Sie diese beiden möglichen Lösungen anwenden können? – Verglas
[Hier ist eine einfache Stack Overflow-Lösung] (http://stackoverflow.com/questions/1239035/asynchronous-method-call-in-python) für asynchrone Aufrufe. [Hier] ist Python-Dokumentation für synchrone Aufrufe (https://docs.python.org/3/library/asyncio-sync.html) – rt88