Windowsにおけるデジタル入出力デバイスのインストールと使い方

当社のデジタル入出力デバイスを使用するための準備から基本的なプログラム開発までの一連の流れをご紹介します。
このチュートリアルでは、デバイスを初めてご使用される方向けに、スイッチ等の外部機器との接続や、ソフトウァのインストール(セットアップ)、デジタル入出力のプログラムの組み方をご紹介しています。
ご紹介する主な内容は、以下となります。

  • 外部機器との接続例
  • Windowsにおけるデバイスのセットアップ
  • Visual C#, VC++, VB.NET, Python におけるプログラム作成例

今回使用する条件は以下となります。
その他のOS、デバイスをご使用の場合、オンラインヘルプnew windowも合わせてご確認ください。

OS Windows 11
開発環境 Visual Studio 2019
デバイス DIO-1616LX-USBnew window
その他 PCB37PS-Pnew window シールド付きケーブル
※実際の製品型式にはPCB37PS-1.5Pのようにケーブル長の情報が含まれます。
EPD-37new window 中継端子台ターミナルユニット(37ピン)
CM-32new window デジタル入出力信号モニタアクセサリ
外部電源(12V~24V仕様)

■目次
1.ハードウェア編セットアップ
 1.1 デジタルデバイス~端子台の接続
 1.2 外部機器の配線1-スイッチ-
 1.3 外部機器の配線2-LEDランプ-
 1.4 デバイスのセットアップ
 1.5 ハードウェアのインストール
 1.6 診断プログラムによる動作確認
2.ソフトウェア編 プログラムの作成
 2.1 プロジェクトの作成
Visual C# / VC++ / VB.NET / Python 

2.プログラムの作成
この章ではVisual Studio 2019を使用してVisual C# / VC++ / VB.NET / Pythonでのプログラムの作成を行います。
Visual Studioのバージョンが異なる場合、項目やコマンドが異なる場合があります

~Visual Basic .Net のプログラム例~
2.1 プロジェクトの作成
2.2 Dio関数使用のためのファイル追加
2.3 コードの作成
2.4 プログラムの実行

2.1 プロジェクトの作成

Visual Studio 2019でプロジェクトを作成する方法を説明します。Visual Studio 2019を起動し、[ファイル(F)]から[新規作成 (N)]-[プロジェクト(P)]を選択します。

dio_tutorial_4_vb_0010

[新しいプロジェクト]ダイアログボックスのテンプレートから、[Visual Basic .Net]の[Windows フォーム アプリケーション]を選択し、作成するプロジェクトの名前と保存場所を指定します。
この例ではプロジェクト名、ソリューション名をtestにしています。

dio_tutorial_4_vb_0020

[作成]をクリックすると、プロジェクトが作成されます。

dio_tutorial_4_vb_0030

2.2 Dio関数使用のためのファイル追加

Visual Basic.NETでデバイスドライバの関数を使用するためには、CDIO.VBファイルを追加する必要があります。
CDIO.VBファイルを使うために、プロジェクトの保存場所にファイルをコピーします。
CDIO.VBは「<インストール先フォルダ>¥DIOWDM ¥ Sample ¥Inc」にあります。
ファイルをプロジェクトの保存場所にコピーした後、「プロジェクト(P)」-[既存項目の追加(G)]からCdioCs.csを追加します。

2.3 コードの作成

プロジェクトの作成、ファイル追加が完了したら、プログラムを作成します。
プログラム例ではボタンを押したら入力ポート0のスイッチを確認し、出力ポート0のランプ指定値を点灯します。内部処理的には、入力論理ポート0の入力値を確認し、出力論理ポート0に固定値を出力するプログラムを作成します。

■ボタンの配置
フォーム上にボタンを配置します。フォーム画面を開き、以下の手順でボタンを作成します。ボタン作成後にも位置、大きさを変えることができます。

  1. ツールボックスでボタンを選択
  2. フォーム上でクリック
  3. クリックしたままドラッグし、好きなサイズのところで離す

dio_tutorial_4_vb_0040

■フォーム名を変更
フォームクリックするとプロパティの設定を行えます。
表示テキストを「チュートリアルVB」に変更します。
タイトルが指定した名前になります。

dio_tutorial_4_vb_0050

同様にボタンをクリックし、以下の項目を変更します。

Name button
Font 任意
Text Click

dio_tutorial_4_vb_0060

■コードの記述
ボタンの配置が終わったらコードを書きます。
作成したボタンをダブルクリックするとコードウィンドウが表示されます。ボタンを押されたときの処理として以下を追加します。

• 初期化処理
 初期化処理を行い、デバイスIdを取得し、デバイスにアクセス可能にします。DioInit(初期化処理)が正常終了した後、DioExit(終了処理)を呼び出すまで各機能関数が使えるようになります。 デバイス名は"DIO000“としていますが、異なる場合は登録したデバイス名を使用してください。(デバイスマネージャー>製品のプロパティ>共通設定 で入力した値です。)

