GPIBが使える無料のプログラム言語を探しています。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/07/13 10:34:22
  • 終了:2009/07/20 10:35:03

回答(2件)

id:maxpower No.1

MAXPOWER回答回数521ベストアンサー獲得回数242009/07/13 11:25:01

ポイント35pt

VB2008ではダメですか?

使い方はこの本の第7章を参考にしてください。

http://gihyo.jp/book/2007/978-4-7741-3054-5

id:youkan_ni_ocha

標準パッケージだけでいけるんでしょうか?そのへんがよくわからないんですが、、、(特殊なDLLを使わないと駄目とか、、、)あと最近はVB.NETになっていたりで、ちょっと余計な事がありすぎて面倒かなという事もありますが、こういう書籍のお勧めがあれば、教えていただけると参考にさせていただきます。

2009/07/13 11:36:06
id:maxpower No.2

MAXPOWER回答回数521ベストアンサー獲得回数242009/07/13 13:22:34

ポイント35pt

コメント欄が開いてないので再びこちらから失礼します。

>特殊なDLLを使わないと駄目とか

http://www.geocities.jp/geek_na_heya/series2_vb_net4.html

上記URLと同じく上述の参考書でもNI4822.dllを使っています。

また、サンプルとして岩通のDMM(VOAC7412)を使っていますが、

一部のプログラムを抜粋すると

Public Class VOAC7412Form

'*****************************************************************

'

' GP-IBインタフェースを利用したデータ取得用フォーム

' マルチスレッド版

'

'*****************************************************************

' 測定開始および中断ButtonのClickイベントハンドラ

Private Sub MeasureButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MeasureButton.Click

Dim mc As Decimal

If MeasureButton.Text = "測定開始" Then

' 測定開始時の処理

' 取得したデータを表示するListBoxコントロールのクリア

DataListBox.Items.Clear()

'NumericUpDownコントロールから測定回数の取得

mc = MeasurementCountNumericUpDown.Value

' バックグランド操作の実行開始

' 引数として測定回数を渡す

MeasureBackgroundWorker.RunWorkerAsync(mc)

MeasureButton.Text = "測定中断"

Else

' 測定中断時の処理

' バックグランド操作の中断

MeasureBackgroundWorker.CancelAsync()

MeasureButton.Text = "測定開始"

End If

End Sub

' BackgroundWorkerコントロールのDoWorkイベントハンドラ

' バックグランド操作の内容

Private Sub MeasureBackgroundWorker_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles MeasureBackgroundWorker.DoWork

Dim li As LangInt ' NATIONAL INSTRUMENTS社のGP-IB用ライブラリ

Dim gc As GpibConstants ' NATIONAL INSTRUMENTS社のGP-IB用定数

Dim addr As Integer ' マルチメータのGP-IBアドレス

Dim ud As Integer ' マルチメータのデバイス番号

Dim buffer As String = "" ' 読み込みデータ保存用

Dim ResByte As Byte ' ポーリング用

Dim i As Integer

' インスタンスの生成

li = New LangInt() ' NATIONAL INSTRUMENTS社のGP-IB用ライブラリの生成

gc = New GpibConstants() ' NATIONAL INSTRUMENTS社のGP-IB用定数の生成

' マルチメータのGP-IBアドレスを1に設定

addr = 1

' GP-IB機器の初期化

ud = li.ibdev(0, addr, 0, gc.T10s, 1, 0)

' デバイスのクリア

li.ibclr(ud)

' IWATSU VOAC7412の制御コマンドの送出

li.ibwrt(ud, "X2 AE0") ' フリーランモード,SRQなし

li.ibwrt(ud, "F0 R3 S1") ' DCV,4V,サンプルレートMID

li.ibwrt(ud, "AA20 PA1") ' AVG 20回,AVG ON

' 設定した測定回数の繰り返し

For i = 1 To CInt(e.Argument)

' バックグランド操作の中断要求の判定

If MeasureBackgroundWorker.CancellationPending Then

' 中断の要求を受け付けたらバックグランド操作をキャンセル

e.Cancel = True

Exit For

End If

' ポーリングによる機器からの測定終了信号の検出

Do

li.ibrsp(ud, ResByte)

Loop While (ResByte And 16) = 16

' GP-IB機器からの値の読み込み

li.ibrd(ud, buffer, 20)

' 読み込んだデータをメインのスレッドへ送信

MeasureBackgroundWorker.ReportProgress(CInt(i / CInt(e.Argument) * 100), buffer.Substring(0, li.ibcntl - 1))

Next i

' IWATSU VOAC7412の制御コマンドの送出

li.ibwrt(ud, "PA0") ' AVG OFF

' GP-IB機器をローカルに設定

li.ibonl(ud, 0)

End Sub

' BackgroundWorkerコントロールのProgressChangedイベントハンドラ

' バックグランド操作中のメインのスレッドでの処理内容

Private Sub MeasureBackgroundWorker_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles MeasureBackgroundWorker.ProgressChanged

' 読み込んだ値のListBoxコントロールへの追加

DataListBox.Items.Add(DirectCast(e.UserState, String))

End Sub

' BackgroundWorkerコントロールのRunWorkerCompletedイベントハンドラ

' バックグランド操作の終了後の内容

Private Sub MeasureBackgroundWorker_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles MeasureBackgroundWorker.RunWorkerCompleted

' バックグランド操作の終了または中断の判定

If e.Cancelled = False Then

MessageBox.Show("測定が終了しました", "測定終了", MessageBoxButtons.OK, MessageBoxIcon.Information)

Else

MessageBox.Show("測定が中断されました", "測定中断", MessageBoxButtons.OK, MessageBoxIcon.Stop)

End If

MeasureButton.Text = "測定開始"

End Sub

End Class

となっています。

私はVB2008で232Cの制御をするために色々と調べていたのですが、この本が最も(といううか唯一)参考になりました。

id:youkan_ni_ocha

詳しい回答ありがとうございます。Niのドライバーがあったんですね。

ついにオブジエクト思考突入ですか

2009/07/13 13:56:13

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません