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

Visual BasicによるAD入門書 5.2 アナログ入力[2] 最終更新日:2010/07/02
 
このページでは、「Visual BasicによるAD入門書 TUT-0021」の内容を元に、Visual Basic 2008で使用する際の差分情報を掲載しております。
ここに掲載されていない情報は、「Visual BasicによるAD入門書 TUT-0021」をご覧下さい。
「Visual BasicによるAD入門書 TUT-0021」については、こちらから ダウンロードください。
注) 弊社Web siteからファイルをダウンロードする場合は、ユーザIDを取得してください。

Step1.基本フォーム作成
   ここでは、これから作成するプログラムの画面作成を行います。(詳しくは『5.1 アナログ入力[1]』でのStep1〜Step3を参考にしてください。)
  1. Visual Studio 2008を起動し、新しいプロジェクトを作成します。
    • 「ファイル」メニューより「新規作成」、「プロジェクト」を選択すると、新規作成ダイアログボックスが表示されます。「プロジェクトの種類」から、「Visual Basic」、「Windows」(または「他の言語」、「Visual Basic」、「Windows」)を選び、「Windows フォーム アプリケーション」を選択します。
    • プロジェクト名を記入します。ここではプロジェクト名とし て”AdSmp_2”と記入します。
    • 作業するフォルダを位置で指定してください。その後「OK」をクリックします。
  2. 画面上にフォームが1つ表示されているので、そのフォームを選択し、プロパティウィンドウに値を設定します。
    (プロパティウィンドウの表示は「表示」メニューの「その他のウィンドウ」→「プロパティ ウィンドウ」)
    (Name)を“frmAdTest”にTextを“波形表示”にそれぞれ変更します。
  3. 作成したフォーム(frmAdTest)上にピクチャボックス(PictureBox)コントロールを描画し、(Name)を「picGraph」に変更します。
  4. ピクチャボックス(PictureBox)コントロールのBackColorを「Black」に変更します。
  5. ソリューションにクラスライブラリ(IFCAD)を追加します。
    「ファイル」メニューより「追加」、「既存のプロジェクト」を選択します。
    追加するプロジェクトのインストール先
    <インストール先>\interface\GPC3100\samples\VB_NET\IFCAD\IFCAD.vbproj
  6. ソリューションエクスプローラで「AdSmp_2」を右クリックし「参照の追加」を選択します。
  7. 「プロジェクト」のタブを開き、「IFCAD」を選択し「OK」をクリックします。
  8. ソリューションエクスプローラで「AdSmp_2」の中の「Form1.vb」を右クリックし「コードの表示」を選択します
  9. 表示されたコードの最上部に以下の一行を追加します。
    Imports InterfaceCorpDllWrap
  10. フォーム(frmAdTest)をダブルクリックしコードエディタウィンドウを開き、フォームにList 1-4を記述します。 コードエディタウィンドウのオブジェクトボックス, プロシージャボックスが、それそれ「frmAdTest」と「(宣言)」となる個所に記述します。
  11. (frmAdTestイベント)のLoadにList 1-5を記述します
  12. (frmAdTestイベント)のFormClosedにList 1-6を記述します
(List 1-4 frmAdTestの(宣言) セクションのコード)
------------------------------------------------------------------
Dim nRet As Integer              ' 関数戻り値
Dim lpszName As String           ' デバイス名
Dim hDeviceHandle As Integer     ' デバイスハンドル
Dim hCannel As Integer           ' チャンネル番号
Dim gConfig As IFCAD.ADSMPLREQ   ' ADSMPLREQ構造体
Dim gInfo As IFCAD.ADBOARDSPEC   ' ADBOARDSPEC構造体


(List 1-5 (frmAdTestイベント)のLoad のコード)
------------------------------------------------------------------
Private Sub frmAdTest_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    lpszName = "FBIAD1"
    hDeviceHandle = IFCAD.AdOpen(lpszName)
    If hDeviceHandle = -1 Then
        MsgBox("インタフェースモジュールの初期化に失敗しました")
        End
    Else
        ' サンプリング設定情報読み出し
        nRet = IFCAD.AdGetSamplingConfig(hDeviceHandle, gConfig)
        If nRet <> IFCAD.AD_ERROR_SUCCESS Then
            MsgBox("サンプリング設定情報取得に失敗しました")
        End If
        nRet = IFCAD.AdGetDeviceInfo(hDeviceHandle, gInfo)
        If nRet <> IFCAD.AD_ERROR_SUCCESS Then
            MsgBox("デバイスの情報取得に失敗しました")
        End If
    End If
End Sub


(List 1-6 (frmAdTestイベント)のFormClosed のコード)
------------------------------------------------------------------
Private Sub frmAdTest_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
    '終了処理
    nRet = IFCAD.AdClose(hDeviceHandle)
