2016-03-26 97 views
0

我已經保存了數據到達槽i2c在一個數組中,我想訪問單個值。當我從保存並打印數組值的函數保存它們的值是好的,當我嘗試從該函數外部訪問它們時,我得到一個「double」值,這意味着在數組中存在一個值「0」重視我的保存。在i2c中的字節指針數組

int byteArray[100]; 
boolean hoRicevutoDati = false; 


void setup() { 
Serial.begin(9600); // start serial for output 
Wire.begin(SLAVE_ADDRESS); 
Wire.onReceive(receiveDataList); 
} 

void loop() { 
delay(1000); 
hoRicevutoDati = dalleNoteAlMotorino(hoRicevutoDati); 
} 

void receiveDataList(int numByte){ 
int i = 0; 
while(Wire.available() > 0){ 
    for(i=0; i < 100; i++){ 
    byteArray[i] = Wire.read(); 
    if (byteArray[i] == 255){ 
     break; 
     } 
    else{ 
     Serial.println(byteArray[i]); 
     i++; 
    } 
    }; 
} 

boolean dalleNoteAlMotorino (boolean hoRicevutoDati) { 
while (hoRicevutoDati == true) { 
    Serial.print("byte[0] "); 
    Serial.println(byteArray[0]); 
    Serial.print("byte[1] "); 
    Serial.println(byteArray[1]); 
    Serial.print("byte[2] "); 
    Serial.println(byteArray[2]); 
    Serial.print("byte[3] "); 
    Serial.println(byteArray[3]); 
    Serial.print("byte[4] "); 
    Serial.println(byteArray[4]); 
    return hoRicevutoDati = false; 
} 
} 

通過I2C我傳遞{0,2,5,4,...},當dalleNoteAlMotorino運行,我期待看到0,2,5,4 ......而不是我得到0 0 0 2 0 5 0 4 ...每個數字之前都有一個0。環顧四周我想我可能已經將字節數組轉換爲指針數組,雖然我不知道我是如何做到這一點,因爲我沒有將數組作爲參數傳遞到任何地方。我也不明白在值之前究竟是0還是我怎麼才能訪問這個值。基本上我不明白髮生了什麼事。

+0

Arduino不是C!但是告訴你不知道C語言。 – Olaf

回答

1

我要離開這裏以防其他人有我的問題。我用

Serial.print("value "); 
Serial.println(byteArray[i]); 
Serial.print("pointer address"); 
Serial.println((int)&byteArray[i]); 

去檢查指針地址還有我看到從I2C價值得到了,而我的搜索功能對他們來說,每2個字節的每4字節存儲。從我的理解C(和arduino)讓你用一個變量來記憶int,我認爲這是問題所在。