| |
- フォーム上にボタン(Button)コントロールを描画し、(Name)を「cmdSampling」に、Textを「アナログ入力」に変更します。
- 作成したボタン(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
|
プログラムの入力が終わったら、保存した後、プログラムを実行し、「アナログ入力」ボタンをクリックしてください。
ファンクションジェネレータから出力されている信号がフォームに描画されます

|