У меня есть странное поведение при попытке считывания вывода вывода gpio. Я получаю, что первый прочитанный return 1 (1 байт прочитан), но все последующие считываются из того же gpio return 0. Я бы предположил, что он всегда должен читать 1, потому что всегда есть что-то читать с входного вывода.Число байтов, считанных с входа gpio, равно нулю
gpio = 8;
fd = open("/sys/class/gpio/export", O_WRONLY);
sprintf(buf, "%d", gpio);
rc = write(fd, buf, strlen(buf));
if (rc == -1)
printf("failed in write 17\n");
close(fd);
sprintf(buf, "/sys/class/gpio/gpio%d/direction", gpio);
fd = open(buf, O_WRONLY);
rc = write(fd, "in", 2);
if (rc == -1)
printf("failed in write 18\n");
close(fd);
sprintf(buf, "/sys/class/gpio/gpio%d/value", gpio);
gpio_tdo = open(buf, O_RDWR);
rc = read(gpio_tdo, &value, 1); <-- rc here is 1
rc = read(gpio_tdo, &value, 1); <-- rc here is 0
rc = read(gpio_tdo, &value, 1); <-- rc here is 0
Должно ли чтение одного байта с входа gpio всегда возвращать 1?
Это работает, спасибо! – ransh