Dim Ret As Integer						' 戻り値
Dim Id As Short ' デバイスId
Dim DeviceName As String ' デバイス名
DeviceName = “DIO000” ' デバイス名を格納
Ret = DioInit(DeviceName, Id) ' デバイスIdを取得し、
'デバイスにアクセス可能にする

• デジタル入力処理
 入力ポードから1バイト(8ビット)入力します。スイッチの状態がONかOFFかを確認します。

Dim Data As Byte						' 値
Dim PortNo As Interger ' ポート番号
PortNo = 0
Ret = DioInpByte(Id, PortNo, Data) ' PortNoから1ポート入力

• デジタル出力ポートの状態確認
 出力ポートの状態を1ポート分確認します。現在の出力を確認し、出力処理で出す値を変更します。

Ret = DioEchoBackByte(Id, PortNo, Data)		' 出力の確認
if (Data = &HAA) Then ' 出力がAAHの場合
    Data = &H55 ' 55Hを入力
Else ' 出力がAAH以外の場合
    Data = &HAA ' AAHを入力
End If

• デジタル出力処理
 出力ポートに1バイト(8ビット)出力します。例として出力は55H、またはAAHとします。

Ret = DioOutByte (Id, PortNo, Data)			' PortNo,にDataを出力

• 終了処理
 終了処理を行い、デジタル入出力デバイスへのアクセス不能にします。
 DioExit(終了処理)を呼び出すまで各機能関数が使えなくなります。

Ret = DioExit(Id)						' Idのデバイスをアクセス不能にします

コード_(Form1.vb)

Public Class Form1

    '==========================================
    ' 変数の宣言
    '==========================================
    Dim Id As Short ' 戻り値
    Dim Ret As Integer ' デバイスId
    Dim PortNo As Integer ' ポート番号
    Dim Data As Byte ' 入力データ
    Dim Devicename As String ' デバイス名

    Private Sub Button_Click(sender As Object, e As EventArgs) Handles button.Click
        PortNo = 0
        '==========================================
        ' 初期化処理
        '==========================================
        Devicename = "DIO000" ' デバイス名を格納
        Ret = DioInit(Devicename, Id) ' デバイスIdを取得し、
'デバイスにアクセス可能にする

        '==========================================
        ' 入力処理
        '==========================================
        Ret = DioInpByte(Id, PortNo, Data) ' 1ポート入力

        '==========================================
        ' 出力 ポート状態
        '==========================================
        Ret = DioEchoBackByte(Id, PortNo, Data) ' 現在の出力の確認

        '==========================================
        ' 出力処理時のデータ
        '==========================================
        If (Data = &HAA) Then
            Data = &H55
        Else
            Data = &HAA
        End If

        '==========================================
        ' 出力処理
        '==========================================
        Ret = DioOutByte(Id, PortNo, Data) ' Dataを出力

        '==========================================
        ' 終了処理
        '==========================================
        Ret = DioExit(Id)

    End Sub
End Class

Ret(戻り値)について

返ってきた値を確認し正常に終了したかを確認することができます。正常終了の場合0、エラーの場合0以外が返ってきます。
本ページでは割愛していますが、実システムを作成する場合は関数実行後エラー処理のコードを追加するようにしてください。
戻り値処理(例) 

EDim ErrorString As New StringBuilder("", 256)			' エラー文字入力用変数
if (ret <> 0) The ' 戻り値が正常終了以外の場合
 DioGetErrorString(ret, ErrorString) ' エラー確認
}

2.4 プログラムの実行

コードが完成したら、プログラムの実行を行います。作成したプログラムを保存し、[ビルド(B)]メニュー>ソリューションのビルドを行います。
終わりましたら[デバック(D)]メニュー>デバックの開始ボタンをクリックし、作成したボタンが表示されることを確認します。

dio_tutorial_4_vb_0070

画面上のボタンをクリックするとDIO000のポート0の入力を確認し、55HまたはAAHを出力ポート0から出力します。

dio_tutorial_4_vb_0080

dio_tutorial_1_common_0150

提供されるAPI関数一覧
デジタル入出力ドライバソフトウェア API-DIO(WDM) は、当社製デジタルデバイスを簡単に制御できるさまざまな関数を用意しています。それぞれの関数は、処理ごとに分かりやすく分類されており、また処理の内容が一目で分かるような名称となっています。これらの関数を使用すれば、さらに高度な処理も可能です。各処理の詳しい内容は「オンラインヘルプnew window>デジタル入出力用ドライバ>関数リファレンス」をご覧ください。

サンプルプログラム
プログラムの例として単純入出力、複数ポート・ビットの入出力、トリガ監視、割り込み(コールバック)など豊富な種類のサンプルプログラムが添付されています。
Visual Basic 版 の他にも Visual C# 版 や Visual C++ 版 、Python版も用意されています。サンプルのコードは以下の場所にあります。
<開発環境をインストールした場所> ¥DIOWDM ¥ Sample ¥ Vb2010

• VBの場合

dio_tutorial_4_vb_0090

• Linuxを使用したい場合
    Linuxを使用される場合はAPI-DIO(LNX) new windowを使用してください。
    インストール方法もWindowsと異なります。(オンラインヘルプnew window