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' 'を使用してユーザ空間のコードを実行してみてください。 – Gaurav
そのバックスラッシュは実際にはファイル名にありますか、またはシェルからコロンをエスケープしていますか? –
同じコードを使用して/ sys/class/gpio/gpio70を読み取ることができます。 –