Numato以太网中继模块telnet c#



我正在创建一个windows桌面应用程序(c#),并试图发送telnet命令,以在单击" on "时切换以太网中继开关。按钮。问题是当我点击按钮时什么也没发生。

*IP: 192.168.1.1

UN: samp

PW: samp*

string command = "relay on 1";

client.Send(Encoding.GetEncoding(command).GetBytes("u" + 'n'));

我准备尝试上面的代码,但没有任何反应。

这是我想转换为c#的原始java代码。

String relayNumber = "2"; //Change the Relay Number here when required
byte[] data = new byte[256];
data = new byte[256];
data = (new String("relay off " + relayNumber + "rn")).getBytes("UTF-8");
System.out.println("Info: Command sent to relay on " + relayNumber);
outstr.write(data, 0, data.length);

如果您想创建一个格式为

的UTF-8编码的命令字符串

relay {on|off} {relayNumber}

你可以这样写:

public static byte[] GetRelayCommandBytes(bool onoff, int relayNumber) 
{
return System.Text.Encoding.UTF8.GetBytes($"relay {(onoff?"on":"off")} {relayNumber}");
}

我仍然对你在问题中提到的IP地址持怀疑态度。192.168.1.1是一个比较常见的路由器。


另一个错误来源可能是您正在使用的客户端类型及其设置方式。遗憾的是,到写这篇文章的时候,这个信息还不在问题之列。


我真的不想不尊重,但是给你代码的人可能会重新考虑他的人生选择:

String relayNumber = "2"; //Change the Relay Number here when required
byte[] data = new byte[256]; // <- 1. declaration and assignment of array.
data = new byte[256]; // <- 2. assignment of array!! Why??
// vv- 3. assignment, making the prior 2 completely senseless.
data = (new String("relay off " + relayNumber + "rn")).getBytes("UTF-8");
//      ^- my Java is rusty, but I am pretty confident, `new String` is not the best of ideas.
System.out.println("Info: Command sent to relay on " + relayNumber);
// => "Logging" successful transmission, when it didn't even write, yet.
outstr.write(data, 0, data.length);

我只是为你剖析一下,这样你就可以自己做出明智的决定,决定你是否需要自己研究如何与设备对话,而不是依赖于"质量"的代码。作为模板。

相关内容

  • 没有找到相关文章

最新更新