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

时间:2018-05-17 11:38:02

标签: python python-3.x pyserial plotly-dash

我正在尝试使用Dash框架绘制使用pyserial从com端口接收的数据。该框架需要运行Web服务器。当我建立没有破折号的串行通信时,只需使用常规python它就可以正常工作,但是当我尝试使用Dash时,启动web-server并且(我猜)从那里运行代码我得到SerialException:无法打开端口' COM3':PermissionError(13,'访问被拒绝。',无,5)。

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

我是Dash和python的新手,所以我很感激有关如何使这项工作的任何提示

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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

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

和上一次提交删除了前两行之后的下一行:

app.scripts.config.serve_locally = True

因此可能会在需要重新加载的情况下进行处理(无论如何都不确定重新加载),但是我还没有对其进行足够的测试来理解。