python轮询机制控制led实例
作者:Neil-Yale 时间:2023-12-12 01:39:00
我就废话不多说了,大家还是直接看代码吧!
# -*- coding:utf-8 -*-
# File: ceshitianqi
import urllib2
import json
import time
import datetime
import serial
import random
import os
import sys
APIKEY = 'ZPdLyl***=' #改成你的APIKEY
ser=serial.Serial("/dev/ttyUSB2",9600,timeout=1)
def read(key):
ser.write(key)
print("output:"+key)
time.sleep(1)
response = ser.readall()
print(response)
print(type(response))
return response
def http_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))
if key== "a" :
values={'datastreams':[{"id":"humidity","datapoints":[{"at":CurTime.isoformat(),"value":val}]}]}
if key== "b" :
values={'datastreams':[{"id":"temperature","datapoints":[{"at":CurTime.isoformat(),"value":val}]}]}
jdata = json.dumps(values) # 对数据进行JSON格式化编码
#打印json内容
print jdata
request = urllib2.Request(url, jdata)
request.add_header('api-key', APIKEY)
request.get_method = lambda:'POST' # 设置HTTP的访问方式
request = urllib2.urlopen(request)
return request.read()
str = ("a","b")
while True:
for i in str:
f = open('1.txt')
e = f.read()
if e == "1\n":
ser.write("c")
if e == "0\n":
ser.write("d")
f.close()
resp = http_put(i)
time.sleep(2)
轮询1.txt
1则点亮
0则关闭
补充知识:python笔记(轮询、长轮询)
一、轮询
views.py
from flask import Flask,render_template,request,jsonify
app = Flask(__name__)
USERS = {
'1':{'name':'贝贝','count':1},
'2':{'name':'小东北','count':0},
'3':{'name':'何伟明','count':0},
}
@app.route('/user/list')
def user_list():
import time
return render_template('user_list.html',users=USERS)
@app.route('/vote',methods=['POST'])
def vote():
uid = request.form.get('uid')
USERS[uid]['count'] += 1
return "投票成功"
@app.route('/get/vote',methods=['GET'])
def get_vote():
return jsonify(USERS)
if __name__ == '__main__':
app.run(threaded=True)
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>Title</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
li{
cursor: pointer;
}
</style>
</head>
<body>
<ul id="userList">
{% for key,val in users.items() %}
<li uid="{{key}}">{{val.name}} ({{val.count}})</li>
{% endfor %}
</ul>
<script src="https://cdn.bootcss.com/jquery/3.3.0/jquery.min.js"></script>
<script>
$(function () {
$('#userList').on('dblclick','li',function () {
var uid = $(this).attr('uid');
$.ajax({
url:'/vote',
type:'POST',
data:{uid:uid},
success:function (arg) {
console.log(arg);
}
})
});
});
/*
获取投票信息
*/
function get_vote() {
$.ajax({
url:'/get/vote',
type:"GET",
dataType:'JSON',
success:function (arg) {
$('#userList').empty();
$.each(arg,function (k,v) {
var li = document.createElement('li');
li.setAttribute('uid',k);
li.innerText = v.name + "(" + v.count + ')' ;
$('#userList').append(li);
})
}
})
}
setInterval(get_vote,3000);
</script>
</body>
</html>
二、长轮询
views.py
from flask import Flask,render_template,request,jsonify,session
import uuid
import queue
app = Flask(__name__)
app.secret_key = 'asdfasdfasd'
USERS = {
'1':{'name':'贝贝','count':1},
'2':{'name':'小东北','count':0},
'3':{'name':'何伟明','count':0},
}
QUEQUE_DICT = {
}
@app.route('/user/list')
def user_list():
user_uuid = str(uuid.uuid4())
QUEQUE_DICT[user_uuid] = queue.Queue()
session['current_user_uuid'] = user_uuid
return render_template('user_list.html',users=USERS)
@app.route('/vote',methods=['POST'])
def vote():
uid = request.form.get('uid')
USERS[uid]['count'] += 1
for q in QUEQUE_DICT.values():
q.put(USERS)
return "投票成功"
@app.route('/get/vote',methods=['GET'])
def get_vote():
user_uuid = session['current_user_uuid']
q = QUEQUE_DICT[user_uuid]
ret = {'status':True,'data':None}
try:
users = q.get(timeout=5)
ret['data'] = users
except queue.Empty:
ret['status'] = False
return jsonify(ret)
if __name__ == '__main__':
app.run(threaded=True)
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>Title</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
li{
cursor: pointer;
}
</style>
</head>
<body>
<ul id="userList">
{% for key,val in users.items() %}
<li uid="{{key}}">{{val.name}} ({{val.count}})</li>
{% endfor %}
</ul>
<script src="https://cdn.bootcss.com/jquery/3.3.0/jquery.min.js"></script>
<script>
$(function () {
$('#userList').on('click','li',function () {
var uid = $(this).attr('uid');
$.ajax({
url:'/vote',
type:'POST',
data:{uid:uid},
success:function (arg) {
console.log(arg);
}
})
});
get_vote();
});
/*
获取投票信息
*/
function get_vote() {
$.ajax({
url:'/get/vote',
type:"GET",
dataType:'JSON',
success:function (arg) {
if(arg.status){
$('#userList').empty();
$.each(arg.data,function (k,v) {
var li = document.createElement('li');
li.setAttribute('uid',k);
li.innerText = v.name + "(" + v.count + ')' ;
$('#userList').append(li);
})
}
get_vote();
}
})
}
</script>
</body>
</html>
来源:https://blog.csdn.net/yalecaltech/article/details/79979722
标签:python,轮询,led
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Idea开发工具之SpringBoot整合JSP的过程
2023-06-14 19:50:23
![](https://img.aspxhome.com/file/2023/2/69272_0s.png)
如何防止页面中的敏感信息被提取
2008-05-04 11:59:00
Opera下cloneNode的bug
2007-11-23 11:40:00
python OpenCV实现答题卡识别判卷
2023-12-20 17:27:57
![](https://img.aspxhome.com/file/2023/0/127800_0s.jpg)
go语言实现二叉树的序例化与反序列化
2024-04-26 17:27:30
![](https://img.aspxhome.com/file/2023/2/134082_0s.webp)
Pycharm同步远程服务器调试的方法步骤
2023-04-27 18:34:53
![](https://img.aspxhome.com/file/2023/4/102904_0s.png)
Python如何把Spark数据写入ElasticSearch
2021-06-28 20:07:46
Python字符串函数strip()原理及用法详解
2021-12-01 12:08:12
Python如何自定义邻接表图类
2021-01-12 04:41:43
解决mysql ERROR 1017:Can't find file: '/xxx.frm' 错误
2024-01-13 18:57:43
Python 自动化处理Excel和Word实现自动办公
2021-06-07 06:41:16
![](https://img.aspxhome.com/file/2023/6/107106_0s.png)
很多人都是用下面的js刷新站IP和PV
2024-04-23 09:23:08
SQL实现相邻两行数据的加减乘除操作
2024-01-24 23:12:34
![](https://img.aspxhome.com/file/2023/6/118146_0s.jpg)
Oracle中字符串连接的实现方法
2024-01-15 11:59:24
Python3实现打格点算法的GPU加速实例详解
2022-05-26 23:20:30
![](https://img.aspxhome.com/file/2023/0/97710_0s.png)
Python实现注册登录功能
2023-09-07 22:24:50
python使用socket高效传输视频数据帧(连续发送图片)
2021-04-14 23:17:40
![](https://img.aspxhome.com/file/2023/9/130549_0s.png)
Python检测字符串中是否包含某字符集合中的字符
2023-09-08 10:44:30
sql server update 表的问题
2009-10-04 20:32:00
关于go语言编码需要放到src 文件夹下的问题
2023-07-03 07:34:00
![](https://img.aspxhome.com/file/2023/5/86305_0s.png)