Так что у меня есть этот код, который постоянно получает данные через RF-приемник.request() в python, похоже, блокирует обновление переменной, которую я хочу отправить в моем коде
key = 'my api key'
ser = serial.Serial('/dev/ttyUSB0',9600)
def rfWaterLevel():
rfWaterLevelArray = ser.readline().strip().split()
if len(rfWaterLevelArray) == 5:
rfWaterLevelVal = float(rfWaterLevelArray[4])
params = urllib.urlencode({'field1':rfWaterLevelVal, 'key':key})
headers = {"Content-typZZe" : "application/x-www-form-urlencoded","Accept":"text/plain"}
conn = httplib.HTTPConnection("api.thingspeak.com:80")
conn.request("POST", "/update", params, headers)
response = conn.getresponse()
data = response.read()
conn.close()
while True:
try:
rfWaterLevel()
time.sleep(3)
except KeyboardInterrupt:
print "caught keyboard interrupt"
sys.exit()
С точки зрения отправки данных и обновления thingspeak его работы. Однако есть большой недостаток. Переменная rfWaterLevelVal, которая отправляется, не обновляется вообще в соответствии с полученными данными. Таким образом, если изначально полученные rf-данные равны 30, что делает rfWaterLevelVal 30, то следующий раунд данных равен 40, отправляемые данные все еще застревают на 30.
Я попытался прокомментировать код по очереди, чтобы узнать, что такое что делает это произошло, и кажется, что это «заморозить» в обновлении rfWaterLevelVal переменной rfWaterLevelArray & происходит на линии ...
conn.request("POST", "/update", params, headers)
любую помощь о том, почему мой rfWaterLevelArray или rfWaterLevelVal переменная не обновляется вообще после этого код запускается один раз?
Заранее благодарен!
Не ответ, но заголовок Content-Type имеет опечатку. – Garett
Предложение: вместо того, чтобы комментировать строки, которые меняют программу, вставляйте операторы печати. Представленный вами код не может запускаться и не имеет большого смысла. Эти переменные не определены: 'ser, rfWaterLevelTemp, key'. Вы используете 'rfWaterLevel' как имя функции и имя локальной переменной (а не ошибку, но плохой стиль). Переменная 'data' никогда не используется (а не ошибка, но бессмысленно). –
Попробуйте 'conn = httplib.HTTPConnection (" api.thingspeak.com:80 ", timeout = 5)', чтобы подтвердить, что время ожидания запроса и 'headers' должны заканчиваться на'} '. – shiva