0

次のコードを使用して、ボードの 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;
}
4

1 に答える 1