1. 概要
I/Oで外部機器とやりとりする際に、Arduinoなどではなく産業用の機器を使いたいことってありますよね。そんなときに頼りになるのがCONTEC。ここではCONTECのリレーボードをUnityから使う方法を説明します。
2. 環境
- Windows 10
- Unity 2018.2.0f2
- CONTEC製 RRY-16CX-USB リードリレー接点出力 USB I/Oユニット 16ch
- https://www.contec.com/jp/products-services/daq-control/pc-helper/usb-module/rry-16cx-usb/price/
- ケーブルと端子台も買うと使いやすいです(高いですが)。
3. 参考サイト
- マニュアル
4. 手順
4.1 ドライバライブラリのダウンロード、インストール
- ドライバライブラリ API-USBP(WDM) デジタル入出力ドライバ 開発環境(フルセット) Ver. 6.30をダウンロード
- ダウンロードには会員登録が必要です。
-
INF - WDM - DioForWin10
に入っているSetup.exe
を実行- ダイアログに従ってインストール
-
APIUSBP - DIO - Disk1
に入っているsetup.exe
を実行
4.2 テスト
- この辺りはマニュアルに沿って実行します。
- リレーボードに付属の電源を挿し、Mini USBでPCに接続します
4.3 Unityから制御する
Unityで空のプロジェクトを立ち上げます。
先程インストールしたAPI-USBPの以下のフォルダ(例:
C:\Program Files (x86)\CONTEC\API-USBP(WDM)\Dio\Samples\Inc
)に入っているCdioCs.cs
をAssetフォルダにコピーします。コンソールを見ると以下のようなエラーが沢山出ています。
error CS0227: Unsafe code requires the `unsafe` command line option to be specified. Enable "Allow 'unsafe' code" in Player Settings to fix this error.
エラー通りにメニューの
Edit - Project Setting - Player
を選びOther Setting - Configration
のAllow 'unsafe' setting
にチェックを入れる。
エラーが消えたことを確認
Hierarchyの
Create - UI - Button
でボタンを配置する以下のスクリプトを作成しボタンのOnClickイベントに紐付ける
button.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using CdioCs;
public class ButtonTest : MonoBehaviour {
int Ret;
short Id;
bool isState0 = false;
Cdio dio = new Cdio();
void Start () {
Ret = dio.Init ( "DIO000" , out Id );
Ret = dio.ResetDevice ( Id );
Debug.Log("State 0");
Ret = dio.OutBit(Id, 0, 0);
Ret = dio.OutBit(Id, 1, 1);
isState0 = true;
}
public void OnClick() {
isState0 = !isState0;
short[] BitNo = new short[2];
byte[] Data = new byte[2];
if(isState0){
Debug.Log ("State 0");
Ret = dio.OutBit ( Id , 0 , 0 );
Ret = dio.OutBit ( Id , 1 , 1 );
}
else {
Debug.Log ("State 1");
Ret = dio.OutBit ( Id , 0 , 1 );
Ret = dio.OutBit ( Id , 1 , 0 );
}
}
}