python - 创建异步 modbus 服务器 python 问题
问题描述
我是 Python 新手,正在尝试使用 pymodbus 模块创建一个 modbus 服务器。我按照链接上的教程进行操作,但是当我运行脚本时出现错误:
$ python2.7 server1.py
INFO:pymodbus.server.async:Starting Modbus TCP Server on 192.168.1.100:502
Traceback (most recent call last):
File "server1.py", line 83, in <module>
StartTcpServer(context, address=("192.168.1.100", 502))
File "/home/pi/.local/lib/python2.7/site-packages/pymodbus/server/async.py",
line 255, in StartTcpServer
reactor.listenTCP(address[1], factory, interface=address[0])
File "/home/pi/.local/lib/python2.7/site-
packages/twisted/internet/posixbase.py", line 495, in listenTCP
p.startListening()
File "/home/pi/.local/lib/python2.7/site-packages/twisted/internet/tcp.py",
line 1363, in startListening
raise CannotListenError(self.interface, self.port, le)
twisted.internet.error.CannotListenError: Couldn't listen on
192.168.1.100:502: [Errno 13] Permission denied.
任何人都可以帮助我解决我的问题,在此先感谢。
[更新]:
$ sudo python2.7 server1.py
Traceback (most recent call last):
File "server1.py", line 12, in <module>
from pymodbus.server.async import StartTcpServer
ImportError: No module named pymodbus.server.async
$ python -V
Python 2.7.13
$ sudo python server1.py
Traceback (most recent call last):
File "server1.py", line 12, in <module>
from pymodbus.server.async import StartTcpServer
ImportError: No module named pymodbus.server.async
我已经尝试过“sudo”并出现错误,看起来当我使用“sudo”时模块不在正确的位置......
解决方案
sudo
经许可尝试:
$ sudo python2.7 server1.py
或者,如果您python
链接到Python 2.7,如下所示:
$ python -V
Python 2.7.14
那就试试吧:
$ sudo python server1.py
[更新]:
以下行结果必须相同:
$ which python
/usr/bin/python
$ sudo which python
/usr/bin/python
如果您的代码在同一台机器上运行,您可以使用localhost
或127.0.0.1
IP 代替机器 IP。
[注意]:
如果您的操作系统是基于*nix系统的,并且您有ufw
防火墙,请执行以下命令:
$ sudo ufw disable
[更新 2]:
处理这个错误ImportError: No module named pymodbus.server.async
你应该使用
import pymodbus.server.asynchronous
代替
import pymodbus.server.async
在新版本的pymodbus
库中。
推荐阅读
- excel - VBA 刷新数据透视表
- amazon-web-services - 使用 terraform 创建 aws_flow_log 时出现访问错误
- spring-boot - Rest api 任务的黑客等级类添加
- java - 创建一个将在对象上设置值、返回对象或使用传递的参数设置的方法?
- android - 在通知通道中启用声音按钮
- c++ - lower_bound() 返回最后一个元素
- symfony - 不翻译 Azure 翻译 API v2 上的某些单词
- parameters - Cucumber 并行执行 - 多数据的单一场景
- android - 如何使用警报对话框检查所有复选框?
- angular - 从反应形式 valueChanges 中删除空对象值