次の関数のデータ配列に不適切な値があるという問題があります(メモリの場所のように見えます):
int
GPIO::GetValue() {
char data[1];
if (read(_valuefd, data, 1) < 0) {
perror("Error on reading value fd");
return -1;
}
printf("int GPIO::GetValue() %s\n", data);
if (strcmp(data, "1") == 0) {
return GPIO_VALUE_ON;
}
if (strcmp(data, "0") == 0) {
return GPIO_VALUE_OFF;
}
return -1;
}
printfの結果:
int GPIO::GetValue() 0cx$??ݾ??˶8@l
これで何が問題なのかわかりません。正常に動作する単純なプログラムで同じコードを抽出しました。同じことを行い、正常に動作する他の関数GPIO::GetDirectionもあります。メモリ、ポインタ、割り当ての問題があると思います。
何がうまくいかないのですか?
ボードー