バンダイの5秒スタジアム(その3)
今回はソフトにつきまして。
秋月電子のUSBIOを購入すると、下の写真のようなサンプルソフトcd(カードサイズ)が付いてきます。
これにはMicrosoftBisualBasic2008Express(無料)で実行できるサンプルソフトが入っています。ソースをここに置くと知的財産権侵害になりますので、今回の改造部分だけ書き出します。
@FORM1に上のようにアイテム追加します。
A下のようなコードを追加します。なにをやっているかはコメントを見てください。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
byteOutJ1 = &HFE ’最初のプッシュ
sendone()
System.Threading.Thread.Sleep(300)
byteOutJ1 = &HFF ’放す
sendone()
System.Threading.Thread.Sleep(1000) ’レディーーーー と言っている間待ちます。
byteOutJ1 = &HFE ’スタートのプッシュ
sendone()
System.Threading.Thread.Sleep(300)
byteOutJ1 = &HFF ’放す @
sendone()
System.Threading.Thread.Sleep(NumericUpDown1.Value * 10 - 300) ’設定時間待つ
byteOutJ1 = &HFE ’プッシュ
sendone()
System.Threading.Thread.Sleep(310) ’ちょっと待つ
byteOutJ1 = &HFF ’ 放す @〜ここまでの時間が測定される。上が310msなのは微調整
sendone()
End Sub
Private Sub sendone()
Dim sendData(63) As Byte
Dim recvData(63) As Byte
sendData(0) = &H20
sendData(1) = &H1
sendData(2) = byteOutJ1
sendData(3) = &H2
sendData(4) = byteOutJ2
sendData(63) = &H0
SendRecv(sendData, recvData)
End Sub
BタイマーTmrSendRcvのEnabledをFalseにします。
元々のサンプルはこのタイマーで各ビットの状態を見てそれをUSBIOに送っています。
それをAで追加したsendone()のコールでbyteOutJ1 、byteOutJ2に設定した値を送るように作り変えています。このためタイマーでの送信は重複するので止めています。
今回の用途に限らずとにかくこのsendone()をコールすればUSBIOの出力を制御できます。
昔話になりますが、かつてのマイコン(PC-8001あたり)にはパラレルポートというものがあって、そこから信号取り出してアセンブラやBASICからのIO直たたきで、外につけたLEDとか音源とかを動かして遊んだりしたものです。
Windowsの時代になってドライバを経由しないとハードにアクセスできなくなって、しかもそのハードも仮想化されていてアクセスできたようで実際は動いてなくて、そのうちにそもそもパラレルポートもシリアルポートもなくなって。。。。で信号を外に出すことがおいそれとはできなくなっていたのですが。
このUSBIOのおかげで、再び簡単なソフトでPCから信号を制御できるようになったわけです。昔を思い出してまた色々遊んでみようかと思います。
にほんブログ村 ←記事が面白かったらクリックしてやってください。
コメント