Windowsにおけるアナログ入出力デバイスのインストールと使い方

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

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

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

OS Windows 11
開発環境 Visual Studio 2019
デバイス AIO-160802GY-USBnew window

■目次
1.セットアップ
 1.1 外部機器との接続
 1.2 ソフトウェアのインストール
 1.3 ハードウェアのインストール
 1.4 診断プログラムによる動作確認
2.プログラムの作成
Visual C# / VC++ / VB.NET / Python

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

~Visual C#のプログラム例~
2.1 プロジェクトの作成
2.2 Aio関数使用のための設定
2.3 コードの作成
2.4 プログラムの実行

2.1 プロジェクトの作成

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

aio_tutorial_2_cs_0010

[新しいプロジェクト]ダイアログボックスのテンプレートから、[Visual C#]の[Windows フォーム アプリケーション]を選択し、作成するプロジェクトの名前と保存場所を指定します。

aio_tutorial_2_cs_0020

この例ではプロジェクト名、ソリューション名をtestにしています。[作成]をクリックすると、プロジェクトが作成されます。

aio_tutorial_2_cs_0030

2.2 Aio関数使用のための設定

ファイルの追加
Visual C#でデバイスドライバの関数を使用するためには、CaioCs.csファイルを追加する必要があります。CaiCs.csファイルを使うために、プロジェクトの保存場所にファイルをコピーします。CaioCs.csは「<インストール先フォルダ>¥AIOWDM ¥ Sample ¥Inc」にあります。

aio_tutorial_2_cs_0040

ファイルをプロジェクトの保存場所にコピーした後、「プロジェクト(P)」-[既存項目の追加(G)]からCaioCs.csを追加します。

aio_tutorial_2_cs_0050

プロジェクトの設定を変更します。プロジェクトのプロパティを開きダイアログの画面左側で[ビルド]を選択します。コールバック対応として必要なため[アンセーフコードの許可]にチェックを入れ、OKを押します。

aio_tutorial_2_cs_0060

コードの追加
追加したCaioCs.csを使用するため、以下のコードをC#ソースコード(拡張子.csファイル)、に追加します。

先頭に追加

using CaioCs;

フォームクラスの先頭に追加

Public class Form1 : System.Windows.Forms.Form
{
	Caio aio = new Caio();	//インスタンスの作成

2.3 コードの作成

プロジェクトの作成、ファイルの追加/コードの追加が完了したら、プログラムを作成します。
プログラム例ではボタンを押したら入力ch0の値を確認し、出力ch0に-1を乗算した値を出力します。

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

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

aio_tutorial_2_cs_0070

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

aio_tutorial_2_cs_0080

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

Name Button
Font 任意
Text Click

aio_tutorial_2_cs_0090

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

初期化処理
 初期化処理を行い、デバイスIdを取得し、デバイスにアクセス可能にします。AioInit(初期化処理)が正常終了した後、AioExit(終了処理)を呼び出すまで各機能関数が使えるようになります。 デバイス名は"AIO000“としていますが、異なる場合は登録したデバイス名を使用してください。

int Ret;							// 戻り値
short Id;							// デバイスId
string DeviceName;					// デバイス名
DeviceName = "AIO000";				// デバイス名を格納
Ret = aio.Init ( DeviceName , out Id );	// デバイスIdを取得し、デバイスにアクセス可能にする

入力処理
 現在の入力されているデータを確認します。

float Data;							// 値
short ChNo;						// チャネル番号
ChNo = 0;							// チャネル番号に0を代入
Ret = aio.SingleAiEx ( Id , 0 , out Data );	// ChNoから1回アナログ入力

出力処理
 出力Chに確認時の入力値を出力します。入力値をそのまま出力しても構いませんが、今回は入力値に-1を掛ける処理を行い、入力値とは異なる値を出力します。

Data *= -1;							// 入力値に-1を乗算
Ret = aio.SingleAoEx (Id, ChNo, Data);		// ChNo,に1回アナログ出力

終了処理
 終了処理を行い、デバイスをアクセス不能にします。
 AioExit(終了処理)を呼び出すまで、各機能関数が使えます。

Ret = aio.Exit(Id);						// Idのデバイスをアクセス不能にします

コード_(Form1.cs)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using CaioCs;								// デバイスドライバ関数使用のために追加

namespace test
{
    public partial class Form1 : Form
    {
        Caio aio = new Caio();					// デバイスドライバ関数使用のために追加
        public Form1()
        {
            InitializeComponent();
        }                         
        private void Button_Click(object sender, EventArgs e)		// ボタンをクリックした場合の処理を記載
        {
         //=========================================
         // 変数の宣言
         //==========================================
            int     Ret;							// 戻り値
            short   Id;							// デバイスId
            short   ChNo;							// チャネル番号
            float    Data;							// 入力データ
            string   DeviceName;					// デバイス名
            ChNo  = 0;							// チャネル番号に0を代入(例として入力、出力のch0を使用するため)
         //==========================================
         // 初期化処理
         //==========================================
            DeviceName = "AIO000";				// デバイス名を格納
            Ret = aio.Init(DeviceName, out Id);		// デバイスIdを取得し、 デバイスにアクセス可能にする
         //==========================================
         // 入力処理
         //==========================================
            Ret = aio.SingleAiEx(Id, ChNo, out Data);	// ChNoから1回アナログ入力

         //==========================================
         // 出力処理
         // ==========================================
            Data *= -1;
            Ret = aio.SingleAoEx(Id, ChNo, Data);		// ChNo,に1回アナログ出力
         //==========================================
         // 終了処理
         //==========================================
	    Ret = aio.Exit(Id);						// Idのデバイスをアクセス不能にする
        }
    }
}

Ret(戻り値)について

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

string	ErrorString;							// エラー文字入力用変数
if (ret != 0){									// 戻り値が正常終了以外の場合
		aio.GetErrorString(ret, out ErrorString);		// エラー確認
		xxx.Text	= ErrorString;					// xxxにエラー内容を表示
}

2.4 プログラムの実行

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

aio_tutorial_2_cs_0100

画面上のボタンをクリックするとAIO000の入力ch0の入力を確認し、出力ch0から確認した値に-1をかけたものを出力します。

aio_tutorial_2_cs_0110

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

サンプルプログラム
プログラムの例として簡易入出力、高機能入出力、など豊富な種類のサンプルプログラムが添付されています。
Visual C#  版の他にも Visual C++ 版 や Visual Basic 版、Python版も用意されています。

サンプルのコードは以下の場所にあります。
<開発環境をインストールした場所> ¥AIOWDM ¥ Sample ¥ Vcs2010

• C#の場合

Python以外の各言語サンプルフォルダ

┣━━━Ai アナログ入力用サンプルフォルダ

┣━━DevBuf デバイスバッファ用サンプルフォルダ
┣━━MultiAi 簡易入力サンプル(複数チャネル)
┣━━SingleAi 簡易入力サンプル(1チャネル)
┗━━UsrBuf ユーザバッファ用サンプルフォルダ

┣━━━Ao アナログ出力用サンプルフォルダ

┣━━DevBuf デバイスバッファ用サンプルフォルダ
┣━━MultiAo 簡易出力サンプル(複数チャネル)
┣━━SingleAo 簡易出力サンプル(1チャネル)
┗━━UsrBuf ユーザバッファ用サンプルフォルダ

┣━━━Cnt カウンタ、タイマ用サンプルフォルダ

┣━━Counter
┣━━Interval
┗━━Watch

┣━━━Dio デジタル入出力用サンプルフォルダ

┣━━DioBit
┣━━DioByte

┗━━━Other その他のサンプル用フォルダ

┣━━Convert
┗━━Multi1

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

~Visual C++のプログラム例~
2.1 プロジェクトの作成
2.2 Aio関数使用のための設定
2.3 コードの作成
2.4 プログラムの実行

2.1 プロジェクトの作成

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

aio_tutorial_3_cpp_0010

[新しいプロジェクト]ダイアログボックスのテンプレートから、[Visual C++]の[MFC アプリ]を選択し、作成するプロジェクトの名前と保存場所を指定します。

aio_tutorial_3_cpp_0020

この例ではプロジェクト名、ソリューション名をtestにしています。[作成]をクリックすると「MFC アプリケーション」が表示されます。

aio_tutorial_3_cpp_0030

「アプリケーションの種類」を「ダイアログベース」に変更し、「完了」をクリックするとプロジェクトが作成されます。

aio_tutorial_3_cpp_0040

2.2 Aio関数使用のための設定

ファイルの追加
Visual C++でデバイスドライバの関数を使用するためには、ヘッダファイルCaio.h、ライブラリCAIO.libを追加する必要があります。それぞれ使用するために、プロジェクトの保存場所にファイルをコピーします。
Caio.hは「<インストール先フォルダ>¥AIOWDM ¥ Sample ¥Inc」にあります。
CAIO.libは「<インストール先フォルダ>¥AIOWDM ¥ Sample ¥Lib_amd64」または「<インストール先フォルダ>¥AIOWDM ¥ Sample ¥Lib_i386」にあります。32bit用は「¥Lib_i386」、64bit用は「¥Lib_amd64」にあるため、使用するほうをインクルードしてください。

aio_tutorial_3_cpp_0050

ファイルをプロジェクトの保存場所にコピーした後、「プロジェクト(P)」-[既存項目の追加(G)]からCAIO.Libを追加します。

aio_tutorial_3_cpp_0060

コードの追加
追加したCaio.hを使用するために、以下のコードをC++ソースコード(拡張子.cppファイル)に追加します。

includeが書かれているところに追加します。

#include "Caio.h"

2.3 コードの作成

プロジェクトの作成、デバイスドライバ関数の追加が完了したら、プログラムを作成します。
プログラム例ではボタンを押したら入力ch0の値を確認し、出力ch0に-1を乗算した値を出力します。

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

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

aio_tutorial_3_cpp_0070

■ダイアログ名を変更
ダイアログをクリックするとプロパティの設定を行えます。
Captionを「チュートリアルC++」に変更します。
タイトルが指定した名前になります。

aio_tutorial_3_cpp_0080

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

Name IDC_BUTTON
Caption Click

aio_tutorial_3_cpp_0090

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

• 初期化処理
 初期化処理を行い、デバイスIdを取得し、デバイスにアクセス可能にします。AioInit(初期化処理)が正常終了した後、AioExit(終了処理)を呼び出すまで各機能関数が使えるようになります。 デバイス名は"AIO000“としていますが、異なる場合は登録したデバイス名を使用してください。

long Ret;						// 戻り値
short Id;						// デバイスId
char * DeviceName;				// デバイス名
DeviceName = "AIO000";			// デバイス名を格納
Ret = AioInit(DeviceName, &Id);		// デバイスIdを取得し、デバイスにアクセス可能にする

• 入力処理
 現在の入力されているデータを確認します。

float Data;							// 入力データ
short ChNo;						// チャネル番号
ChNo = 0;
Ret = AioSingleAiEx(Id, ChNo, &Data);	// 入力値の確認

• 出力処理
 出力Chに確認時の入力値を出力します。入力値をそのまま出力しても構いませんが、今回は入力値に-1を掛ける処理を行い、入力値とは異なる値を出力します。

Data *= -1;						// 入力値に-1を乗算
Ret = AioSingleAoEx(Id, ChNo, Data);		// ChNo,に1回アナログ出力

終了処理
 終了処理を行い、デバイスをアクセス不能にします
 AioExit(終了処理)を呼び出すまで、各機能関数が使えます。

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

コード_(testDlg.cpp)

// testDlg.cpp : 実装ファイル
//

#include "pch.h"                           
#include "framework.h"
#include "test.h"
#include "testDlg.h"
#include "afxdialogex.h"
#include "CAio.h"

void CtestDlg::OnBnClickedButton()
{
     //=========================================
     // 変数の宣言
     //==========================================
     int     Ret; 						// 戻り値
     short   Id; 						// デバイスId
     short   ChNo; 					// チャネル番号
     float    Data; 					// 入力データ
     char * DeviceName;  				// デバイス名
     ChNo  = 0;						//チャネル番号に0を代入

     //==========================================
     // 初期化処理
     //==========================================
     DeviceName = "AIO000";			// デバイス名を格納
     Ret = AioInit(DeviceName, &Id);		// デバイスIdを取得し、デバイスにアクセス可能にする
     //==========================================
     // 入力処理
     //==========================================
     Ret = AioSingleAiEx(Id, ChNo, &Data);	// ChNoから1回アナログ入力
     //==========================================
     // 出力処理
     // ==========================================
     Data *= -1;
     Ret   = AioSingleAoEx(Id, ChNo, Data);	// ChNo,に1回アナログ出力
     //==========================================
     // 終了処理
     //==========================================
     Ret = AioExit(Id);					// Idのデバイスをアクセス不能にする
}

Ret(戻り値)について

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

char ErrorString[256];					// エラー文字入力用変数
if (ret != 0){							// 戻り値が正常終了以外の場合
		AioGetErrorString(ret, ErrorString);	// エラー確認
}

2.4 プログラムの実行

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

aio_tutorial_3_cpp_0100

画面上のボタンをクリックするとAIO000の入力ch0の入力を確認し、出力ch0から確認した値に-1をかけたものを出力します。

aio_tutorial_3_cpp_0110

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

サンプルプログラム
プログラムの例として簡易入出力、高機能入出力、など豊富な種類のサンプルプログラムが添付されています。
Visual C++  版の他にも Visual C# 版 や Visual Basic 版、Python版も用意されています。

サンプルのコードは以下の場所にあります。
<開発環境をインストールした場所> ¥AIOWDM ¥ Sample ¥ Vc2013

• C++の場合

Python以外の各言語サンプルフォルダ

┣━━━Ai アナログ入力用サンプルフォルダ

┣━━DevBuf デバイスバッファ用サンプルフォルダ
┣━━MultiAi 簡易入力サンプル(複数チャネル)
┣━━SingleAi 簡易入力サンプル(1チャネル)
┗━━UsrBuf ユーザバッファ用サンプルフォルダ

┣━━━Ao アナログ出力用サンプルフォルダ

┣━━DevBuf デバイスバッファ用サンプルフォルダ
┣━━MultiAo 簡易出力サンプル(複数チャネル)
┣━━SingleAo 簡易出力サンプル(1チャネル)
┗━━UsrBuf ユーザバッファ用サンプルフォルダ

┣━━━Cnt カウンタ、タイマ用サンプルフォルダ

┣━━Counter
┣━━Interval
┗━━Watch

┣━━━Dio デジタル入出力用サンプルフォルダ

┣━━DioBit
┣━━DioByte

┗━━━Other その他のサンプル用フォルダ

┣━━Convert
┗━━Multi1

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

~Visual Basic .Net のプログラム例~
2.1 プロジェクトの作成
2.2 Aio関数使用のための設定
2.3 コードの作成
2.4 プログラムの実行

2.1 プロジェクトの作成

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

aio_tutorial_4_vb_0010

[新しいプロジェクト]ダイアログボックスのテンプレートから、[Visual Basic .Net]の[Windows フォーム アプリケーション]を選択します。

aio_tutorial_4_vb_0020

作成するプロジェクトの名前と保存場所を指定します。この例ではプロジェクト名、ソリューション名をtestにしています。
[作成]をクリックすると、プロジェクトが作成されます。

aio_tutorial_4_vb_0030

2.2 Aio関数使用のための設定

ファイルの追加
Visual Basic.NETでデバイスドライバの関数を使用するためには、Caio.vbファイルを追加する必要があります。Caio.vbファイルを使うために、プロジェクトの保存場所にファイルをコピーします。
Caio.vbは「<インストール先フォルダ>¥AIOWDM ¥ Sample ¥Inc」にあります。

aio_tutorial_4_vb_0040

ファイルをプロジェクトの保存場所にコピーした後、「プロジェクト(P)」-[既存項目の追加(G)]からCaio.vbを追加します。

aio_tutorial_4_vb_0050

2.3 コードの作成

プロジェクトの作成、デバイスドライバ関数の追加が完了したら、プログラムを作成します。
プログラム例ではボタンを押したら入力ch0の値を確認し、出力ch0に-1を乗算した値を出力します。

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

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

aio_tutorial_4_vb_0060

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

aio_tutorial_4_vb_0070

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

Name button
Font 任意
Text Click

aio_tutorial_4_vb_0080

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

• 初期化処理
 初期化処理を行い、デバイスIdを取得し、デバイスにアクセス可能にします。AioInit(初期化処理)が正常終了した後、AioExit(終了処理)を呼び出すまで各機能関数が使えるようになります。 デバイス名は"AIO000“としていますが、異なる場合は登録したデバイス名を使用してください。

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

• 入力処理
 現在の入力されているデータを確認します。

Dim		Data As Single					' 値
Dim		ChNo As Integer				' チャネル番号
ChNo	= 0							'チャネル番号に0を代入
Ret		= AioSingleAiEx(Id, ChNo, Data)		' ChNoから1回アナログ入力

• 出力処理
 出力Chに確認時の入力値を出力します。入力値をそのまま出力しても構いませんが、今回は入力値に-1を掛ける処理を行い、入力値とは異なる値を出力します。

Data		*= -1						'入力値に-1を乗算
Ret		= AioSingleAoEx (Id, ChNo, Data)	' ChNo,に1回アナログ出力

• 終了処理
 終了処理を行い、デバイスをアクセス不能にします。
 AioExit(終了処理)を呼び出すまで、各機能関数が使えます。

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

コード_(Form1.vb)

Public Class Form1

    '==========================================
    ' 変数の宣言
    '==========================================
    Dim Id As Short					' 戻り値
    Dim Ret As Integer				' デバイスId
    Dim ChNo As Integer				' チャネル番号
    Dim Data As Single				' 入力データ
    Dim Devicename As String			' デバイス名

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

        '==========================================
        ' 入力処理
        '==========================================
        Ret = AioSingleAiEx(Id, ChNo, Data)	' ChNoから1回アナログ入力

        '==========================================
        ' 出力処理
        '==========================================
	Data	*= -1
       	Ret = AioSingleAoEx(Id, ChNo, Data)	' ChNo,に1回アナログ出力

        '==========================================
        ' 終了処理
        '==========================================
        Ret = AioExit(Id)
    End Sub
End Class

Ret(戻り値)について

関数の戻り値を確認し正常に終了したかを確認することができます。正常終了の場合0、エラーの場合0以外が返ってきます。
関数の戻り値を確認し正常に終了したかを確認することができます。正常終了の場合0、エラーの場合0以外が返ってきます。
戻り値処理(例)

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

2.4 プログラムの実行

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

aio_tutorial_4_vb_0090

画面上のボタンをクリックするとAIO000の入力ch0の入力を確認し、同じ値に-1をかけたものを出力ch0から出力します。

aio_tutorial_4_vb_0100

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

サンプルプログラム
プログラムの例として簡易入出力、高機能入出力、など豊富な種類のサンプルプログラムが添付されています。
Visual Basic 版の他にも Visual C++ 版 や Visual C# 版、Python版も用意されています。

サンプルのコードは以下の場所にあります。
<開発環境をインストールした場所> ¥AIOWDM ¥ Sample ¥ Vb2010

• VBの場合

Python以外の各言語サンプルフォルダ

┣━━━Ai アナログ入力用サンプルフォルダ

┣━━DevBuf デバイスバッファ用サンプルフォルダ
┣━━MultiAi 簡易入力サンプル(複数チャネル)
┣━━SingleAi 簡易入力サンプル(1チャネル)
┗━━UsrBuf ユーザバッファ用サンプルフォルダ

┣━━━Ao アナログ出力用サンプルフォルダ

┣━━DevBuf デバイスバッファ用サンプルフォルダ
┣━━MultiAo 簡易出力サンプル(複数チャネル)
┣━━SingleAo 簡易出力サンプル(1チャネル)
┗━━UsrBuf ユーザバッファ用サンプルフォルダ

┣━━━Cnt カウンタ、タイマ用サンプルフォルダ

┣━━Counter
┣━━Interval
┗━━Watch

┣━━━Dio デジタル入出力用サンプルフォルダ

┣━━DioBit
┣━━DioByte

┗━━━Other その他のサンプル用フォルダ

┣━━Convert
┗━━Multi1

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

~Python のプログラム例~
2.1 プロジェクトの作成
2.2 Aio関数使用のための設定
2.3 コードの作成
2.4 プログラムの実行

2.1 プロジェクトの作成

拡張子が.pyのファイルを作成します。お好みのテキストエディタで、拡張子が.pyのファイルを作成します。
この例ではファイル名をtest.pyにしています。

2.2 Aio関数使用のための設定

ファイルの追加
Pythonでデバイスドライバの関数を使用するためには、caio.pyファイルを追加する必要があります。caio.pyファイルを使うために、プロジェクトの保存場所にファイルをコピーします。caio.pyは「<インストール先フォルダ>¥AIOWDM ¥ Sample ¥Inc」にあります。

aio_tutorial_5_vb_0010

モジュールのインクルード
追加したcaio.pyを使用するために、以下のソースコードをtest.pyに追加します。

import ctypes
import ctypes.wintypes
import caio

2.3 コードの作成

プロジェクトの作成、 caio.pyの importが完了したら、プログラムを作成します。
プログラム例では実行後自動で入力ch0の値を確認し、出力ch0に任意の値を出力します。

• 初期化処理
 初期化処理を行い、デバイスIdを取得し、デバイスにアクセス可能にします。AioInit(初期化処理)が正常終了した後、AioExit(終了処理)を呼び出すまで各機能関数が使えるようになります。 デバイス名は"AIO000“としていますが、異なる場合は登録したデバイス名を使用してください。

Ret = ctypes.c_long()										# 戻り値
Id = ctypes.c_short()										# デバイスId
DeviceName = ctypes.c_char()								# デバイス名
DeviceName = "AIO000"									# デバイス名を格納
Ret.value = caio.AioInit(DeviceName.encode(), ctypes.byref(Id))		# デバイスIdを取得し、デバイスにアクセス可能にする

• 入力処理
 現在の入力されているデータを確認します。

Data = ctypes.c_float()									# 値
ChNo = ctypes.c_short()									# ポート番号
ChNo = 0
Ret.value = caio.AioSingleAiEx(Id, ChNo, ctypes.byref(Data))		# ChNoから1回アナログ入力
print(f'AioSIngleAiEx ch : data = 0x{Data}')					# データの表示

• 出力処理
 出力Chに確認時の入力値を出力します。出力値は指定された値を出します。

Data = input("出力値を入れてください: ")		# 出力するデータを入力
Data  = ctypes.c_float(int(Data))			# 出力するデータを設定
Ret = caio.AioSingleAoEx (Id, ChNo, Data)		# ChNo,に1回アナログ出力

• 終了処理
 終了処理を行い、デバイスをアクセス不能にします。
 AioExit(終了処理)を呼び出すまで、各機能関数が使えます。

Ret = caio.AioExit(Id)						# Idのデバイスをアクセス不能にします

コード_(test.py)

import ctypes
import ctypes.wintypes
import caio

#==========================================
# 変数の宣言
#==========================================
Id = ctypes.c_short()						# 戻り値
Ret = ctypes.c_long()						# デバイスId
DeviceName = ctypes.c_char()				# デバイス名
ChNo = ctypes.c_short()					# ポート番号
Data = ctypes.c_float()					# 値
PortNo = 0
#==========================================
# 初期化処理
#==========================================
DeviceName  =  "AIO000"								# デバイス名を格納
Ret.value  	= caio.AioInit(DeviceName.encode(), ctypes.byref(Id))	# デバイスIdを取得し、デバイスにアクセス可能
#==========================================
# 入力処理
#==========================================
Ret.value	= caio.AioSIngleAiEx(Id, ChNo, ctypes.byref(Data))	# 1回アナログ入力
print(f'AioSIngleAiEx ch : data = 0x{Data}')				# データの表示

#==========================================
# 出力処理時のデータ
#==========================================
Data = input("出力値を入れてください: ")		# 出力するデータを入力
Data  = ctypes.c_float(int(Data))			# 出力するデータを設定

#==========================================
# 出力処理
#==========================================
Ret.value  = caio.AioSingleAoEx(Id,ChNo, Data)	# 1回アナログ出力

#==========================================
# 終了処理
#==========================================
Ret.value 	= caio.AioExit(Id)				# Idのデバイスをアクセス不能

Ret(戻り値)について

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

ErrorString = ctypes.create_string_buffer(256)					# エラー文字入力用変数
if (Ret.value != 0) :										# 戻り値が正常終了以外の場合
		Ret.value = caio.AioGetErrorString ( Ret , ErrorString )		# エラー確認

2.4 プログラムの実行

コードが完成したら、プログラムの実行を行います。PowerShellを使用して実行します。今回の説明ではPowerShell背説明をしますがコマンドプロンプトでpythonを実行することもできます。

コマンドプロンプトは

  1. スタートボタンをクリック
  2. 検索バーに「PowerShell」と入力
  3. コマンドプロンプトを選択

することで起動できます。

aio_tutorial_5_vb_0020

コマンドプロンプトで「cd ファイルの場所」を入力し作成したファイルの場所へ移動後、[python.exe 作成したファイル名(test.py)]を入力すると実行されます。

aio_tutorial_5_vb_0030

実行するとAIO000の入力ch0の値を確認し、出力ch0に任意の値を出力します。

aio_tutorial_5_vb_0040

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

サンプルプログラム
プログラムの例として簡易入出力、高機能入出力、など豊富な種類のサンプルプログラムが添付されています。
Python 版の他にも Visual C++ 版 や Visual C# 版、Visual Basic版も用意されています。

サンプルのコードは以下の場所にあります。
<開発環境をインストールした場所> ¥AIOWDM ¥ Sample ¥ Python3

• Pythonの場合

Pythonサンプルフォルダ

┣━━━Ai アナログ入力用サンプルフォルダ

┣━━DevBuf デバイスバッファ用サンプルフォルダ
┣━━MultiAi 簡易入力サンプル(複数チャネル)
┗━━SingleAi 簡易入力サンプル(1チャネル)

┗━━━Ao アナログ出力用サンプルフォルダ

┣━━DevBuf デバイスバッファ用サンプルフォルダ
┣━━MultiAo 簡易入力サンプル(複数チャネル)
┗━━SingleAo 簡易入力サンプル(1チャネル)

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