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中bisect模块用法实例
Sep 25 Python
初学Python函数的笔记整理
Apr 07 Python
Python操作Word批量生成文章的方法
Jul 28 Python
Python文件与文件夹常见基本操作总结
Sep 19 Python
numpy实现合并多维矩阵、list的扩展方法
May 08 Python
python xpath获取页面注释的方法
Jan 14 Python
利用Python查看微信共同好友功能的实现代码
Apr 24 Python
Python数据类型之Dict字典实例详解
May 07 Python
对Django中内置的User模型实例详解
Aug 16 Python
浅析PEP570新语法: 只接受位置参数
Oct 15 Python
详解如何使用Pytest进行自动化测试
Jan 14 Python
python自动化八大定位元素讲解
Jul 09 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
汉字转化为拼音(php版)
2006/10/09 PHP
简单的移动设备检测PHP脚本代码
2011/02/19 PHP
PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
2013/04/08 PHP
JoshChen_php新手进阶高手不可或缺的规范介绍
2013/08/16 PHP
腾讯CMEM的PHP扩展编译安装方法
2015/09/25 PHP
jquery的flexigrid无法显示数据提示获取到数据
2013/07/19 Javascript
nodejs中实现阻塞实例
2015/03/24 NodeJs
不得不分享的JavaScript常用方法函数集(上)
2015/12/23 Javascript
基于jquery实现多选下拉列表
2017/08/02 jQuery
json对象及数组键值的深度大小写转换问题详解
2018/03/30 Javascript
详解Node使用Puppeteer完成一次复杂的爬虫
2018/04/18 Javascript
Vue props 单向数据流的实现
2018/11/06 Javascript
在vue中使用setInterval的方法示例
2019/04/16 Javascript
浅谈vue中组件绑定事件时是否加.native
2019/11/09 Javascript
vue + node如何通过一个Txt文件批量生成MP3并压缩成Zip
2020/06/02 Javascript
python连接mysql并提交mysql事务示例
2014/03/05 Python
Python解析nginx日志文件
2015/05/11 Python
Python中字符串的处理技巧分享
2016/09/17 Python
Python实现括号匹配方法详解
2020/02/10 Python
Python坐标轴操作及设置代码实例
2020/06/04 Python
Selenium及python实现滚动操作多种方法
2020/07/21 Python
python 多进程和协程配合使用写入数据
2020/10/30 Python
J.Crew官网:美国知名休闲服装品牌
2017/05/19 全球购物
Turnbull & Asser官网:英国皇室御用的顶级定制衬衫
2019/01/31 全球购物
纽约和芝加哥当天送花:Ode à la Rose
2019/07/05 全球购物
SK-II神仙水美国官网:SK-II美国
2020/02/25 全球购物
Boolean b = new Boolean(“abcde”); 会编译错误码
2013/11/27 面试题
大学生职业生涯规划书模版
2013/12/30 职场文书
中学运动会广播稿
2014/01/19 职场文书
高三毕业寄语
2014/04/10 职场文书
羊脂球读书笔记
2015/06/30 职场文书
研究生学习计划书应该怎么写?
2019/09/10 职场文书
MYSQL数据库使用UTF-8中文编码乱码的解决办法
2021/05/26 MySQL
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
2022/02/12 Servers
深入讲解数据库中Decimal类型的使用以及实现方法
2022/02/15 MySQL
Golang 实现 WebSockets 之创建 WebSockets
2022/04/24 Golang