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
0
投稿

猜你喜欢

  • Idea开发工具之SpringBoot整合JSP的过程

    2023-06-14 19:50:23
  • 如何防止页面中的敏感信息被提取

    2008-05-04 11:59:00
  • Opera下cloneNode的bug

    2007-11-23 11:40:00
  • python OpenCV实现答题卡识别判卷

    2023-12-20 17:27:57
  • go语言实现二叉树的序例化与反序列化

    2024-04-26 17:27:30
  • Pycharm同步远程服务器调试的方法步骤

    2023-04-27 18:34:53
  • 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
  • 很多人都是用下面的js刷新站IP和PV

    2024-04-23 09:23:08
  • SQL实现相邻两行数据的加减乘除操作

    2024-01-24 23:12:34
  • Oracle中字符串连接的实现方法

    2024-01-15 11:59:24
  • Python3实现打格点算法的GPU加速实例详解

    2022-05-26 23:20:30
  • Python实现注册登录功能

    2023-09-07 22:24:50
  • python使用socket高效传输视频数据帧(连续发送图片)

    2021-04-14 23:17:40
  • Python检测字符串中是否包含某字符集合中的字符

    2023-09-08 10:44:30
  • sql server update 表的问题

    2009-10-04 20:32:00
  • 关于go语言编码需要放到src 文件夹下的问题

    2023-07-03 07:34:00
  • asp之家 网络编程 m.aspxhome.com