Как поместить пробелы в длинный последовательный ввод println()

У меня есть этот длинный, последовательный.println (), который в кавычках, в нескольких строках. Arduino IDE предупреждает: "Отсутствует завершающий символ". Я уверен, что есть способ разбить строки, заключив весь текст в кавычки, но я не помню, как это сделать.

Serial.println("
<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>
<svg
   xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" 
    xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" 
   id=\"svg8\" version=\"1.1\" viewBox=\"0 0 227.35277 156.29323\"
   height=\"6.1532764in\"
   width=\"8.9508963in\"
   sodipodi:docname=\"etchasketchborder.svg\">
    <defs
     id=\"defs2\" />
  <path
     style=\"fill:#ff0000;stroke:#ff0000;stroke-width:1.32300019;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"
     d=\"m 12.000819,0.66145838 c -6.2819637,0 -11.33936062,5.05739692 -11.33936062,11.33936062 V 144.29249 c 0,6.28197 5.05739692,11.33936 11.33936062,11.33936 H 215.35224 c 6.28197,0 11.33885,-5.05739 11.33885,-11.33936 V 12.000819 c 0,-6.2819637 -5.05688,-11.33936062 -11.33885,-11.33936062 z M 18.932696,12.696383 H 205.5854 c 5.02557,0 9.07128,4.04571 9.07128,9.071282 v 77.03923 c 0,5.025575 -4.04571,9.071285 -9.07128,9.071285 H 18.932696 c -5.025572,0 -9.0712819,-4.04571 -9.0712819,-9.071285 v -77.03923 c 0,-5.025572 4.0457099,-9.071282 9.0712819,-9.071282 z\"
    />
  <ellipse
     style=\"fill:#ffffff;fill-opacity:1;stroke:#ff0000;stroke-width:1.32300007;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"
     cx=\"21.16666\"
     cy=\"130.59085\"
     rx=\"10.583334\"
     ry=\"9.0714283\" />
  <ellipse
     style=\"fill:#ffffff;fill-opacity:1;stroke:#ff0000;stroke-width:1.32300007;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"
     cx=\"200.62982\"
     cy=\"131.57361\"
     rx=\"10.583334\"
     ry=\"9.0714283\" />
      </svg>
");

, 👍0

Обсуждение

https://stackoverflow.com/questions/1135841/c-multiline-string-literal, @Juraj


1 ответ


2

Ах, я все понял. вы не можете этого сделать:

Serial.println("foo
                                bar");

но вы можете сделать это:

Serial.println("Foo"
                "Bar");

Поэтому затем в bash я пишу небольшую команду, чтобы взять мои svg-файлы и удалить кавычки, существующие в файле, затем еще одну строку, чтобы добавить кавычки в начале и конце каждой новой строки. затем я могу просто скопировать и вставить свои svg-изображения в функцию println ().

$ sed -i 's/"/\\"/g' input.svg

и

$ xargs -I{lin} echo \"{lin}\" <input.svg

соответственно.

,

Обратите внимание, что "foo" "панель" (в отдельных строках) приводит к "foobar", а не "foo\nbar", как предполагает макет., @Majenko

конечно, я просто хотел разбить его визуально. Я думаю, что svg не заботится о новых строках, и если это так, я просто добавлю \n в свой сценарий bash., @j0h

SVG все равно (в конце концов, это просто XML), но просто что - то, что нужно держать в голове на случай, если вы используете тот же трюк для чего-то, что действительно важно (или для других пользователей, которые читают этот ответ и не понимают этого маленького предостережения)., @Majenko