我正在尝试使用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的新手,所以我很感激有关如何使这项工作的任何提示
答案 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
因此可能会在需要重新加载的情况下进行处理(无论如何都不确定重新加载),但是我还没有对其进行足够的测试来理解。