シリアル経由で Arduino の配列をコンピューターに送信しようとしています。ただし、配列を受け取るたびに、明らかにランダムで、時には秒単位で変化するデータが含まれています。これにより、ポインタを間違って参照したのではないかと疑われますが、構文の問題は見つかりません。
配列は buildreport() によって生成され、配列の最初の要素に boolean* を返します。それは loop() によって取り上げられ、シリアルラインに書き込まれます。
//read pins
boolean report[NUM_BUTTONS] = {0,0,0,0,0,0,0,0,0}; //I set this to all zeroes for testing and brevity
boolean* x = &report[0];
return x;
そしてループ()
//if I don't read the serial, it will always be
//available and execute forever.
if(Serial.available() != 0){
incoming = Serial.read();
boolean* reports = buildreport();
//reports should now be the first element of the array
for(int i=0;i<NUM_BUTTONS;i++){
boolean x = *(reports+i);
//x is set to value at reports[0] plus i
Serial.write(x);
}
Serial.write(0x0d); //carriage return
Serial.write(0x0a); //line feed
}
シリアル ラインに何かを送信して配列を要求するたびに、1 か 0 ではない 9 バイトが返されます。場合によっては、最初のバイトが変わることがあります。