首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >初始化程序- Arduino上的字符数组字符串太长错误

初始化程序- Arduino上的字符数组字符串太长错误
EN

Stack Overflow用户
提问于 2013-10-04 01:54:52
回答 1查看 2.5K关注 0票数 0

我试图在Arduino上运行下面的代码,但当我验证代码时,它显示'Initializer-string for array of chars is too long‘。虽然我已经读过之前关于类似问题的问题,但我不知道从哪里开始我现在正在尝试的代码。是的,,,我对C++的世界非常陌生,,,如果你能给我一个教我自己的线索或一个直接的答案,我将不胜感激。

最好的

代码语言:javascript
复制
/**** SET YOUR MAC ADDRESS HERE ****/

char mac[13] = "74-E5-43-BE-42-10";

/***********************************/


#define LED 13
#define BLUESMIRFON 2

#define FACTORYRESETBAUD 57600
#define DEFAULTBAUD 115200

char str[3];
char passkey[5] = "0000";

boolean success = false;

int failOuts[10] = {3,4,5,6,7,8,9,10,11,12};

void setup() 
{ 
//Initialize pins
pinMode(LED, OUTPUT);
pinMode(BLUESMIRFON, OUTPUT);
for (int i=0; i<10; i++) {
pinMode(failOuts[i], OUTPUT);
}

// First reset to factory defaults
while (!success) {
RunBlueSmirfSetup(true);
}
success = false;
// Then set up with the correct mac address
RunBlueSmirfSetup(false);
} 

void loop() {   
if(success) {
digitalWrite(LED,LOW);
delay(1000);
digitalWrite(LED,HIGH);
delay(1000);
}    
} 

void RunBlueSmirfSetup(boolean factoryReset) {

//Initialize serial ports
if (factoryReset) {
Serial.begin(FACTORYRESETBAUD);   
} else {
Serial.begin(DEFAULTBAUD);   
}   

digitalWrite(BLUESMIRFON, LOW);
delay(2000);
digitalWrite(BLUESMIRFON, HIGH);  
delay(2000);              //Wait for BlueSMIRF to turn on

Serial.print('$');      //Send command to put BlueSMIRF into programming mode
Serial.print('$');
Serial.print('$');

delay(100);
Serial.flush();

//Reset the module
if (factoryReset) {
Serial.print('S');
Serial.print('F');
Serial.print(',');
Serial.print('1');
Serial.print('\r');  

while(Serial.available() < 3);
str[0] = (char)Serial.read();
str[1] = (char)Serial.read();
str[2] = (char)Serial.read();  
if(str[0] == 'A' && str[1] == 'O' && str[2] == 'K') {
  success = true;
} else {
  success = false;
  digitalWrite(failOuts[0],HIGH);
}
delay(100);
Serial.flush();
} else {
//Set the baudrate
Serial.print('S');
Serial.print('U');
Serial.print(',');
Serial.print('5');
Serial.print('7');
Serial.print('\r');  

while(Serial.available() < 3);
str[0] = (char)Serial.read();
str[1] = (char)Serial.read();
str[2] = (char)Serial.read();  
if(str[0] == 'A' && str[1] == 'O' && str[2] == 'K') {
  success = true;
} else {
  success = false;
  digitalWrite(failOuts[1],HIGH);
}
delay(100);
Serial.flush();

//Set the remote MAC address
Serial.print('S');
Serial.print('R');
Serial.print(',');
for(int i = 0; i < 12; i++) {
  Serial.print(mac[i]);
}
Serial.print('\r');  

while(Serial.available() < 3);
str[0] = (char)Serial.read();
str[1] = (char)Serial.read();
str[2] = (char)Serial.read();  
if(str[0] == 'A' && str[1] == 'O' && str[2] == 'K') {
  success = true;
} else {
  success = false;
  digitalWrite(failOuts[2],HIGH);
}
delay(100);
Serial.flush();

//Set the passkey
Serial.print('S');
Serial.print('P');
Serial.print(',');
for(int i = 0; i < 4; i++) {
  Serial.print(passkey[i]);
}
Serial.print('\r');  

while(Serial.available() < 3);
str[0] = (char)Serial.read();
str[1] = (char)Serial.read();
str[2] = (char)Serial.read();  
if(str[0] == 'A' && str[1] == 'O' && str[2] == 'K') {
  success = true;
} else {
  success = false;
  digitalWrite(failOuts[3],HIGH);
}
delay(100);
Serial.flush(); 

//Set the BlueSMiRF mode
Serial.print('S');
Serial.print('M');
Serial.print(',');
Serial.print('3');
Serial.print('\r');

while(Serial.available() < 3);
str[0] = (char)Serial.read();
str[1] = (char)Serial.read();
str[2] = (char)Serial.read();  
if(str[0] == 'A' && str[1] == 'O' && str[2] == 'K') {
  success = true;
} else {
  success = false;
  digitalWrite(failOuts[4],HIGH);
}
delay(100);
Serial.flush();

delay(100);
//Exit command mode
} 
Serial.print('-');
Serial.print('-');
Serial.print('-');
Serial.print('\r');

//delay(100);
//Serial.flush();
//delay(100);
//Serial.end();
//digitalWrite(BLUESMIRFON, LOW);
}
CleanProgramBlueSMiRF CleanProgramBlueSMiRF 
EN

回答 1

Stack Overflow用户

发布于 2013-10-04 03:53:47

如果您复制了包含行号的确切错误消息,将会有所帮助。

我假设它在以下方面失败了:

代码语言:javascript
复制
char mac[13] = "74-E5-43-BE-42-10";

因为它在引号之间有17个字符,而您分配了13个字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19165882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档