如果这是一个愚蠢的问题(可能是这样),我道歉但是我很难让函数正常工作。
我的代码:
#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”。最终,我很困惑,因为所有人都离开了,并且不知道在这一点上转向何处。
感谢任何帮助。
答案 0 :(得分:1)
格式化的最后一个被塞了:)
我很无法将c *与+运算符连接起来:)你必须调用sprintf或strcat :)请参阅本地手册页。
而不是:
sprintf(buf + strlen(buf), "," + sensorCode + ":%04i", sensorValue);
试试这个:
sprintf( buf+strlen(buf), ",%s:%04i", sensorCode, sensorValue );