End Sub
Step2.サンプリング
  
  1. フォーム上にボタン(Button)コントロールを描画し、(Name)を「cmdSampling」に、Textを「アナログ入力」に変更します。
  2. 作成したボタン(cmdSampling)のClickイベントにList 2-1を記述します。(ボタンをダブルクリック)
    (List 2-1 ボタン(cmdSampling)のClick イベントのコード)

    Private Sub cmdSampling_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSampling.Click
        Dim bSmpData(4096) As Byte ' データ格納用変数(分解能8ビット)
        Dim wSmpData(4096) As Short ' データ格納用変数(分解能12,16ビット)
        Dim dwSmpData(4096) As Integer ' データ格納用変数(分解能24ビット)
        Dim dwData(4096) As Long ' グラフ描画用データ格納用変数
        Dim dwLength As Long ' データ数
        Dim i, j As Long ' 繰り返し用変数
        Dim pX1, pY1, pX2, pY2, bpX1, bpX2, bpY1, bpY2 As Long ' グラフ描画用
        Dim pXMax, pYMax As Long ' グラフ描画用
        Dim nResolution As Long ' 分解能
        Dim TPen As New System.Drawing.Pen(System.Drawing.Color.Black)

        'インタフェースモジュール情報取得
        nResolution = 2 ^ gInfo.ulResolution

        ' サンプリング条件設定
        gConfig.ulChCount = 2
        gConfig.SetChNo(0, 1)
        gConfig.SetChNo(1, 2)
        gConfig.SetChRange(0, IFCAD.AD_10V)
        gConfig.SetChRange(1, IFCAD.AD_10V)
        gConfig.fSmplFreq = 5000
        gConfig.ulSmplNum = 1024
        nRet = IFCAD.AdSetSamplingConfig(hDeviceHandle, gConfig)
        If nRet <> IFCAD.AD_ERROR_SUCCESS Then
            MsgBox("サンプリング条件設定に失敗しました")
            Exit Sub
        End If

        ' 連続サンプリングを開始します
        nRet = IFCAD.AdStartSampling(hDeviceHandle, IFCAD.FLAG_SYNC)
        If nRet <> IFCAD.AD_ERROR_SUCCESS Then
            MsgBox("サンプリングに失敗しました")
            Exit Sub
        End If

        ' サンプリングデータを取得します
        dwLength = gConfig.ulSmplNum
        ' 分解能が8Bitのインタフェースモジュールの時は、第2引数をbSmpDataに変更してください
        nRet = IFCAD.AdGetSamplingData(hDeviceHandle, wSmpData, dwLength)
        If nRet <> IFCAD.AD_ERROR_SUCCESS Then
            MsgBox("サンプリングデータ取得に失敗しました")
            Exit Sub
        End If

        ' 分解能が16Bitの場合オーバーフローするので、データを32ビット配列へ格納
        For j = 0 To dwLength
            If wSmpData(j) < 0 Then
                dwData(j) = 65536 + wSmpData(j)
            Else
                dwData(j) = wSmpData(j)
            End If
        Next j

        ' 取得したデータをグラフに描画します。
        picGraph.CreateGraphics.Clear(Color.Black) ' 画面初期化
        pXMax = picGraph.Width
        pYMax = picGraph.Height
        '描画する波形の初期値を設定します
        bpY1 = picGraph.Height - (pYMax / nResolution) * dwData(0)
        bpX1 = 0
        bpY2 = picGraph.Height - (pYMax / nResolution) * dwData(1)
        bpX2 = 0
        '中心に線を描画します
        TPen.Width = 2
        TPen.Color = Color.Purple
        picGraph.CreateGraphics.DrawLine(TPen, 0, CInt((picGraph.Height / 2)), picGraph.Width, CInt((picGraph.Height / 2)))
        'サンプリングデータを描画します
        For i = 0 To gConfig.ulSmplNum - 1
            ' チャンネル1の描画
            pY1 = picGraph.Height - (pYMax / nResolution) * dwData(i * 2)
            pX1 = (i * 2) * (pXMax / gConfig.ulSmplNum)
            TPen.Color = Color.White
            picGraph.CreateGraphics.DrawLine(TPen, bpX1, bpY1, pX1, pY1)
            bpX1 = pX1
            bpY1 = pY1
            ' チャンネル2の描画
            pY2 = picGraph.Height - (pYMax / nResolution) * dwData(i * 2 + 1)
            pX2 = (i * 2 + 1) * (pXMax / gConfig.ulSmplNum)
            TPen.Color = Color.LimeGreen
            picGraph.CreateGraphics.DrawLine(TPen, bpX2, bpY2, pX2, pY2)
            bpX2 = pX2
            bpY2 = pY2
        Next i
    End Sub
    プログラムの入力が終わったら、保存した後、プログラムを実行し、「アナログ入力」ボタンをクリックしてください。
    ファンクションジェネレータから出力されている信号がフォームに描画されます

上へ


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

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

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

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

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

・サイトマップ