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实现rsa算法代码
Feb 17 Python
Vue的el-scrollbar实现自定义滚动
May 29 Python
对python requests的content和text方法的区别详解
Oct 11 Python
django页面跳转问题及注意事项
Jul 18 Python
Win下PyInstaller 安装和使用教程
Dec 25 Python
python全局变量引用与修改过程解析
Jan 07 Python
200行python代码实现贪吃蛇游戏
Apr 24 Python
python中的测试框架
Nov 13 Python
Python实现中英文全文搜索的示例
Dec 04 Python
python实现发送QQ邮件(可加附件)
Dec 23 Python
python中操作文件的模块的方法总结
Feb 04 Python
Python中异常处理用法
Nov 27 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
Optimizer与Debugger兼容性问题的解决方法
2008/12/01 PHP
sql注入与转义的php函数代码
2013/06/17 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
使用jQuery中的wrap()函数操作HTML元素的教程
2016/05/24 Javascript
AngularJS入门教程之Select(选择框)详解
2016/07/27 Javascript
vue从使用到源码实现教程详解
2016/09/19 Javascript
web 前端常用组件之Layer弹出层组件
2016/09/22 Javascript
js转html实体的方法
2016/09/27 Javascript
vue.js初学入门教程(2)
2016/11/07 Javascript
jQuery实现限制文本框的输入长度
2017/01/11 Javascript
vue实现tab切换外加样式切换方法
2018/03/16 Javascript
详解vue-cli 构建项目 vue-cli请求后台接口 vue-cli使用axios、sass、swiper
2018/05/28 Javascript
vue+webpack中配置ESLint
2018/11/07 Javascript
jQuery中实现text()的方法
2019/04/04 jQuery
JS script脚本中async和defer区别详解
2020/06/24 Javascript
vue 使用async写数字动态加载效果案例
2020/07/18 Javascript
Python中的yield浅析
2014/06/16 Python
python+mongodb数据抓取详细介绍
2017/10/25 Python
Python搭建FTP服务器的方法示例
2018/01/19 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
2018/06/11 Python
详解Python下ftp上传文件linux服务器
2018/06/21 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
2020/03/30 Python
Python3将ipa包中的文件按大小排序
2020/04/17 Python
惠普新加坡官方商店:HP Singapore
2020/04/17 全球购物
一些Solaris面试题
2013/03/22 面试题
银行贷款承诺书
2014/03/29 职场文书
节电标语大全
2014/06/23 职场文书
学校志愿者活动总结
2014/06/27 职场文书
幼儿园六一亲子活动方案
2014/08/26 职场文书
企业总经理助理岗位职责
2014/09/12 职场文书
幼儿体育课教学反思
2016/02/16 职场文书
nginx实现发布静态资源的方法
2021/03/31 Servers
MySQL外键约束(FOREIGN KEY)案例讲解
2021/08/23 MySQL
2022微信温控新功能上线
2022/05/09 数码科技
html5+实现plus.io进行拍照和图片等获取
2022/06/01 HTML / CSS