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 回答