Как отправить символ ASCII в программе на C # - PullRequest
1 голос
/ 03 декабря 2009

Чтобы моя программа на C # работала как интерфейс последовательного порта, мне нужно отправить «ENQ» и ожидать ответ «ACK».

Из того, что я понял в ответах на мои предыдущие вопросы на этом форуме, я думаю, что система ожидает, что я отправлю '5' и верну '6' (ASCII-эквиваленты ENQ и ACK).
Таким образом, вместо отправки строки «ENQ», я могу отправить символ «5»?

Спасибо за все ответы, которые указали, что '5' не является ASCII 5 в C #.
Хорошо, я сейчас читаю комментарии, попробую:

serialPort.Write(new byte[]{5},0,1);

Ответы [ 3 ]

3 голосов
/ 03 декабря 2009

Отправьте неподписанный байт через последовательный порт со значением 5.

Вам нужно будет проверить, подтвердить, но, вероятно, все будет без знака, так что вы можете получить 0-255 в качестве значений.

1 голос
/ 03 декабря 2009

Если вы используете объект SerialPort и метод WriteLine, попробуйте следующее:

SerialPort serialPort = ...;    
...    
string message = ((char) 5).ToString();
serialPort.WriteLine(message);

Чтобы обратиться к комментариям, вы можете изменить свойство SerialPort.NewLine на свой символ «конец передачи», который в данном случае может быть символом 5. Я разработал несколько машин, которые использовали ETX в качестве своего «конца» сообщения "персонажа. Если вы постоянно используете Write и вам нужно написать символ 5 для завершения вашего сообщения, рассмотрите этот маршрут.

0 голосов
/ 03 декабря 2009

Вы не можете отправить символ 5, в C # символы содержат 16-битный символ Unicode.

Вы можете отправить n беззнаковый байт со значением 5.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...