我正在做一个使用 Keyence 相机模块的项目,该模块可以扫描并确定物体的高度。这些数据必须传输到我的服务器。要通过/从 Keyence 传感器发送和接收命令,您需要使用通信单元,我们选择了 TCP/IP 模块 DL-EN1。根据模块的数据表,您可以使用交叉电缆将传感器连接到路由器或直接连接到计算机。我们选择第二个,因为我们不想弄乱客户端路由器端口来打开 TCP/IP 连接。
我们首先在 Windows 笔记本电脑上试用了传感器,keyence 提供了一个 IP 配置器(仅适用于 Windows),您可以在其中找到模块并更改 IP 地址并添加 TCP 端口(例如 64000),然后我们编写了一个简单的 Python 脚本,该脚本与此 IP 地址和端口连接并能够发送和接收数据。在 Windows 上一切都运行良好 - 即使使用交叉电缆,我们也找到了传感器并能够向其发送数据。
因为 ip-configurator 不存在于 ubuntu 中,所以我们必须手动添加它,问题就从这里开始了,当我手动配置 ip 地址并为这个 ip 地址打开一个 tcp 端口(使用 ufw 防火墙命令)时,运行 python 脚本时会被拒绝(端口已关闭?)
当我检查“ifconfig”时,我看到了传感器所连接的以太网端口上的 IP 地址,我尝试手动输入 IP 地址,还尝试了“仅本地链接”选项。当您运行命令“ufw status”时,它还显示 TCP 端口已为此 IP 地址打开。当我重新启动服务器时,它确实将 ufw 置于非活动状态(这可能是问题所在吗?我必须手动重新启动 ufw,但我认为当 ufw 处于非活动状态时,它只会让一切顺利进行,但我不确定我必须使用哪个端口,因为我没有像 Windows 程序中那样的此选项)
当我们在 Windows PC 上配置模块并将其连接到路由器时,我们可以从 ubuntu 服务器向其发送命令。但这不是我们想要的,我们需要交叉电缆连接,但当我们在 Windows PC 上配置传感器并将其插入 ubuntu 时,它不记得 IP 或端口,有人知道这里可能是什么问题吗?我是 ubuntu 和 TCP/IP 的新手,如果我在这里犯了一些错误,请原谅。服务器也连接到互联网,但我认为这不会带来任何问题(我们为通信模块添加了 2 个额外的以太网端口)
答案1
我遇到了同样的问题,尽管没有涉及 ufw。如果它能帮到你,我会把我的发现放在这个 repo 中:https://github.com/PsycleResearch/keyence-python
从您所说的情况来看,您确实已经设置了 IP,并且当您 ping 它时,您会收到响应?
可能是设备通信模式设置不正确。我们在使用 SR-750(条形码阅读器)时遇到了这个问题,它默认使用 RS-232(USB 通信)。不幸的是,更改它的唯一方法是通过 Windows 软件。
尝试对 IP 执行 nmap 以查找设备上是否有任何开放的端口。