栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

烧瓶中的pyserial读取串行端口(也许使用gevent)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

烧瓶中的pyserial读取串行端口(也许使用gevent)

回答我自己的问题

  1. 似乎确实只有Firefox暂时支持SSE的CORS-> article
  2. 在Janus Troelsen的帮助下,我弄清楚了如何保持连接打开并跨线发送多个条形码(请参见下面的代码)
  3. 从性能角度看,我只能建立一个连接,但这可能是因为我只有一个串行端口,后续的连接再也无法打开串行端口。我认为它可以在烧瓶中工作,但是使用socketio和gevents的东西会更好地执行,因为它更适合该工作。这里有一个有趣的文章在这里。

对于代码:

import flaskimport serialfrom time import sleepapp = flask.Flask(__name__)app.debug = Truedef event_barpre():    messageid = 0    ser = serial.Serial()    ser.port = 0    ser.baudrate = 9600    ser.bytesize = 8    ser.parity = serial.PARITY_NONE    ser.stopbits = serial.STOPBITS_ONE    ser.timeout = 0    try:        ser.open()    except serial.SerialException, e:         yield 'event:errorn' + 'data:' + 'Serial port error({0}): {1}nn'.format(e.errno, e.strerror)         messageid = messageid + 1    str_list = []    while True:        sleep(0.01)        nextchar = ser.read()        if nextchar: str_list.append(nextchar)        else: if len(str_list) > 0:     yield 'id:' + str(messageid) + 'n' + 'data:' + ''.join(str_list) + 'nn'     messageid = messageid + 1     str_list = []@app.route('/barpre')def barpre():    newresponse = flask.Response(event_barpre(), mimetype="text/event-stream")    newresponse.headers.add('Access-Control-Allow-Origin', '*')    newresponse.headers.add('Cache-Control', 'no-cache')    return newresponseif __name__ == '__main__':    app.run(port=8080, threaded=True)

因为我想支持多种浏览器,所以SSE暂时不适合我。我将研究websockets并尝试从中工作。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/626265.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号