Я пытаюсь установить связь с устройством с выходным последовательным COM-портом (по протоколу RS232), которое я подключил к блоку преобразователя, который преобразует соединение с Ethernet.
Я успешно подключился к конвертеру (который имеет собственный IP-адрес) и успешно установил связь с устройством, отправив ему команды через telnet с помощью PuTTY, на который оно ответило различными данными, которые я удалось разобрать.
Я установил соединение, создав новый 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)