再会,
这会很长。我正在尝试与“SainSmart iMatic with RJ45”板进行通信,该板与“SainSmart 16 通道 12V 继电器模块”一起使用。
基本上,我能够成功地向开发板发送十六进制命令,但在需要时无法收到来自开发板的响应。我这是什么意思?
我有一台带有 Ubuntu 14.04.4 LTS 的笔记本电脑,通过以太网直通电缆直接连接到主板(不再需要交叉类型)。我有这种网络的配置(只有两个设备)。imatic板的IP是固定的,192.168.1.4,端口3000。我的笔记本IP固定IP是192.168.1.2,子网掩码255.255.255.0,没有网关。
我在笔记本电脑中使用 netcat(在 TCP 协议模式下)在终端中以这种格式向板发送命令: echo '580112000000016C' | xxd -r -p | nc 192.168.1.4 3000 我怎么知道它有效?好吧,基本上来自辅助板的继电器已成功打开(“SainSmart 16-Channel 12V Relay Module”)。
有一个十六进制命令列表可以打开和关闭每个继电器。在前面的说明中,我告诉电路板打开 1 号继电器,让其他 15 个关闭。字符串'580112000000016C'用xxd从十六进制转换成二进制,然后发送到netcat。这部分有效。
唯一不起作用的指令是: echo '580113000000006C' | xxd -r -p | nc 192.168.1.4 3000 该指令只询问板子当前哪些继电器处于关闭或打开状态,期望得到以下格式的响应:28 01 00 00 00 XX XX HH(XX XX 16 位,每个位代表一个继电器状态,“ 1" 表示开启,"0" 表示关闭;HH 是之前所有数据的总和,表示它用作校验和)
我已经测试并证明,这不是董事会的问题。我用visual basic编写了一个代码,windows能够接收到板子的响应,但是我的ubuntu配置一定有问题。我已经禁用了我的防火墙,ufw。这不是以太网电缆的问题。我已经尝试过其他命令表示,例如: echo -n '5801100000000069' | xxd -r -p | 数控-v-n-w3 192.168.1.4 3000 | xxd 我已经使用 netcat 扫描了板上所有可用的端口,并且只有 3000 端口显示为可用,如制造商所述。虽然这似乎是一个网络配置问题,但在 Windows 中,我指定了与 ubuntu 中相同的 IP 和网络掩码。
我在这里想念什么?