python轮询机制控制led实例
我就废话不多说了,大家还是直接看代码吧!
#-*-coding:utf-8-*-
#File:ceshitianqi
importurllib2
importjson
importtime
importdatetime
importserial
importrandom
importos
importsys
APIKEY='ZPdLyl***='#改成你的APIKEY
ser=serial.Serial("/dev/ttyUSB2",9600,timeout=1)
defread(key):
ser.write(key)
print("output:"+key)
time.sleep(1)
response=ser.readall()
print(response)
print(type(response))
returnresponse
defhttp_put(key):
val=read(key)#获取Arduino的数据
CurTime=datetime.datetime.now()
url='http://api.heclouds.com/devices/**1/datapoints'
#values={'datastreams':[{"id":"temp","datapoints":[{"at":CurTime.isoformat(),"value":val}]}]}
print(type(val))
ifkey=="a":
values={'datastreams':[{"id":"humidity","datapoints":[{"at":CurTime.isoformat(),"value":val}]}]}
ifkey=="b":
values={'datastreams':[{"id":"temperature","datapoints":[{"at":CurTime.isoformat(),"value":val}]}]}
jdata=json.dumps(values)#对数据进行JSON格式化编码
#打印json内容
printjdata
request=urllib2.Request(url,jdata)
request.add_header('api-key',APIKEY)
request.get_method=lambda:'POST'#设置HTTP的访问方式
request=urllib2.urlopen(request)
returnrequest.read()
str=("a","b")
whileTrue:
foriinstr:
f=open('1.txt')
e=f.read()
ife=="1\n":
ser.write("c")
ife=="0\n":
ser.write("d")
f.close()
resp=http_put(i)
time.sleep(2)
轮询1.txt
1则点亮
0则关闭
补充知识:python笔记(轮询、长轮询)
一、轮询
views.py
fromflaskimportFlask,render_template,request,jsonify
app=Flask(__name__)
USERS={
'1':{'name':'贝贝','count':1},
'2':{'name':'小东北','count':0},
'3':{'name':'何伟明','count':0},
}
@app.route('/user/list')
defuser_list():
importtime
returnrender_template('user_list.html',users=USERS)
@app.route('/vote',methods=['POST'])
defvote():
uid=request.form.get('uid')
USERS[uid]['count']+=1
return"投票成功"
@app.route('/get/vote',methods=['GET'])
defget_vote():
returnjsonify(USERS)
if__name__=='__main__':
app.run(threaded=True)
html
Title {%forkey,valinusers.items()%} {{val.name}}({{val.count}}) {%endfor%}