【问题标题】:Cant receive Hex response from Imatic board无法从 Imatic 板接收十六进制响应
【发布时间】: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


【解决方案1】:

Netcat 正在等待 iMatic 板永远不会发送的 EOF 字符。这就解释了为什么 netcat 永远无法收到响应。

另一方面,我编写了一个 python 脚本(Python 2.7.6),它在向 iMatic 板发送特定指令后成功接收到数据。这里是:

import socket 
import binascii  

IPADDR = '192.168.1.4' 
PORTNUM = 3000 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect((IPADDR, PORTNUM)) 
data = '5801100000000069'.decode('hex') 
s.send(data) 
response= s.recv(8) #Buffer needs to be 8 for the fastest response without losing information 
print binascii.hexlify(response) 
s.close() 

您现在可以在没有路由器的情况下使用此板,并通过以太网电缆直接连接到任何计算机。

问候, 伯纳克斯。

【讨论】:

    猜你喜欢
    • 2014-09-01
    • 2012-06-11
    • 1970-01-01
    • 2013-02-19
    • 1970-01-01
    • 2017-11-13
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    相关资源
    最近更新 更多