■5...複数のUSB-IO/IVB usb-ioインバータボードと「HSP」を使って
入出力の制御テストをしてみます。
複数のUSB-I/Oを同時に使うことができますか?という問い合わせが度々有りました。
ここでは、4個のUSB-IO/IVB USB-IOインバータボードを使っての出力実験"「テスト映像1」"と、
2個のUSB-IO/IVBを使って、一つを出力に、もう一つを入力にし、入力側の状態を出力側に出力する
実験"「テスト映像2」(プログラム8)"を紹介致します。
4個のUSB−IOを制御するテスト
プログラム7
プログラム7は、1番ポートを使って識別した4つのusb-I/O(USB−IO/IVB)の1つを指定し、0番ポートにDATAを出力するプログラムです。
usb-i/oの1番ポートを 1111 1110 1101 1100、、、、0001 0000と順に設定することにより最大16個のUSB-I/Oを識別することができます。
(以下の;-------------と;------------の間をコピーし、hspエディターに貼り付けると起動します。プログラムを起動するには「HSP」本体とHSP USB-IO用プラグインが必要です)
;-------------------------------------------------
;プログラム7 4個のUSB−I/Oを使った出力テスト
#include "hspusbio.as
screen 0,500,300
uio_find ;デバイスの中からUSB-I/Oを検索、初期化
uio_getdevs ;つながれているI/Oの数がstatに代入
n=stat ;USB-I/Oの総数をnに代入
repeat n ;つながれているUSB-I/Oの数だけ繰り返す
uio_seldev cnt ;割り振られた番号の0番目のI/Oから順に
uio_out 1,15 ;1番ポートを入力モードに設定し
uio_inp p,1 ;1番ポートの状態を読み込み
dev=15-p ;割り振られた番号(0〜n-1)を持つUSB-I/OのIDを
h.dev=cnt ;変数devに代入、割り振られた番号を配列の内容とし、
loop ;要素をUSB-I/OのIDとした配列変数を設定
repeat n
uio_seldev h.cnt ;USB/IOのID 、0番から
uio_out 0,0 ;0番ポートに、0を出力
loop
*main
pos 50,50
mes "繋がれているUSB-I/Oの数は["+n+"]個です。"
m_id=n-1
mes "出力するUSB-I/OのID番号を入力してください(0〜"+m_id+")"
input dev,50,20,1
mes "出力するデータ(0〜255)"
input dat,50,20,3
pos 100,150
objsize 300,30
button "指定のIOに入力データを出力します",*d_out
stop
*d_out
uio_seldev h.dev ;指定のUSB−IOの
uio_out 0,dat ;0番ポートにデータを出力
stop
;------------------------------------------
プログラム8
プログラム8は、2つのUSB-I/Oを使って、ID番号0の方を入力に、ID番号1の方を出力に設定し、0番のI/Oの状態を1番のI/Oに出力するプログラムです
(以下の;-------------と;------------の間をコピーし、hspエディターに貼り付けると起動します。プログラムを起動するには「HSP」本体とHSP USB-IO用プラグインが必要です)
;------------------
#include "hspusbio.as
screen 0,200,200
pos 50,50
objsize 100,30
button "start",*main
button "stop",*stp
*stp
stop
*main
uio_find ;デバイスの中からUSB-I/Oを検索、初期化
uio_getdevs ;つながれているI/Oの数がstatに代入
n=stat ;USB-I/Oの総数をnに代入
repeat n ;つながれているUSB-I/Oの数だけ繰り返す
uio_seldev cnt ;割り振られた番号の0番目のI/Oから順に
uio_out 1,15 ;1番ポートを入力モードに設定し
uio_inp p,1 ;1番ポートの状態を読み込み
dev=15-p ;割り振られた番号(0〜n-1)を持つUSB-I/OのIDを
h.dev=cnt ;変数devに代入、割り振られた番号を配列の内容とし、
loop ;要素をUSB-I/OのIDとした配列変数を設定
uio_seldev h.1 ;IOのID 1番のI/Oを指定
uio_out 0,0 ;0番ポートに0を出力
uio_seldev h.0 ;IOのID 0番のI/Oを指定
uio_out 0,255 ;0番ポートに255を出力(入力に設定)
repeat
uio_seldev h.0 ;ID 0番のI/Oを指定
uio_inp d,0 ;0番ポートの状態を取得
d=255-d ;取得したDETAを反転
uio_seldev h.1 ;ID 1番のI/Oを指定
uio_out 0,d ;0番ポートにDETAを出力
wait 2
loop
;--------------------------------------------
1
2
3
4
5