0

これがばかげた質問である場合は申し訳ありませんが (おそらくそうです)、機能を正しく動作させるのに苦労しています。

私のコードはそのままです:

#define photoPin A0    
char photoCode[] = "L";

void loop(void) {
   analogSensor(photoPin, photoCode);
   delay(5000);
}

void analogSensor(int sensorPin, char* sensorCode) {
   //Poll the Photo Cell and append that to the buffer
   int sensorValue=analogRead(sensorPin);
   Serial.print(sensorCode);
   sprintf(buf + strlen(buf), "," + sensorCode + ":%04i", sensorValue);

}

これをコンパイルしようとすると、次のメッセージが表示されます。

In function 'void analogSensor(int, char*)':
i2c_Sensor:104: error: invalid operands of types 'const char [2]' and 'char*' to binary 'operator+'

しかし、sprintf 行をコメントアウトすると、問題なくコンパイルされ、5 秒ごとに "L" が画面に出力されます。最終的に、私は混乱してしまい、この時点でどこを向いたらよいかわかりません。

どんな助けでも大歓迎です。

4

1 に答える 1

1

最後のものはフォーマットが壊れました:)

char* を + 演算子と連結できないのではないかと心配しています:) sprintfまたはstrcatを呼び出す必要があります:)ローカルのマニュアルページを参照してください。

これの代わりに:

sprintf(buf + strlen(buf), "," + sensorCode + ":%04i", sensorValue); 

これを試して:

sprintf( buf+strlen(buf), ",%s:%04i", sensorCode, sensorValue );
于 2013-04-20T22:14:22.890 に答える