株式会社インタフェース Topページへ サイトマップ
English Site
Made in 日本
新着情報 製品情報 download 会社概要 採用情報 購入方法 資料請求
 
>>HowtoのTopへ

Visual C++によるDIO入門書 4.2 デジタル出力 最終更新日:2008/08/29
 
このページでは、「Visual C++によるDIO入門書 TUT-0024」の内容を元に、Visual C++ 2008で使用する際の差分情報を掲載しております。
ここに掲載されていない情報は、「Visual C++によるDIO入門書 TUT-0024」をご覧下さい。
「Visual C++によるDIO入門書 TUT-0024」については、こちらから ダウンロードください。
注) 弊社Web siteからファイルをダウンロードする場合は、ユーザIDを取得してください。

Step1.メインウィンドウ作成
   ここでは、これから作成するプログラムの基本フォーム作成を行います。(詳しくは『4.1デジタル入力』でのStep1,Step2を参考にしてください。)
  
  1. Visual Studio 2008を起動し、新しいプロジェクト(プロジェクト名:Output)を作成します。
  2. プロジェクトにFBIDIO.LIB, FBIDIO.Hのパス設定を行い、FBIDIO.LIBファイルをリンクさせます。(詳しくは『4.1デジタル入力』のStep2を参照してください)
Step2.単点出力/バイト出力/ワード出力/ダブルワード出力
   ここでは、I/Oモジュールのデータ出力ライン(OUT)より状態(ON/OFF)の出力を行うプログラムを作成します。(詳しくは『4.1デジタル入力』でのStep3,Step4を参考にしてください。)
  ■単点出力
  
  1. 「表示」→「リソースビュー」を選択して リソースビューを表示します。
  2. Menuフォルダを展開して「IDR_MAINFRAME」を ダブルクリックします。
  3. 空白の部分(ヘルプの隣)をクリックし選択後、キャプションを入力します。「Output」と入力してください。
  4. 「Output」をクリックし、プルダウンメニューの空白部分をクリックし選択後、キャプションを入力します。「単点出力」と入力してください。
  5. 「単点出力」をクリックします。プロパティが表示されますので IDに「ID_OUTPUTSINGLE」と入力してください。
  6. 先程作成したプルダウンメニューの中の「単点出力」の上にマウスカーソルをもってきて 右クリックし「イベントハンドラの追加」を選択します。
  7. イベントハンドラウィザードの画面で、メッセージの種類を「COMMAND」、クラスの一覧を「COutputView」を選択し、関数ハンドラ名が「OnOutputsingle」になっていることを確認し、「追加して編集」をクリックします。
  8. ソリューションエクスプローラを表示し、ソースファイルフォルダを展開してOutputView.cppの最初の部分に #include “fbidio.h”を追加します。
  9. 「表示」→「クラスビュー」でクラスビューを表示し、COutputViewクラスを展開してOnOutputsingle関数に以下のコードを記述します。
    (COutputViewクラスのOnOutputsingle 関数のコード サンプリング)

    void COutputView::OnOutputsingle() {
        // TODO: この位置にコマンド ハンドラ用のコードを追加してください
        INT nRet;                // 関数の実行結果
        INT nBuffer[4];          // 状態を設定するバッファ
        HANDLE hDeviceHandle;    // デバイスハンドル

        // 出力接点の状態を設定します
        nBuffer[0] = 1;
        nBuffer[1] = 0;
        nBuffer[2] = 1;
        nBuffer[3] = 0;

        // I/O モジュールの初期化を行います
        hDeviceHandle = DioOpen( "FBIDIO1", FBIDIO_FLAG_SHARE);
        if (hDeviceHandle == INVALID_HANDLE_VALUE) {
            AfxMessageBox("デバイスのオープンに失敗しました");
            return;
        }

        // データ出力(OUT1〜OUT4 までの状態を設定します)
        nRet = DioOutputPoint( hDeviceHandle, &nBuffer[0], 1, 4);
        if (nRet != FBIDIO_ERROR_SUCCESS) {
            AfxMessageBox("データ出力に失敗しました");
        } else {
            AfxMessageBox("データ出力に成功しました");
        }

        // 終了処理
        nRet = DioClose( hDeviceHandle );
        if (nRet != FBIDIO_ERROR_SUCCESS) {
            AfxMessageBox("デバイスのクローズに失敗しました");
        }
    }
  ■バイト出力
   先にポートの出力接点を1点ずつ設定する方法を記載しました。 次は、一度に複数の出力接点を設定するプログラムを作成します。 複数の出力接点の設定には、バイト出力(8点),ワード出力(16点),ダブルワード出力(32点)があります。 ここでは、バイト出力を行います。
  
  1. プルダウンメニューに項目の追加を行います。「Output」をクリックし、プルダウンメニューの空白部分をクリックし選択後、キャプションを入力します。「バイト出力」と入力してください。
  2. 「バイト出力」をクリックします。プロパティが表示されますので IDに「ID_OUTPUTBYTE」と入力してください。
  3. 先程作成したプルダウンメニューの中の「バイト出力」の上にマウスカーソルをもってきて 右クリックし「イベントハンドラの追加」を選択します。
  4. イベントハンドラウィザードの画面で、メッセージの種類を「COMMAND」、クラスの一覧を「COutputView」を選択し、関数ハンドラ名が「OnOutputByte」になっていることを確認し、「追加して編集」をクリックします。
  5. ダイアログを作成します。リソースビューの Output.rcを右クリックし「リソースの追加」を選択します。
  6. Dialogを選択し、「新規作成」をクリックします。
  7. リソースビューから 作成したダイアログをダブルクリックしてプロパティを表示します。

    IDに「IDD_OUTBYTEBOX」、Captionに「バイト出力」と入力してください。
  8. ダイアログを右クリックし、「クラスの追加」を選択します。
  9. MFCクラスウィザードが表示されますので、クラス名に「COutByteDialog」と入力し、「完了」をクリックしてください。
  10. ダイアログにEdit Controlを作成します。
  11. 作成したEdit Controlを右クリックし、「変数の追加」を選択します。
  12. カテゴリを「Value」、最大文字数を「2」、変数の種類を「CString」、変数名を「m_szByte」と入力し、「完了」をクリックしてください。
  13. ソリューションエクスプローラを表示し、ソースファイルフォルダを展開してOutputView.cppの最初の部分に #include “fbidio.h”、#include ”OutByteDialog.h”を追加します。
  14. 「表示」→「クラスビュー」でクラスビューを表示し、COutputViewクラスを展開してOnOutputbyte関数に以下のコードを記述します。
    (COutputViewクラスのOnOutputbyte 関数のコード サンプリング)

    void COutputView::OnOutputbyte() {
        // TODO: この位置にコマンド ハンドラ用のコードを追加してください
        INT nRet;                // 関数の実行結果
        HANDLE hDeviceHandle;    // デバイスハンドル
        COutByteDialog dlg;      // ダイアログのクラス名
        int byValue;             // 型変換後の格納先

        // ダイアログを表示します
        nRet = dlg.DoModal();
        if (nRet != IDOK) return;

        // データの型変換
        sscanf(dlg.m_szByte, "%x", &byValue);    // m_szByte = メンバ変数

        // I/O モジュールの初期化を行います
        hDeviceHandle = DioOpen( "FBIDIO1", FBIDIO_FLAG_SHARE);
        if (hDeviceHandle == INVALID_HANDLE_VALUE) {
            AfxMessageBox("デバイスのオープンに失敗しました");
            return;
        }

        // データ出力(OUT1〜OUT8 までの状態を設定します)
        nRet = DioOutputByte( hDeviceHandle, FBIDIO_OUT1_8, byValue);
        if (nRet != FBIDIO_ERROR_SUCCESS) {
            AfxMessageBox("データ出力に失敗しました");
        } else {
            AfxMessageBox("データ出力に成功しました");
        }

        // 終了処理
        nRet = DioClose( hDeviceHandle );
        if (nRet != FBIDIO_ERROR_SUCCESS) {
            AfxMessageBox("デバイスのクローズに失敗しました");
        }
    }

    「ワード出力」、「ダブルワード出力」の説明は省略します。TUT-0024をご覧下さい。

上へ


© 2012 Interface Corporation. All rights reserved.
製品を選ぶ
・スペック検索
・用途/使い方から
・インタフェースモジュールが
  使えるCPU

・ボックス型コンピュータ
・新製品
・おすすめ/売れ筋から
・製品マップから
・カテゴリから
・広告から
・パンフレットから
・型式から
産業用パソコン
Classembly Devices®
・エコ
・省エネ
・車載
・タフコントローラ
・I/O
・タッチパネル
・マザコン
FAコントローラ
・長期安心
・スロットイン
・ノンストップ
・分散処理コントローラ

産業用マザーボード
・ATXマザーボード
・Mini-ITX マザーボード

インタフェースモジュール
・インタフェースモジュール
・最大50%OFF
  特別キャンペーン販売実施中

・サブプロセッサモジュール
・拡張ユニット
・アクセサリ
・ソフトウェア
・開発らくらくパッケージ
部品販売
・クラシック販売
・ディスコン部品販売
・ポップス部品販売
サポート
・サポート
・ユーザID登録
・製品貸出サービス
・コラム集
・FAQ検索
・個人情報の取扱について

・サイトマップ