python轮询机制控制led实例


Posted in Python onMay 03, 2020

我就废话不多说了,大家还是直接看代码吧!

# -*- 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>

以上这篇python轮询机制控制led实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用基于Python的Tornado框架的HTTP客户端的教程
Apr 24 Python
python使用in操作符时元组和数组的区别分析
May 19 Python
Python工程师面试必备25条知识点
Jan 17 Python
python如何在循环引用中管理内存
Mar 20 Python
Python实现绘制双柱状图并显示数值功能示例
Jun 23 Python
python实现单链表中删除倒数第K个节点的方法
Sep 28 Python
详解Python 正则表达式模块
Nov 05 Python
详解python中init方法和随机数方法
Mar 13 Python
keras的load_model实现加载含有参数的自定义模型
Jun 22 Python
PyCharm最新激活码PyCharm2020.2.3有效
Nov 18 Python
Python request post上传文件常见要点
Nov 20 Python
python 实现汉诺塔游戏
Nov 28 Python
python 轮询执行某函数的2种方式
May 03 #Python
在Sublime Editor中配置Python环境的详细教程
May 03 #Python
Python 将 QQ 好友头像生成祝福语的实现代码
May 03 #Python
Python使用pdb调试代码的技巧
May 03 #Python
如何在windows下安装Pycham2020软件(方法步骤详解)
May 03 #Python
Python使用多进程运行含有任意个参数的函数
May 02 #Python
python多进程使用函数封装实例
May 02 #Python
You might like
关于手调机和数调机的选择
2021/03/02 无线电
PHP 可阅读随机字符串代码
2010/05/26 PHP
jQuery 类twitter的文本字数限制带提示效果插件
2010/04/16 Javascript
深入分析js中的constructor和prototype
2012/04/07 Javascript
javascript学习笔记(七) js函数介绍
2012/06/19 Javascript
JS实现的5级联动Select下拉选择框实例
2015/08/17 Javascript
Jqprint实现页面打印
2017/01/06 Javascript
纯js模仿windows系统日历
2017/02/04 Javascript
详解Vue2 无限级分类(添加,删除,修改)
2017/03/07 Javascript
关于vue-router路径计算问题
2017/05/10 Javascript
jQuery取得元素标签名称小结(附代码)
2017/08/16 jQuery
JS解决IOS中拍照图片预览旋转90度BUG的问题
2017/09/13 Javascript
详解Node.js模板引擎Jade入门
2018/01/19 Javascript
在vue2.0中引用element-ui组件库的方法
2018/06/21 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
2019/01/08 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
2019/07/23 Javascript
使用webpack搭建vue环境的教程详解
2019/12/31 Javascript
vue中利用three.js实现全景图的完整示例
2020/12/07 Vue.js
基于Django用户认证系统详解
2018/02/21 Python
python实现数据导出到excel的示例--普通格式
2018/05/03 Python
python 脚本生成随机 字母 + 数字密码功能
2018/05/26 Python
python微信公众号之关键词自动回复
2018/06/15 Python
Django框架模板用法入门教程
2019/11/04 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
2020/02/28 Python
解决Keras自带数据集与预训练model下载太慢问题
2020/06/12 Python
如何用Java判断一个文件或目录是否存在
2012/11/19 面试题
商务日语毕业生自荐信范文
2013/11/14 职场文书
超市中秋节活动方案
2014/02/12 职场文书
会计电算化毕业生自荐信
2014/03/03 职场文书
八一建军节演讲稿
2014/09/10 职场文书
开展批评与自我批评心得体会
2014/10/17 职场文书
分居协议书范本(律师见证版)
2014/11/26 职场文书
小学生思想品德评语
2014/12/31 职场文书
光荣之路观后感
2015/06/12 职场文书
2015国庆66周年宣传语
2015/07/14 职场文书
2015年工会工作总结范文
2015/07/23 职场文书