3

arduinoからarduinostring(I2C)に送信し、キャッチしてchar[10]に保存します。この変数をテキストと比較すると、条件が実行されていません:-/そして理由がわかりません...

char dataRx[10] = "";

void DaemonReceiving(int howMany){
  int index = 0;

  while(Wire.available() > 0){
    char c = Wire.read();

    dataRx[index++] = c;
    dataRx[index] = '\0';
  }
  Serial.println(dataRx);

  if(dataRx == "HELLO"){
        Wire.beginTransmission(1);
        Wire.write("HI");
        Wire.endTransmission();
  }
}
4

3 に答える 3

7

dataRX文字列を「HELLO」と比較するには、次を使用します。

if (strcmp (dataRx,"HELLO") == 0) {

    // matches HELLO

}
于 2013-03-22T21:43:09.267 に答える
4

Cの場合は使用する必要がありstrcmpます。それ以外の場合は、「HELLO」の場所とdataRxの場所(失敗します)の2つのポインターを比較しているだけです。

これはarduinoとは何の関係もないことに注意してください:)

于 2013-03-22T21:37:56.303 に答える
4

これはポインタ値を比較します:

if(dataRx == "HELLO")

strcmp文字列の比較が必要です:

if(strcmp(dataRx, "HELLO") == 0)
于 2013-03-22T21:38:22.307 に答える