Raspberry PI の GPIO(General Purpose Input/Output) は Shell Script から リダイレクトで操作できるらしい。
ということは、ストリーム入出力を使えば mono から操作できるのでは?ということでやってみました。
VB のプログラムは以下。(VisualStudio でコンパイルして RaspiGPIOAccess.exe を生成する)
Module RaspiGPIOAccess
Sub Main(args() As String)
Dim path = args(0)
If args.Length = 1 Then
' Read
Using sr As New IO.StreamReader(path)
Dim value = sr.ReadLine()
Console.WriteLine(value)
End Using
Else
' Write
Using sw = New IO.StreamWriter(path)
Dim value = args(1)
sw.WriteLine(value)
sw.Flush()
End Using
End If
End Sub
End Module
使い方は以下。
- "sudo mono RaspiGPIOAccess.exe パス名" とした場合は読み込み
例: RaspiGPIOAccess.exe /sys/class/gpio/gpio4/value
- "sudo mono RaspiGPIOAccess.exe パス名 値" とした場合は書き込み
例: RaspiGPIOAccess.exe /sys/class/gpio/gpio4/value 1
以下、実行結果。
# 最初に GPIO の状態を見る ~ $ ls /sys/class/gpio/ export gpiochip0 unexport # GPIO 4 の制御を開始 ~ $ sudo mono RaspiGPIOAccess.exe /sys/class/gpio/export 4 ~ $ ls /sys/class/gpio/ export gpio4 gpiochip0 unexport # GPIO 4 を書き込みモードに ~ $ sudo mono RaspiGPIOAccess.exe /sys/class/gpio/gpio4/direction out ~ $ sudo mono RaspiGPIOAccess.exe /sys/class/gpio/gpio4/direction out # GPIO 4 の値を読む ~ $ sudo mono RaspiGPIOAccess.exe /sys/class/gpio/gpio4/value 0 # GPIO 4 に 1 を書く (そののち読む) ~ $ sudo mono RaspiGPIOAccess.exe /sys/class/gpio/gpio4/value 1 ~ $ sudo mono RaspiGPIOAccess.exe /sys/class/gpio/gpio4/value 1 # GPIO 4 に 0 を書く (そののち読む) ~ $ sudo mono RaspiGPIOAccess.exe /sys/class/gpio/gpio4/value 0 ~ $ sudo mono RaspiGPIOAccess.exe /sys/class/gpio/gpio4/value 0 # GPIO 4 の制御を終了 ~ $ sudo mono RaspiGPIOAccess.exe /sys/class/gpio/unexport 4 ~ $ ls /sys/class/gpio/ export gpiochip0 unexport
素直にアクセスできました。
ただ、ハード結線の設備とかまだ持っていないため、実際に入出力できているかの確認はしていません(汗