Serial.print mit zusätzlichen Steuerzeichen ???

Hallo,

ich möchte über die serielle Schnittstelle einen Ascii String ausgeben der zusätzliche Steuerzeichen enthält.
Also z.B. vor dem String das Zeichen "STX", also 0x002 und am Ende noch "ETX", also 0x003

Ganz toll wäre wenn das auch über die Software-Serial geht, da die richtige Schnittstelle schon belegt ist.

Sind meine Gedankenansätze richtig? Gibt es eine elegantere Lösung mit nur einem Serial.print ???

SwSerial.print(02, HEX);
SwSerial.print("Hello World");
SwSerial.println(03, HEX);

Beste Grüße,
Christian

Sollte so gehen:

Serial.println("\x02Hello World\0x03");

Das ist der Standard C Weg um beliebige ASCII Zeichen in String Literalen unterzubringen

HEX ist in diesem Fall falsch. Das Formatiert dir das Zeichen damit es auf dem Serial Monitor als Hex lesbar ist. Das heißt er macht da einen String draus.

elektron_:
Sind meine Gedankenansätze richtig? Gibt es eine elegantere Lösung mit nur einem Serial.print ???

Nein, nutze write statt print:

  Serial.write(2);
  Serial.print("Hello World");
  Serial.write(3);
  // oder in hex:
  Serial.write(0x02);
  Serial.print("Hello World");
  Serial.write(0x03);

Du kannst die Steuerzeichen aber auch in einem print-Einzeiler einfügen.

Serial.print kann problemlos auch Steuerzeichen ausgeben. Speziell STX und ETX brauche ich auch (siehe hier: http://blog.blinkenlight.net/experiments/dcf77/meinberg-emulator/). Das geht problemlos.

Im schlimmsten Fall kannst Du einen String immer als 0 terminiertes char Array deklarieren. Dann kannst Du beliebige Sonderzeichen reinstopfen. Also so:

const char meinString[] = {'S', 'o', 0x02, 0x03, 0x00};