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%}