2

MacOSX関数IOI2CSendRequestを使用してddc/ciを介してディスプレイと通信しようとしています。明るさの設定など、「設定」コマンドを送信するだけですべて機能します。ディスプレイの明るさが変わるので、ディスプレイ受信コマンドが表示されます。

しかし、ディスプレイから返信を受信しようとすると、ゴミが表示されます。IOI2CSendRequestで応答を送受信する正しい方法は何ですか?

これが私の現在のコードです:

memset(&request, 0, sizeof (request));
request.commFlags = 0;
request.sendAddress = addr << 1;
request.sendTransactionType =  kIOI2CSimpleTransactionType;
request.sendBuffer = (vm_address_t) package;
request.sendBytes = i;
request.replyAddress = (addr << 1) + 1;

request.replyTransactionType = kIOI2CNoTransactionType;
request.replyBuffer = NULL;
request.replyBytes = 0;

kr = IOI2CSendRequest(Display_, kNilOptions, &request);



mysleep(1000);
memset(&request, 0, sizeof (request));
request.commFlags = 0;
request.sendAddress = addr << 1;
request.sendTransactionType =  kIOI2CNoTransactionType;
request.sendBuffer = (vm_address_t)package;
request.sendBytes = 0;
request.replyAddress =  (addr << 1) + 1;
request.replyTransactionType = kIOI2CSimpleTransactionType;
request.replyBuffer = (vm_address_t) buf;
request.replyBytes = 127;   

memset(buf, 0, request.replyBytes);

kr = IOI2CSendRequest(Display_, kNilOptions, &request);

krとrequest.resultはどちらもkIOReturnSuccessと同じですが、bufに有効なデータがありません。送信されるコマンドは「51820110 AC」です。ここで、ACはチェックサムです。

OSは10.6.8(ユキヒョウ)

このコードの何が問題になっているのでしょうか。

4

0 に答える 0