Я пытаюсь записать формат команды через последовательный порт и ожидаю ответа.В процессе приема я получаю некоторый неизвестный шаблон данных вместе с тем, что записано в качестве команды, даже если я не пишу тот же шаблон или данные на другом конце.
Создание последовательного порта
port= new SerialPort(s, 9200, Parity.None, 8, StopBits.One);
Отправить и получить
public byte[] SendAndRecieve(COMMAND request)
{
Console.Write("\nSendAndRecieve\n");
Console.Write("\n\n");
byte retry = 0;
bool flag = false;
while (retry < 3)
{
/
Console.Write("\n Send&Recive retry {0} \n",retry);
WriteCommandAsByte(request.ToByteArray());
Stopwatch sw = new Stopwatch();
while (sw.Elapsed < TimeSpan.FromMilliseconds(3000))
{
if (readBuffer == null)
{
flag = true;
break;
}
}
if (flag)
break;
retry++;
}
return readBuffer;
}
Функция записи
public void WriteCommandAsByte(byte [] data)
{
try
{
Console.Write("\nWriting Data: ");
foreach (byte bt in data)
Console.Out.Write(" {0:x2}", bt);
Console.Write("\n\n");
port.DiscardOutBuffer();
port.Write(data, 0, data.Length);
port.Write("\n");
port.DiscardOutBuffer();
}
catch (System.IO.IOException e)
{
Console.WriteLine("WriteCommandAsByte Error");
}
}
Обработчик события полученных последовательных данных
private void Port_DataReceived(object sender,SerialDataReceivedEventArgs e)
{
Thread.Sleep(1000);
try
{
Console.WriteLine("\n Data Recieved\n");
int ByteToRead = port.BytesToRead;
readBuffer = new byte[ByteToRead];
port.Read(readBuffer, 0, readBuffer.Length);
port.DiscardInBuffer();
Console.WriteLine("\n Data: \n\n");
foreach (byte bt in readBuffer)
Console.Write(" {0:x2}", bt);
}catch(Exception ex)
{
//Handle exceptions
}
Данные запроса: Запись данных: 0101 01 00 00 01 00 31 40 c9
Ответ: Шаблон 5e 41 5e 41 5e 41 5e 40 5e и данные, которые я отправил 31 40c9
5e 41 5e 41 5e 41 5e 40 5e 40 5e 41 5e 40 31 40 c9 0d 0a 5e 41 5e 41 5e 41 5e 40 5e 40 5e 41 5e 40 3140 c9 0d 0a 5e 41 5e 41 5e 41 5e 40 5e 40 5e 41 5e 40 31 40 c9 0d 0a 5e 41 5e 41 5e 41 5e 40 5e 40 5e 41 5e 40 31 40 c9 0d 0a 5e 415e 41 5e 41 5e 40 5e 40 5e 41 5e 40 31 40 c9
Почему я получаю всея пишу вместе с неожиданными данными?