Можно ли одновременно экспортировать несколько GPIO во встроенный Linux?

Работая над Raspberry Pi, на котором работает Raspbian, я пытаюсь использовать C-код в стиле драйвера для доступа к GPIO. Чтобы экспортировать пин-код GPIO в пользовательское пространство, мне нужно записать номер пин-кода в /sys/class/gpio/export. Можно ли экспортировать несколько контактов в один файл записи? Например, я хотел бы сделать:

int initGPIO(int pins[], int numPins){
char buffer [50]; int numBytes; 

int fh = open("/sys/class/gpio/export", O_WRONLY);
if(fh<0) return -1;

int i;
numBytes = 0; 
sprintf(buffer, "");
for (i=0; i<numPins; i++){
    numBytes += sprintf(buffer, "%s\n%d", buffer, pins[i]);
}
return write(fh, buffer, numBytes);
close(fh);
}

Если задано [2,3,4] в качестве входного массива, эта функция экспортирует только вывод 2. Есть ли какой-нибудь способ записать выводы в файл экспорта так, чтобы все они были экспортированы? Спасибо за ваше время!

1 ответ

Решение

Нету:)

Быстрое решение может заключаться в том, чтобы обернуть ваш код в цикл, например так:

int initSingleGPIO(int pin)
{
    char buffer [50]; 
    int numBytes; 

    int fh = open("/sys/class/gpio/export", O_WRONLY);

    if(fh<0) return -1;

    sprintf(buffer, "");

    numBytes = sprintf(buffer, "%s\n%d", buffer, pin);

    int rv = write(fh, buffer, numBytes);

    close(fh);

    return rv;
}

int initGPIO(int pins[], int numPins)
{     
    int i;   
    for (i=0; i<numPins; i++)
    {
        initSingleGPIO(pins[i]);
    }

}
Другие вопросы по тегам