网络编程
位置:首页>> 网络编程>> Python编程>> python轮询机制控制led实例

python轮询机制控制led实例

作者:Neil-Yale  发布时间:2023-12-12 01:39:00 

标签:python,轮询,led

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


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

来源:https://blog.csdn.net/yalecaltech/article/details/79979722

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com