я подал заявку в C#, который отправляет 11 байт данных в последовательный порт, используя:Проблема с SerialPort в C# приложения
port = new SerialPort("COM1");
port.BaudRate = 9600;
port.DataBits = 8;
port.Parity = Parity.None;
port.StopBits = StopBits.One;
port.ReadTimeout = 1000;
port.WriteTimeout = 1000;
port.Open();
byte[] buffer = new byte[11];
buffer[0] = 0;
buffer[1] = 0;
buffer[2] = 0;
buffer[3] = 3;
buffer[4] = 2;
buffer[5] = 4;
buffer[6] = 1;
buffer[7] = 20;
buffer[8] = 50;
buffer[9] = 0;
buffer[10] = 120;
port.Write(buffer, 0, 11);
Затем я написал другое приложение, чтобы проверить предыдущую. Я хотел бы проверить, правильно ли отправлено 11 байтов. В этой заявке я использую:
using (SerialPort port = new SerialPort("COM1"))
{
// configure serial port
port.BaudRate = 9600;
port.DataBits = 8;
port.Parity = Parity.None;
port.StopBits = StopBits.One;
port.Open();
for (; ;)
{
byte[] b = new byte[11];
port.Read(b, 0, 11);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 11; ++i)
{
sb.Append(b[i]);
sb.Append(" ");
}
Console.WriteLine(sb.ToString());
}
}
для получения байтов. Проблема заключается в том, что после отправки что-то вроде этого:
0 0 0 3 2 4 1 20 50 0 120
я получаю:
0 0 0 0 0 0 0 0 0 0 0
0 0 3 2 1 4 20 50 0 120 0
Почему это происходит? Какая ошибка в моем коде? Спасибо
Если вы смотрите последовательный порт с HyperTerminal, он видит правильные 11 байтов? – mtrw
@mtrw Я отправил двоичные данные, а Hyper Terminal показывает их со странными символами. Есть ли способ конвертировать их в числовом формате? –
Извините, я пропустил ваш вопрос. Я не знаю, как заставить HyperTerminal обрабатывать двоичные данные, но такие инструменты, как PortMon (http://technet.microsoft.com/en-us/sysinternals/bb896644.aspx), полезны для этой ситуации. Во всяком случае, я рад, что ваша проблема, похоже, решена. – mtrw