【问题标题】:How to make serial communication from python Dash server如何从 python Dash 服务器进行串行通信
【发布时间】:2018-05-17 11:38:01
【问题描述】:

我正在尝试使用 Dash 框架绘制从带有 pyserial 的 com 端口接收的数据。这个框架需要网络服务器才能运行。当我在没有破折号的情况下建立串行通信时,仅使用常规 python 它工作正常,但是当我尝试使用启动 Web 服务器并(我猜)从那里运行代码的 Dash 时,我得到 SerialException:无法打开端口“COM3”: PermissionError(13, '访问被拒绝。', None, 5).

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

总的来说,我是 Dash 和 python 的新手,所以我将不胜感激有关如何完成这项工作的任何提示

【问题讨论】:

  • sudo。这通常是权限不足造成的
  • 是的,我(有点)明白 Dash 创建的 web-server 没有使用串口的权限,但我该怎么办?如果它有助于我在 Windows 10 上工作

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


【解决方案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 在不禁用重新加载的情况下如何工作,但它们在导入语句之后还有其他代码:

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

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

app.scripts.config.serve_locally = True

这样可能在您需要重新加载的情况下处理它(不确定重新加载的作用),但我没有对其进行足够的测试以理解。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    相关资源
    最近更新 更多