Я пишу метод, который отправляет определенный пакет и получает ответ от электронного устройства.Я использую system.io.ports с rtsEnabled = true
.
Проблема в том, что при входе в приложение полученный пакет изменяется.Я отслеживаю то, что получено с использованием eltima и пакета, полученного eltima, и что приложение имеет два разных байта.
Приложение меняет каждый байт, который является двойным в шестнадцатеричном (например, FF или BB), на 3F.Вот что дает Eltima:
5b 00 00 09 32 13 31 33 35 36 31 39 31 30 30 38 32 35 00 01 ff 64 01 00 bb 0f 5d - Eltima
5B 00 00 09 32 13 31 33 35 30 32 37 31 30 30 38 32 35 00 01 3F 64 01 00 3F 04 5D --MyApplication
Вот мой код:
public string MakeSerialConnection(string COM, int baud, string dest)
{
SerialPort port = new SerialPort(COM, baud, Parity.None, 8, StopBits.One);
try
{
if (!(port.IsOpen))
{
string destination = dest;
//BUILD PACKET FOR SENDING
byte[] fullPacket = BuildPacket(destination);
port.Open();
port.RtsEnable = false;
port.Handshake = Handshake.None;
//SEND PACKET TO DEVICE
port.Write(fullPacket,0,9);
#region RECEIVE DATA FROM SERIAL
//MAKE PROCESS STOP FOR 5sec
Thread.Sleep(240);
port.RtsEnable = true;
Thread.Sleep(1000);
string reading = port.ReadExisting();
// int readingint = port.ReadByte();
port.Close();
port.Dispose();
return reading;
#endregion
}
else
{
return "";
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (port != null)
{
//port.Close();
if (port.IsOpen)
{
port.Close();
}
port.Dispose();
}
}
Пожалуйста, помогите мне выяснить, почему это происходит