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中列表生成式的用法
Mar 31 Python
Python与shell的3种交互方式介绍
Apr 11 Python
Python二分法搜索算法实例分析
May 11 Python
Linux下使用python自动修改本机网关代码分享
May 21 Python
Python全局变量用法实例分析
Jul 19 Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
Dec 14 Python
对Python的交互模式和直接运行.py文件的区别详解
Jun 29 Python
基于python实现文件加密功能
Jan 06 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
Feb 19 Python
使用python求解二次规划的问题
Feb 29 Python
Python3+selenium配置常见报错解决方案
Aug 28 Python
python如何读取.mtx文件
Apr 22 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
使用数据库保存session的方法
2006/10/09 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
2014/10/16 PHP
php中文繁体和简体相互转换的方法
2015/03/21 PHP
Symfony2学习笔记之系统路由详解
2016/03/17 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
2021/03/09 PHP
javascript拖拽上传类库DropzoneJS使用方法
2013/12/05 Javascript
jQuery实现返回顶部功能适合不支持js的浏览器
2014/08/19 Javascript
JavaScript更改原始对象valueOf的方法
2015/03/19 Javascript
简介JavaScript中Boolean.toSource()方法的使用
2015/06/05 Javascript
js实现点击切换TAB标签实例
2015/08/21 Javascript
JS实现从顶部下拉显示的带动画QQ客服特效代码
2015/10/24 Javascript
网页前端登录js按Enter回车键实现登陆的两种方法
2016/05/10 Javascript
Windows环境下npm install 报错: operation not permitted, rename的解决方法
2016/09/26 Javascript
JS匿名函数实例分析
2016/11/26 Javascript
使用vue构建移动应用实战代码
2017/08/02 Javascript
微信小程序 POST请求的实例详解
2017/09/29 Javascript
vue2 v-model/v-text 中使用过滤器的方法示例
2019/05/09 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
2019/06/07 Javascript
vue实现select下拉显示隐藏功能
2019/09/30 Javascript
详解Vue之计算属性
2020/06/20 Javascript
Antd下拉选择,自动匹配功能的实现
2020/10/24 Javascript
[43:35]EG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
windows下Virtualenvwrapper安装教程
2017/12/13 Python
python计算日期之间的放假日期
2018/06/05 Python
python使用tornado实现登录和登出
2018/07/28 Python
Python使用matplotlib绘制随机漫步图
2018/08/27 Python
在Pycharm中使用GitHub的方法步骤
2019/06/13 Python
Python-numpy实现灰度图像的分块和合并方式
2020/01/09 Python
苹果美国官方商城:Apple美国
2016/08/24 全球购物
TripAdvisor越南:全球领先的旅游网站
2017/09/21 全球购物
异步传递消息系统的作用
2016/05/01 面试题
党的群众路线教育实践活动个人对照检查材料(校长)
2014/11/05 职场文书
2016年猴年新春致辞
2015/08/01 职场文书
2019入党申请书格式
2019/06/25 职场文书
一文搞懂PHP中的抽象类和接口
2022/05/25 PHP
CentOS7设置ssh服务以及端口修改方式
2022/12/24 Servers