Как мне преобразовать ctrl+z в строку?
ctrl+z
Я отправляю это как AT-КОМАНДУ на подключенное к этому устройству устройство.
По сути, я просто ставлю некоторые символыв строке и ctrl+z в этой строке
Вы можете встроить любой символ Unicode с помощью \u escape:
\u
"this ends with ctrl-z \u001A"
Попробуйте следующее будет работать для вас
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/
byte[] buffer = new byte[1]; buffer[0] = 26; // ^Z modemPort.Write(buffer, offset:0, count:1);
Из других ответов ясно, что Ctrl + Z имеет код ASCII 26;обычно комбинации Ctrl + [буква] имеют код ASCII, равный 1+ [буква] - 'A', т.е. Ctrl + A имеет код ASCII 1 (\ x01 или \ u0001), Ctrl + B имеет код ASCII 2 и т. д.
При отправке символов на устройство требуется перевод из внутреннего строкового представления.Это известно как Encoding - кодировщик преобразует строку в байтовый массив.
Encoding
Обращаясь к Индексу имен символов Unicode , мы находим символ SUBSTITUTE - 0x001Aв разделе C0 Controls and Basic Latin (пунктуация ASCII).Чтобы добавить CTRL-Z к внутренней строке C #, добавьте код escape-последовательности Unicode (\u001a).
SUBSTITUTE - 0x001A
C0 Controls and Basic Latin
CTRL-Z
\u001a
String ctrlz = "\u001a"; String atcmd = "AT C5\u001a";
Любая кодировка, используемая для перевода перед выводом на устройство(например, вывод с использованием StringWriter), переведет это в ASCII Ctrl-Z.
StringWriter