Можно ли одновременно экспортировать несколько 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]);
}
}