2

2 つの Arduinos Leonardo に通信させ、たとえば文字列を送信させたいので、Serial1ピン 0 (RX) と 1 (TX) で RS232 経由で通信する必要があります。

そのピンにバイナリデータを書き込む必要があります。問題は、を使用して文字列を送信する方法Serial1.writeです。Serial1.printエラーなしで動作しますが、私が望むことはできないと思います。なにか提案を?

void setup() {
  Serial.begin(9600);
  Serial1.begin(9600);
  while (!Serial);  // while not open, do nothing. Needed for Leonardo only
} 

void loop() {
  String outMessage = "";  // String to hold input

  while (Serial.available() > 0) {  // check if at least one char is available
    char inChar = Serial.read();
    outMessage.concat(inChar);  // add Chars to outMessage (concatenate)
  }

  if (outMessage != "") {
    Serial.println("Sent:  " + outMessage); // see in Serial Monitor
    Serial1.write(outMessage); // Send to the other Arduino
  }
}

この行Serial1.write(outMessage);は私にエラーを与えています

" no matching function for call to 'HardwareSerial::write(String&)'"

4

2 に答える 2

-2

toCharArry() を使用し、write() は文字列ではなく char* を使用します。

void setup() {
  Serial.begin(9600);
  Serial1.begin(9600);
  while (!Serial);
} 

void loop() {
  String outMessage = "";

  while (Serial.available() > 0) {
    char inChar = Serial.read();
    outMessage.concat(inChar);
  }

  if (outMessage != "") {
    Serial.println("Sent:  " + outMessage);
    char* CharString;                                    //
    outMessage.toCharArray(cString, outMessage.length()) // My Changes Are Here
    Serial1.write(CharString);                           //
  }
}
于 2013-04-30T16:17:31.923 に答える