【发布时间】:2016-06-05 15:17:38
【问题描述】:
早安,
这会很长。我正在尝试与“SainSmart iMatic with RJ45”板进行通信,该板与“SainSmart 16-Channel 12V Relay Module”一起使用。
基本上,我可以成功地向开发板发送十六进制命令,但在需要时无法收到开发板的响应。这是什么意思?
我有一台装有 Ubuntu 14.04.4 LTS 的笔记本电脑,通过以太网直通电缆直接连接到主板(不再需要交叉类型)。我有这种网络的配置(只有两个设备)。 imatic板的IP是固定的,192.168.1.4,端口3000。我的笔记本IP固定IP是192.168.1.2,子网掩码255.255.255.0,没有网关。
我在笔记本电脑中使用 netcat(在 TCP 协议模式下)在终端中以这种格式向开发板发送命令: 回显'580112000000016C' | xxd -r -p |数控 192.168.1.4 3000 我怎么知道它有效?嗯,基本上副板上的继电器都成功打开了(“SainSmart 16-Channel 12V Relay Module”)。
有一个十六进制命令列表可以打开和关闭每个继电器。在前面的说明中,我告诉电路板打开 1 号继电器,让其他 15 个关闭。字符串'580112000000016C'用xxd从十六进制转换成二进制,然后发送到netcat。这部分有效。
唯一不起作用的指令是这个: 回显'580113000000006C' | xxd -r -p |数控 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 和网络掩码。
我在这里错过了什么?
【问题讨论】:
-
您好,我正在尝试用 C++ 控制电路板,但找不到用于打开/关闭继电器的十六进制命令列表。我的电路板有 16 个继电器。我试图阅读手册,但没有找到任何包含命令的参考表。你能帮帮我吗?
-
您好,这里不可能全部列出,但我会发布链接。您将看到从以下开始的整个列表:“580112000000016C”,
-
这里还有一个链接:amazon.de/review/R1UPGUYFD5W15
-
非常感谢!由于我需要使用C++来控制板子,我只需要打开一个TCP连接并发送一个带有“580112000000016C”的数据包(或列表中的任何其他命令)来打开/关闭继电器?
标签: ubuntu-14.04 netcat hexdump xxd