我正在尝试与具有串行COM端口的设备进行通信(使用RS232协议),该设备已连接到将连接转换为以太网的转换器盒。
我已成功连接到转换器盒(具有其自己的IP),并且已通过使用PuTTY通过telnet发送命令来与设备成功通信,该设备已用我已经处理过的各种数据对其进行了响应能够解析。
我已经通过创建一个新的TcpClient建立了连接,并且能够将字符串发送到设备,但是每次收到响应时,它始终是我研究过的“ ?? \ u0003”,发现\ uhhhh是Unicode转义协议。这使我感到困惑,因为我对所有内容都使用了ASCII编码。
public string TcpConnect(string cmd)
{
var client = new TcpClient();
//cmd = "ping";
Console.WriteLine("Connecting to server");
client.Connect("169.254.20.40", 23); //22 = ssh, 23 = telnet, 80 = http
Console.WriteLine("CONNECTED SUCCESSFULLY");
Stream tcpStream = client.GetStream();
ASCIIEncoding A = new ASCIIEncoding();
byte[] enable = A.GetBytes("enable" + Environment.NewLine);
byte[] connect = A.GetBytes("connect line 1" + Environment.NewLine);
byte[] ba = A.GetBytes(cmd);
Console.WriteLine("Transmitting.....");
tcpStream.Write(enable, 0, enable.Length);
tcpStream.Write(connect, 0, connect.Length);
tcpStream.Write(ba, 0, ba.Length);
byte[] responseBytes = new byte[4096];
int numBytesRead = tcpStream.Read(responseBytes, 0, responseBytes.Length);
var message = A.GetString(responseBytes, 0, numBytesRead);
Console.WriteLine("\nServer Closed.");
return message;
}
如果我将“ $ TEAA4B9 \ r \ n”作为消息传递,那么我期望“ $ TEA,086,040,031,000,3798”这一行与我所得到的相去甚远(即?? \ u0003)
答案 0 :(得分:0)
没关系了
开个玩笑!这是我的工作:我在底部的“ tcpStream.Read”行之前添加了“ System.Threading.Thread.Sleep(“ 1000”),现在它输出了我需要的数据。设备在第一个输出垃圾行(可能是握手,不确定),这就是将其存储到“消息”并返回之前的全部内容(没有足够的时间阅读,然后转到下一行代码)