내 Arduino에서 배열을 컴퓨터로 보내려고합니다. 그러나 배열을 수신 할 때마다 임의로 데이터가 두 번째로 변경되는 경우가 있습니다. 이것은 내가 포인터를 잘못 참조한 것으로 의심되지만, 구문에 문제가없는 것 같습니다.포인터에서 배열에 액세스하면 값이 달라집니다.
배열은 배열의 첫 번째 요소에 부울 *을 반환하는 buildreport()에 의해 생성됩니다. 그것은 직렬 회선을 통해 작성하는 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 바이트를 얻을. 때로는 첫 번째 바이트가 변경됩니다.
Arduino 스케치의 전체 목록을 제공하십시오. 스케치는 C 코드가 아니기 때문에 많은 C 규칙이 적용되지 않는다는 것을 기억하십시오. 또한 빠른 검사로 스케치가 PC와 동일한 매개 변수가있는 직렬 회선을 시작합니까? – JackCColeman
@JackCColeman 뭐라구? 스케치 **는 ** C (또는 C++, 종속적 인) 코드입니다. –
스케치는 프로그래머가 볼 수없는 큰 프로그램의 일부입니다. – JackCColeman