javascript - 在 Flask 中使用 .getJSON 请求时仅运行一次命令

标签 javascript python ajax flask

我正在尝试制作一个 Web 界面,使用 Pyserial 显示 Arduino 的串行输出。我正在使用 Ajax ($.getJSON) 来更新我的 HTML 字符串。

我现在遇到的问题是,每次我请求 JSON 数据时,它也会初始化我的 ser = serial.Serial('/dev/cu.wchusbserialfa140',9600),这使得查询速度慢并禁止串行输出的实时更新。

我的代码如下:

我尽力只执行 serial.Serial() 一次。

@app.before_request
def before_request():
    g.status = False


@app.route('/')
def template():
    return render_template('index.html')


@app.route('/result')
def serial_monitor():   
    #connect to serial port for once
    if g.status == False:
        ser = serial.Serial('/dev/cu.wchusbserialfa140',9600)
        g.status = True
        result = str(ser.readline())
        voltage = {'value':result}
    else:
        result = str(ser.readline())
        voltage = {'value':result}
    return jsonify(voltage)

我的 JavaScript: 我正在使用 setInterval 自动重复它。

$.getJSON($SCRIPT_ROOT + '/result', function(data)
    {$('#voltage').text(data.value);});

我一直在努力学习制作我的小网络界面,Stackoverflow 给了我很大的帮助。我已经搜索并努力解决这个问题,但我认为现在值得伸出援手。 提前谢谢大家!!

<小时/>

编辑:

我对它进行了一些修改,让它做我现在想做的事情。 但是,我计划在运行 serial.Serial 行之前使用表单从用户获取端口值。我仍在查看 session /全局变量路线。

global ser
ser = serial.Serial('port',9600)    


@app.route('/')
def template(): 
    return render_template('index.html')


@app.route('/result')
def serial_monitor():   
    result = str(ser.readline())
    voltage = {'value':result}
    return jsonify(voltage)

最佳答案

以下是我找到的解决方案。

通过正确设置全局变量状态(在函数内部),我现在可以只运行一次任何代码。

@app.route('/')
def template():
    return render_template('index.html')

status = False
@app.route('/result')
def serial_monitor():   
    global status
    #connect to serial port for once
    if status== False:
        ser = serial.Serial('/dev/cu.wchusbserialfa140',9600)
        status = True

    result = str(ser.readline())
    voltage = {'value':result}
    return jsonify(voltage)

关于javascript - 在 Flask 中使用 .getJSON 请求时仅运行一次命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37092591/

相关文章:

javascript - 当我使用 js src 从 php 页面获取内容时,Google 不会在搜索结果中显示我的页面

php - TinyMCE SCRIPT5 : Access is denied. 同一域上的典型跨域错误

javascript - 有没有办法将输入标签的 id 作为 onclick 函数参数传递,而无需在 JSX 中实际写入 id 值?

javascript - 如何响应 XMLHttpRequest

python - 获得程序的完整结构?

jquery - $.ajax仅在放置alert()时才起作用

javascript - 如何使用 `ArrayBuffer` 从 `bytes` 生成 `js_of_ocaml`

JavaScript/jQuery 在两个 iframe 之间拖放元素

javascript - Kendo 编辑器 -thumbnailUrl 的功能不起作用

python - 如何在多线程环境中使用requests-html渲染异步页面?