次のコードを使用して、ボードの gpio ポートを制御するために Linux でコーディングしています。ただし、read() の結果は常に 0x10 で、これは LF 改行の 16 進数です。Voltage は、低と高を表す 0 と 1 の int 値を持つ列挙型変数です。fd は、gpio ポートのファイル記述子です。0x30 は char '0' の 16 進コードです。write() にエラーはありません。
int set_gpio( int fd,enum voltage_e voltage)
{
const unsigned char w_buff =0x30+voltage;
unsigned char r_buff='2';
if (0 >= write(fd, &w_buff, 1))
{
LOGD(" Error1 in setting gpio to %d", voltage);
return -1;
}
__usr_sleep(0, 10000000);
if (read(fd, &r_buff, 1))
{
if (r_buff != 0x30+voltage)
{
LOGD(" r_buff is %d", r_buff);
return -1;
}
}
else
{
LOGD(" Error3 in setting gpio to %d", voltage);
return -1;
}
return 0;
}