Этот код:
void Controller::write(const std::string& str) {
std::cout << "Writing: [" << str << "] to board." << std::endl;
s.write(str);
берет строку
и передает ее по последовательному каналу связи с микроконтроллером. (Это прекрасно работает). Однако, когда я пытаюсь ввести такую команду: write ("ats203? \ R")
, вывод консоли выглядит следующим образом:
] to board.ts203?
Таким образом, Writing: [a
получает перезаписано ] на плату.
после того, как std :: cout
встречает \ r
в строке.
Как мне напечатать строку как набор символов, а не искажать вывод консоли, когда встречается escape-символ?
РЕДАКТИРОВАТЬ: Чтобы уточнить.
Я хочу, чтобы моя строка была ats203? \ R
.Это связано с тем, что микроконтроллер управляется с помощью слегка измененной версии AT-команды , а не принимает команду, пока не прочитает \ r
. Когда строка передается в микроконтроллер, он считывает \ r
как возврат каретки и воздействует на то, что было прочитано до \ r
.
Я хочу отобразить созданную мной строку. В другом месте существует множество других команд, которые создаются в зависимости от флагов, установленных во время выполнения. В итоге получаются строки, которые выглядят примерно так ate1 \ ratv0 \ rat + OSA = 7 \ rat + OSX = 255 \ r
.
Я хотел бы увидеть, что я сконструировал и к чему стремлюсь. Я не могу этого сделать, потому что std :: cout
считывает возврат каретки, воздействует на него и искажает мой вывод на консоль.
РЕДАКТИРОВАТЬ: Уточнение, еще раз:
Я хочу std :: cout для создания (когда
str
равно ats203? \ r
):
Writing: [ats203?\r] to board.