Raspberry Pi 2のI2Cデバイスを、C#から使ってみる。
C標準のopenやread/writeといった低レベル関数を、
DllImportすることでC#から使えるようにしている。
こういうとき、C#だとCとの相互運用性が
意外と考えられていて、なかなか役に立つ。
DllImportでは、Cの関数に整数などのプリミティブはもちろん、
プリミティブの配列や文字列やポインタも渡して戻せる。
構造体も、多少手間がかかるがやりとりできる。
(ただし、ポインタを使うときは、unsafeキーワードが必要。
ちょっと特殊なので注意)
また、Cのヘッダ内の定数などはC#に自動で取り込んでくれないので、 自分で調べてC#コードに直打ちした。 RasPiのlibcの型とC#の型の対応も、 自力で調べればわかる。
- Cの
unsigned char-> C#のbyte(Byte) - Cの
int-> C#のint(Int32) - Cの
unsigned long-> C#のuint(UInt32)
.Net FrameworkはWindows向けなので、 Raspbianでは使えないが、代わりにMonoが使える。 コンパイラのコマンドはmcs。
aptitude install mono-mcs
mcs I2CController.cs I2CReader.cs
./I2CController.exe
で実行できる。