

とあるデバイスの LED を変更するプログラムを書こうとしています。

I2C アドレス: 0x93

Read Data Format:  
Send 0xA0 ' Read 32 Byte Array[byArray[32]]  
byArray[0]'LED Mode[Mode0'Mode1'Mode2'Mode3'Mode4]  
byArray[1]'Red  
byArray[2]'Green  
byArray[3]'Blue  
byArray[12]'LED'on/off

Write Data Format:  
8 Byte Data[byData[8]]  
Default'Switch'LED mode'Red'Green'Blue'Default'Default  
Example: 0xA0 0x00 0x00 0xFF 0x00 0x00 0x00 0x04 (=Mode0 Red)

1stbyte header: 0xA0  
2ndbyte: Switch(0x00 = LED MODE, 0xFC = ON/OFF MODE)  
3rdbyte: If 2nd byte = 0x00, select LED
MODE[MODE0(0x00)'MODE1(0x01)'MODE2(0x02)'MODE3(0x03)'MODE4(0x04)]  
Else if 2nd byte = 0xFC, select ON/OFF(0x01 ON/0x00 OFF)\  
4th-6th: RGB value  
7th-8th: reserved, keep 0x00 and 0x04

与えられた情報はこれだけですがこれだけでプログラムを書けるものでしょうか？  
やりたいことは、Windows で C言語でデバイスの LED(光り方) を変更することです。  
これでプログラムが書けるのであればサンプルコードを教えていただけないでしょうか？  
デバイスは、PCI Express 上にあります。  
VisualStudio の使い方と C/C++ の知識はあります。


CC BY-SA 4.0
2018-10-16T01:58:14.993
49327
2018-10-16T05:22:17.937
2018-10-16T05:21:32.327
19110
30540
question
windows c i2c
I2Cの初歩的な質問です


通常の Windows
アプリケーションから直接ハードウエアデバイスをアクセスする手段はありません。通常は「デバイスドライバ」なるものが仲介してくれます。デバイスマネージャで表示されるアレですね。

Windows アプリケーションが Read や Write や IOCTL
という形でデバイスドライバをアクセスすると、デバイスドライバがハードウエアデバイスにコマンドを発行するという形をとることになるでしょう。この場合 I2C
がどうこうといった話はデバイスドライバが中で吸収してくれるのでアプリケーションプログラマはその辺を知っておく必要はありません。が、ドライバにどうアクセスするとよいのかの情報が必要です。

あるいは今要求されているのはデバイスドライバを書くこと、なんでしょうか？それであれば難度が上がります。こういう場で説明できるとは思えません。こっちなら
I2C の信号をどう生成するかの情報が必要です。

まずはもっと詳しい資料の入手を試みましょう。作れと要求されているのがデバイスドライバなのかアプリケーションなのか、あたりも要確認です。今提示されたその説明だけでは何もできない、ってことで。


CC BY-SA 4.0
2018-10-16T02:37:59.093
49329
2018-10-16T02:37:59.093
8589
49327
answer


普通のインテルPCと普通のWindows(Home/Pro)では出来ないようです。  
Windows 10 IoT Core または Windows Enterprise が必要と出ています。

[GPIO、I2C、SPI へのユーザー モード アクセスの有効化](https://docs.microsoft.com/ja-
jp/windows/uwp/devices-sensors/enable-usermode-access)

> Windows 10 IoT Core と Windows Enterprise で使用可能な RhProxy  
>  という新しいドライバーが、GpioClx リソースと SpbCx リソースをユーザーモードに公開します。

[Windows 10 IoT Core で
I2C](https://koudenpa.hatenablog.com/entry/2016/05/16/060659)  
[Windows 10 IoT CoreでI2Cを使う](http://todotani.cocolog-
nifty.com/blog/2015/12/windows-10-io-1.html)

まあ、Windows Driver Kitでデバイスドライバを作成できる人ならばできるかもしれませんが。  
他に参考になりそうな情報を示します。

[Intel Z370 - SMBus on PCIe](https://stackoverflow.com/q/50236420/9014308)  
[Industrial PC Requirements to Access GPIO/I2C/SPI ... -
Annabooks](http://www.annabooks.com/Articles/Articles_IoT10Core/Windows-10-IoT-
microIO-Requirements-on-IA-Rev1.6.pdf)  
[Windows 10 IoT
Enterprise](https://sec.ch9.ms/sessions/winhec/slides/04-2015ShenzhenWinHECFallWorkshopKeynote-
CreateyourIndustrydevicewithWindows10IoT.pdf)  
[PCI Express -
PALTEK](https://www.paltek.co.jp/mail/pciexpress/2006/04/04_PCIe_kentou.pdf)  
[PALTEKボードソリューション](https://www.paltek.co.jp/board/index.htm)


CC BY-SA 4.0
2018-10-16T04:49:16.090
49333
2018-10-16T04:49:16.090
26370
49327
answer