Как отправить Ctrl + Z - PullRequest
7 голосов
/ 15 июня 2010

Как мне преобразовать ctrl+z в строку?

Я отправляю это как AT-КОМАНДУ на подключенное к этому устройству устройство.

По сути, я просто ставлю некоторые символыв строке и ctrl+z в этой строке

Ответы [ 5 ]

8 голосов
/ 15 июня 2010

Вы можете встроить любой символ Unicode с помощью \u escape:

"this ends with ctrl-z \u001A"
3 голосов
/ 15 июня 2010

Попробуйте следующее будет работать для вас

serialPort1.Write("Test message from coded program" + (char)26);

также попробуй, может у тебя получится

serialPort1.Write("Test message from coded program");
   SendKeys.Send("^(z)");

также проверьте: http://www.dreamincode.net/forums/topic/48708-sending-ctrl-z-through-serial/

3 голосов
/ 15 июня 2010
byte[] buffer = new byte[1];
buffer[0] = 26; // ^Z
modemPort.Write(buffer, offset:0, count:1);
2 голосов
/ 15 июня 2010

Из других ответов ясно, что Ctrl + Z имеет код ASCII 26;обычно комбинации Ctrl + [буква] имеют код ASCII, равный 1+ [буква] - 'A', т.е. Ctrl + A имеет код ASCII 1 (\ x01 или \ u0001), Ctrl + B имеет код ASCII 2 и т. д.

1 голос
/ 15 июня 2010

При отправке символов на устройство требуется перевод из внутреннего строкового представления.Это известно как Encoding - кодировщик преобразует строку в байтовый массив.

Обращаясь к Индексу имен символов Unicode , мы находим символ SUBSTITUTE - 0x001Aв разделе C0 Controls and Basic Latin (пунктуация ASCII).Чтобы добавить CTRL-Z к внутренней строке C #, добавьте код escape-последовательности Unicode (\u001a).

String ctrlz = "\u001a";
String atcmd = "AT C5\u001a";

Любая кодировка, используемая для перевода перед выводом на устройство(например, вывод с использованием StringWriter), переведет это в ASCII Ctrl-Z.

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