1

私はそれを認識し、cpp オブジェクト内では機能open()ioctl()ません。関数内で呼び出された場合は操作を実行できmain()ますが、クラス内では実行できません。ファイル システム呼び出しを行う別のオブジェクトを持つメイン ループで実行されているオブジェクトがあります。

したがって、基本的にメインループで開くことができます(ポインターの3を取得し、ioctl成功します)。しかし、オブジェクトでそれを行うと、open に対して 0 が返され (これはおそらくエラーではありません)、ioctl は失敗します。

ios::で動作しないため、 iostream オプションを使用できないことはわかっていますioctl。cpp オブジェクト内で通常の ioctl を機能させるにはどうすればよいですか?

int add=0x4b;
int i2c_bus;

if(( i2c_bus = open( "/dev/i2c-0", O_RDWR )) < 0 )
{
    printf("Unable to open file /dev/i2c-0.\n");
}

if( ioctl( i2c_bus, I2C_SLAVE, add ) < 0 )
{
    printf("Open chip %d FAILED file %d\n",add, i2c_bus);
    return -1;
}
else 
{
    printf("Open chip %d Succeeded file %d\n\n",add, i2c_bus);
    return 1;
}
4

1 に答える 1

2

opentoの結果を割り当てましたが、ioctl でi2c_bus使用しています。fdから移動したときに変数名を変更しましたmainか?

于 2011-03-04T14:40:14.880 に答える