如何从 python Dash 服务器进行串行通信

How to make serial communication from python Dash server

我正在尝试使用 Dash 框架通过 pyserial 绘制从 com 端口接收的数据。此框架需要网络服务器 运行。当我在没有破折号的情况下建立串行通信时,仅使用常规 python 它工作正常,但是当我尝试使用 Dash 时,它启动网络服务器和(我猜)运行s 代码从那里我得到 SerialException : 无法打开端口 'COM3':PermissionError(13, 'Access is denied.', None, 5)。

对于 Dash 框架,我遵循了这个教程:https://www.youtube.com/watch?v=37Zj955LFT0&list=PLQVvvaa0QuDfsGImWNt1eUEveHOepkjqt&index=4

一般来说,我是 Dash 和 python 的新手,所以我将不胜感激关于如何使这项工作的任何提示

我遇到了同样的问题,关闭调试模式为我解决了这个问题:

if __name__ == '__main__':
    app.run_server(debug=False)

但是,当调试模式关闭时,应用程序会在启动时重新加载并尝试再次打开串行端口(当它已经打开时)。所以我将 use_reloader 更改为 False,事实证明你可以像这样将它保持在调试模式(或不):

if __name__ == '__main__':
    app.run_server(debug=True, use_reloader=False)

我不确定某些 official examples 在不禁用重新加载的情况下如何工作,但它们在导入语句之后还有其他代码:

app = dash.Dash(__name__)
server = app.server

并且之前的提交删除了前两行之后的以下行:

app.scripts.config.serve_locally = True

所以 可能 在需要重新加载的情况下处理它(不知道重新加载到底做了什么),但我还没有足够的测试来理解它。