2013-04-20 88 views
0

我很抱歉,如果这是一个愚蠢的问题(这可能是),但我很难得到一个函数正常工作。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

最后一个格式化得到borked :)

我畏惧你不能连击的char *与+操作:)你不得不打电话的sprintf或者strcat的:)请与当地的手册页。

取而代之的是:

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

试试这个:

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

这奏效了!谢谢! – Butters 2013-04-21 18:21:58