Arduino将char传递给函数

时间:2013-04-20 21:58:18

标签: arduino

如果这是一个愚蠢的问题(可能是这样),我道歉但是我很难让函数正常工作。

我的代码:

#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”。最终,我很困惑,因为所有人都离开了,并且不知道在这一点上转向何处。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

格式化的最后一个被塞了:)

我很无法将c *与+运算符连接起来:)你必须调用sprintf或strcat :)请参阅本地手册页。

而不是:

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

试试这个:

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