문제

Working on a Raspberry Pi running Raspbian, I am trying to use driver-style C code to access the GPIOs. To export a GPIO pin to the userspace, I have to write the pin number to /sys/class/gpio/export. Is it possible to export multiple pins in a single file write? For example, I would like to do:

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);
}

When given [2,3,4] as an input array, this function only exports pin 2. Is there some way to write the pins into the export file such that they all get exported? Thanks for your time!

도움이 되었습니까?

해결책

Nope :)

A quick solution may be to wrap your code in a loop, like so:

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]);
    }

}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top