다음 코드를 C 코드에서 읽으려고합니다.사용자 공간에서 iio 파일을 읽을 수 없습니다.
파일 : 나는 점점 오전 /sys/bus/iio/devices/iio\:device0/in_voltage7_raw
하지만, 파일 포인터는 -1입니다.
cat 명령을 사용하여 파일을 읽을 수 있습니다.
하지만 다음과 같이 내 코드에서 같은 읽기 위해 노력하고 있어요 :
nos_int32 nos_adc_read_port (ADC_PORT_DB *p_port, nos_int32 *data)
{
char file_name[VALUE_MAX];
int value;
char buffer[BUFFER_LENGTH];
char intBuffer[INT_BUFFER_LENGTH];
int fd;
sprintf(file_name, "/sys/bus/iio/devices/iio\\:device0/in_voltage7_raw");
fd = open(file_name, O_RDONLY);
if (fd == -1) {
return(-1);
}
if (read(fd, buffer, BUFFER_LENGTH) == -1) {
return(-1);
}
close(fd);
memcpy(intBuffer, buffer, BUFFER_LENGTH);
intBuffer[INT_BUFFER_LENGTH-1] = '\0';
value = atoi(intBuffer);
*data = value;
return(0);
}
선 후 : FD의 fd = open(file_name, O_RDONLY);
값은 -1입니다. 어떻게 해결 될 수 있습니까?
이'sudo'하여 사용자 공간 코드를 실행 해보십시오 : 당신은 같은 진정으로 그것을 같이 코드에서 파일 이름을 넣을 수 있도록
는 C에서이 문제가 없습니다. – Gaurav백 슬래시가 실제로 파일 이름에 있습니까? 아니면 쉘에서 콜론을 이스케이프 처리합니까? –
동일한 코드를 사용하여/sys/class/gpio/gpio70을 읽을 수 있습니다. –