#'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #'使用方法 #' uio_findでUSB-IOを検索・初期化して,その後に #' uio_inp/outで読み書きしてください. #' uio_seldevで複数のUSB-IOを切り替えて使うことが出来ます. #' (uio_findを実行しなくても初めてuio_inp/outを実行するときには自動的に #' uio_findが呼ばれます.ただし,最初だけなのでUSB-IOが一度外されて, #' もう一度挿された場合などは無視されます.) #'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ require 'dl/win32' class USBIO # #'------------------------------------------------------------------------------ #'USB-IOにPortを指定してデータを出力する #'p3に1を指定すると,ポート1のp1にパルスを送りポート0を書き換えます #' Port : Portを指定する(0,1)、パルス出力の場合はビット(0〜3) #' OutDat : データ(0〜255) #' p3 : パルス出力有無(0:なし、1:あり) #' 戻り値 : 0:正常、1:異常 #'------------------------------------------------------------------------------ #Declare Function uio_out Lib "vbausbio.dll" (ByVal Port As Long, ByVal OutDat As Long, ByVal p3 As Long) As Long def USBIO.out(port,outdat,puls) uio_out = Win32API.new('vbausbio', 'uio_out', %w(l l l), 'l') uio_out.call(port,outdat,puls) end #'------------------------------------------------------------------------------ #'USB-IOからPortを指定してデータを取得する #'p3に1を指定すると,ポート1のp1にパルスを送りポート0から読み込みます #' InpDat : 取得データ(取得したい変数を指定する) #' Port : Portを指定する(0,1)、パルス出力の場合はビット(0〜3) #' p3 : パルス出力有無(0:なし、1:あり) #' 戻り値 : 0:正常、1:命令が書けなかった、2:データを取得できなかった #'------------------------------------------------------------------------------ #Declare Function uio_inp Lib "vbausbio.dll" (ByRef InpDat As Byte, ByVal Port As Long, ByVal p3 As Long) As Long def USBIO.inp(inpdat,port,puls) uio_inp = Win32API.new('vbausbio', 'uio_out', %w(p l l), 'l') uio_inp.call(inpdat,port,puls) end #'Km2net用拡張命令対応 # #'------------------------------------------------------------------------------ #'USB-IOにポート0とポート1のデータを同時に出力する #' OutDatP0: データ(0〜255) #' OutDatP1: データ(0〜255) #' 戻り値 : 0:正常、1:異常 #'------------------------------------------------------------------------------ #Declare Function uio_outAll Lib "vbausbio.dll" (ByVal outDatP0 As Long, ByVal outDatP1 As Long) As Long def USBIO.outAll(outDatP0,outDatP1) uio_outall = Win32API.new('vbausbio', 'uio_out', %w(l l), 'l') uio_outall.call(outDatP0,outDatP1) end # #'------------------------------------------------------------------------------ #'USB-IOにポート0とポート1のデータを同時に出力した後、 #'ポート0とポート1のデータを取得する。 #' OutDatP0: データ(0〜255) #' OutDatP1: データ(0〜255) #' InpDatP0: ポート0の取得データ(取得したい変数を指定する) #' InpDatP1: ポート1の取得データ(取得したい変数を指定する) #' 戻り値 : 0:正常、1:命令が書けなかった、2:データを取得できなかった #'------------------------------------------------------------------------------ #Declare Function uio_outInpAll Lib "vbausbio.dll" (ByVal outDatP0 As Long, ByVal outDatP0 As Long, ByRef inpDatP0 As Byte, ByRef inpDatP1 As Byte) As Long def USBIO.outInpAll(outDatP0,outDatP1,inpDatP0,inpDatP1) uio_outinpall = Win32API.new('vbausbio', 'uio_out', %w(l l p p), 'l') uio_outinpall.call(outDatP0,outDatP1,inpDatP0,inpDatP1) end # #'------------------------------------------------------------------------------ #'ポート0とポート1のデータを同時に取得する。 #' InpDatP0: ポート0の取得データ(取得したい変数を指定する) #' InpDatP1: ポート1の取得データ(取得したい変数を指定する) #' 戻り値 : 0:正常、1:命令が書けなかった、2:データを取得できなかった #'------------------------------------------------------------------------------ #Declare Function uio_inpAll Lib "vbausbio.dll" (ByRef inpDatP0 As Byte, ByRef inpDatP1 As Byte) As Long def USBIO.inpAll(inpDatP0,inpDatP1) uio_inpall = Win32API.new('vbausbio', 'uio_out', %w(p p), 'l') uio_inpall.call(inpDatP0,inpDatP1) end # #'------------------------------------------------------------------------------ #'ポート0とポート1のデータを取得後、 #'ポート0とポート1のデータを同時出力する #' OutDatP0: データ(0〜255) #' OutDatP1: データ(0〜255) #' InpDatP0: ポート0の取得データ(取得したい変数を指定する) #' InpDatP1: ポート1の取得データ(取得したい変数を指定する) #' 戻り値 : 0:正常、1:命令が書けなかった、2:データを取得できなかった #'------------------------------------------------------------------------------ #Declare Function uio_inpOutAll Lib "vbausbio.dll" (ByVal outDatP0 As Long, ByVal outDatP0 As Long, ByRef inpDatP0 As Byte, ByRef inpDatP1 As Byte) As Long def USBIO.inpOutAll(outDatP0,outDatP1,inpDatP0,inpDatP1) uio_inpoutall = Win32API.new('vbausbio', 'uio_out', %w(l l p p), 'l') uio_inpoutall.call(outDatP0,outDatP1,inpDatP0,inpDatP1) end # #'------------------------------------------------------------------------------ #'USB-IOを検索・初期化する #' 戻り値 : 0:正常、1:必要なドライバが無い、2:USB-IOが繋がってない #'------------------------------------------------------------------------------ #Declare Function uio_find Lib "vbausbio.dll" () As Long def USBIO.find() uio_find = Win32API.new('vbausbio', 'uio_find', 'V', 'l') uio_find.call() end # #'------------------------------------------------------------------------------ #'USB-IO用の資源を解放する #' 戻り値 : 0 #'------------------------------------------------------------------------------ #Declare Function uio_free Lib "vbausbio.dll" () As Long def USBIO.free() uio_free = Win32API.new('vbausbio', 'uio_free', 'V', 'l') uio_free.call() end # #'------------------------------------------------------------------------------ #'繋がれているUSB-IOの数が戻り値に帰ります #' 戻り値 : 個数 #'------------------------------------------------------------------------------ #Declare Function uio_getdevs Lib "vbausbio.dll" () As Long def USBIO.getdevs() uio_getdevs = Win32API.new('vbausbio', 'uio_getdevs', 'V', 'l') uio_getdevs.call() end # #'------------------------------------------------------------------------------ #'繋がれているUSB-IOのvidが戻り値に帰ります #' n : 番号(0〜uio_getdevsで得た個数-1) ただし0から #' 戻り値 : 個数 #'------------------------------------------------------------------------------ #Declare Function uio_getvid Lib "vbausbio.dll" (ByVal n As Long) As Long def USBIO.getvid(n) uio_getvid = Win32API.new('vbausbio', 'uio_getvid', 'l', 'l') uio_getvid.call(n) end # #'------------------------------------------------------------------------------ #'繋がれているUSB-IOのpidが戻り値に帰ります #' n : 番号(0〜uio_getdevsで得た個数-1) ただし0から #' 戻り値 : 個数 #'------------------------------------------------------------------------------ #Declare Function uio_getpid Lib "vbausbio.dll" (ByVal n As Long) As Long def USBIO.getpid(n) uio_getpid = Win32API.new('vbausbio', 'uio_getpid', 'l', 'l') uio_getpid.call(n) end # #'------------------------------------------------------------------------------ #'USB-IOをvid,pidで指定する #' vid : ベンダーID #' pid : プロダクトID #' 戻り値 : 0:正常、1:存在しないID、2:USB-IOが繋がってない #'------------------------------------------------------------------------------ #Declare Function uio_selid Lib "vbausbio.dll" (ByVal vid As Long, ByVal pid As Long) As Long def USBIO.selid(vid,pid) uio_selid = Win32API.new('vbausbio', 'uio_selid', %w(l l), 'l') uio_selid.call(vid,pid) end # #'------------------------------------------------------------------------------ #'USB-IOを番号で指定する #' n : 番号(0〜uio_getdevsで得た個数-1) ただし0から #' 戻り値 : 0 #'------------------------------------------------------------------------------ #Declare Function uio_seldev Lib "vbausbio.dll" (ByVal n As Long) As Long def USBIO.seldev(n) uio_seldev = Win32API.new('vbausbio', 'uio_seldev', 'l', 'l') uio_seldev.call(n) end # # #'------------------------------------------------------------------------------ #' Km2Net USBIO関数 for HSP 互換命令 #'------------------------------------------------------------------------------ #Declare Function openUSBIO Lib "vbausbio.dll" () As Long def USBIO.open() openusbio = Win32API.new('vbausbio', 'openUSBIO', 'V' ,'L') openusbio.call() end #Declare Function closeUSBIO Lib "vbausbio.dll" () As Long def USBIO.close closeusbio = Win32API.new('vbausbio', 'closeUSBIO', 'V', 'L') closeusbio.call() end #Declare Function outputUSBIO Lib "vbausbio.dll" (ByVal iUsbioNo As Long, ByVal iPort As Long, ByVal iDtata As Long) As Long def USBIO.output(iUsbioNo,iPort,iData) outputusbio = Win32API.new('vbausbio', 'outputUSBIO',%w(L L L), 'L') outputusbio.call(iUsbioNo,iPort,iData) end #Declare Function inputUSBIO Lib "vbausbio.dll" (ByVal iUsbioNo As Long, ByVal iPort As Long) As Long def USBIO.input(iUsbioNo,iPort) inputusbio = Win32API.new('vbausbio', 'inputUSBIO',%w(L L), 'L') inputusbio.call(iUsbioNo,iPort,iData) end # #'------------------------------------------------------------------------------ #'CPU使用率ゼロのWAIT処理 #' dwMilliseconds : WAITする時間をミリ秒で指定 #'------------------------------------------------------------------------------ #Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) end