Всегда получать? из последовательного порта в С#

Я получаю несколько байтов, отправленных на виртуальный последовательный порт, эти байты поступают от микроконтроллера PIC, я использую ISIS для моделирования и C# для захвата и отображения этих байтов.

В C# я просто открываю виртуальный последовательный порт и читаю входящие данные.

SerialPort s = new SerialPort("COM2");
s.Open();

И когда я нажимаю на кнопку, выполняется метод, который содержит...

TextBox1.Text = s.BytesToRead.ToString(); //Displays the number of received Bytes.
TextBox2.Text = s.ReadExisting();

Язык, который я использую для PIC, — Proton.

Я просто отправляю то, что внутри PORTB.

PORTB = 10
HSerOut [PORTB]

Результатом всегда является "?".

HSerOut["Привет"] -> ?????

Что-нибудь, что я пропустил?


person Ali Bassam    schedule 27.04.2013    source источник
comment
? означает непечатаемый символ. Проверьте целочисленные значения, чтобы убедиться, что вы получаете ожидаемые значения. При встроенной разработке двоичные значения лучше текстовых. Также какой Endianness вы используете?   -  person    schedule 27.04.2013
comment
Вероятность того, что ваш фрагмент кода сработает, невелика. Вы должны позаботиться о настройках последовательного порта. Baudrate является важным параметром, который будет создавать символы, отличные от ASCII, если он установлен неправильно. Который будет производить вопросительные знаки.   -  person Hans Passant    schedule 27.04.2013


Ответы (1)


Если кто-либо получает странные символы через последовательный порт при обмене данными с микроконтроллером, убедитесь, что вы правильно указали Clock или XTAL, а также SPBRG для 9600 bauds. , используйте SPBRG = 23 и XTAL = 3.686

person Ali Bassam    schedule 11.05.2013