1
leavic 2017-08-22 12:56:01 +08:00
实时更新这一般是前段通过 js 的 ajax 动态更新的,和 flask 关系不大吧。
|
2
cassia 2017-08-22 13:09:06 +08:00
长连接 websocket
|
3
NoAnyLove 2017-08-22 13:15:07 +08:00
websocket 正解
|
4
but0n 2017-08-22 13:59:28 +08:00 via iPhone 1
|
7
kisscucci OP 我网上找不到 flask+pyserial 的案例,哪位大神提供一下给我吧
|
8
phy25 2017-08-22 20:13:18 +08:00 via Android
轮询的话直接在 Flask 的请求里面调 pyserial 就能做,不需要案例,用 WebSocket 的话可能麻烦点。
|
10
HoHoibin 2017-08-22 21:05:59 +08:00
二维码扫描器淘宝买的么
|
14
kisscucci OP |
16
but0n 2017-08-23 19:57:00 +08:00 1
这里 Flask 有两个 route:
- '/' : 返回页面 index.html - '/api/status': 通过串口通信获取数据并返回 json 数据 在 https://github.com/but0n/Avem_HUD/blob/master/static/scripts/canvas.js#L43#L51 通过 $.getJSON('api/status', (json) 获取数据。 至于数据实时更新, 这里通过单片机的串口中断实现的, 这个就属于我的另一个开源飞控项目: https://github.com/but0n/Avem 其中单片机串口中断处理函数: https://github.com/t01y/H0p3/blob/master/Software/libs/source/uart.c#L45#L62 这里定义了当单片机通过串口接收到 '$' 字符就会将最新的数据通过串口发送出去 在 flask 中 ser.write('$') st = ser.readline().replace('\00','').replace('\n','').replace('\r','').split('@') 解析数据 |
17
kisscucci OP @but0n 你好,参照你的项目给了我很大的帮助;最近在做一个扫描器的项目,遇到了一个问题就是 python 和 html 之间的通信建立不起来,代码如下:
#红外传感器 import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP) #16 进制库 import binascii #FLASK 框架 from flask import Flask, url_for, render_template, jsonify #实例化串口 import serial import time ser = serial.Serial('/dev/ttyUSB0', 9600, timeout = None) #一直等待 app = Flask(__name__) @app.route('/') def index(): return render_template('index.html') @app.route("/json/") def scan(channel): def order_list(): a = '7e 00 08 01 00 02 01 ab cd' #触发扫描器的指令 a_list = [] for i in a.split(): a_list.append(binascii.a2b_hex(i)) #转为 16 进制 return a_list ser.write(order_list()) #触发扫描 scandata = ser.readline() #读取数据 data = {"zhipinming": "brian","age": scandata,"has_car": False} return jsonify(data=data) #18 引脚的中断和边缘检测,发生改变时调用 scan 函数 #红外感应一次,扫描器工作一次 GPIO.add_event_detect(18, GPIO.FALLING, callback=scan) if __name__ == '__main__': app.run() 运行后提示错误: Traceback (most recent call last): File "/home/pi/Desktop/tgpscan/scan.py", line 35, in scan return jsonify(data=data) File "/usr/lib/python2.7/dist-packages/flask/json.py", line 234, in jsonify if current_app.config['JSONIFY_PRETTYPRINT_REGULAR'] \ File "/usr/lib/python2.7/dist-packages/werkzeug/local.py", line 338, in __getattr__ return getattr(self._get_current_object(), name) File "/usr/lib/python2.7/dist-packages/werkzeug/local.py", line 297, in _get_current_object return self.__local() File "/usr/lib/python2.7/dist-packages/flask/globals.py", line 34, in _find_app raise RuntimeError('working outside of application context') RuntimeError: working outside of application context |