侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

python轮询机制控制led实例

Python  /  管理员 发布于 7年前   456

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

# -*- coding:utf-8 -*- # File: ceshitianqi import urllib2import jsonimport timeimport datetimeimport serial import randomimport osimport sys APIKEY = 'ZPdLyl***=' #改成你的APIKEYser=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,jsonifyapp = 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,sessionimport uuidimport queueapp = 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 轮询执行某函数的2种方式
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客