我也在 Arduino 部分发布了这个,但这个问题可能更多是由于我对 nanomsg 和一般连接的无知而不是 Arduino 问题。
我正在尝试与使用nanomsg通过 TCP 在使用 Arduino 的端口上进行通信的服务器进行通信。我尝试了各种不同的配置(使用不同的 nanomsg 工具远程连接到 arduino 并使 arduino 连接到服务器)。
我可以让 Arduino 在服务器模式下(运行 WiFiWebServer 示例的略微修改版本)成功读取我使用 cat 发送的文本
sudo cat texttosend > /dev/tcp/192.168.1.50/80
然而,在所有配置中,无论我尝试使用 nanomsg 发送什么文本,我总是得到一串相同数字的字符串。从arduino将字节打印为十六进制,它们是0 53 50 0 0 51 0 0。Nanocat(nanomsg的简单命令行工具)挂起而不是发送和关闭(就像它在发送之前不断尝试确认连接数据)。
我假设这是Arduino失败的某种握手,因为客户端连接,读取这些字节,然后关闭并重新启动。在两端(从我的本地计算机到服务器)使用 nanomsg 可以正常工作。
如果我得到的这些数字是握手,我该如何完成呢?
Arduino代码循环部分的内容是
client = server.available();
if (client) {
Serial.println("new client");
while (client.connected()) {
while (client.available()) {
byte b = client.read();
Serial.print(b,HEX);
Serial.write(b);
}
}
}
尝试连接时挂起的 nanocat 命令是
nanocat --push --connect tcp://192.168.1.50:80 --data thismesadsfsdfg