我正在使用以下代码在 Linux 中进行编码以控制板上的 gpio 端口。但是,read() 的结果始终是 0x10,它是用于 LF 换行的十六进制。电压是一个枚举变量,int 值为 0,1 代表低和高。fd 是 gpio 端口的文件描述符。0x30 是字符“0”的十六进制代码。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;
}