2012-07-19 3 views
2

MacOS X function IOI2CSendRequest를 사용하여 ddc/ci를 통해 디스플레이와 통신하려고합니다. 설정 밝기와 같이 "설정"명령 만 보내는 경우 모두 작동합니다. 디스플레이가 밝기를 변경하기 때문에 디스플레이 수신 명령이 표시됩니다.Mac OS X의 IOKit에서 i2c 통신

하지만 디스플레이에서 답장을 받으려고 할 때 쓰레기가 나옵니다. IOI2CSendRequest로 답장을 보내고받는 올바른 방법은 무엇입니까? BUF에서

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 및 kIOReturnSuccess 동일 request.result,하지만 모두 유효한 데이터 :

여기에 내 현재 코드입니다. 보낸 명령이 "51 82 01 10 AC"이고, 여기서 AC는 체크섬입니다.

OS는이 코드에 어떤 문제가 있는지 10.6.8 (스노우 레오파드)

어떤 생각인가?

+0

어떻게 기기를 물리적으로 연결 했습니까? –

+0

추가 연결없이 DVI 또는 HDMI 케이블 만 있습니다. – johngull

답변

3

Mac OS 업데이트에주의하십시오. 이 코드는 Mac OS 10.8.3 및 10.7.4에서는 제대로 작동하지만 10.7.5 및 10.8.2에서는 작동하지 않습니다.

+4

이것은 주석으로 더 적절할 것입니다. 50 평판을 얻었다면 주석 권한을 얻게됩니다. – Ren