人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: youkan_ni_ocha
●カテゴリ:学習・教育 科学・統計資料
✍キーワード:プログラム 無料 言語
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● MAXPOWER
●35ポイント

VB2008ではダメですか?

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

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

◎質問者からの返答

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


2 ● MAXPOWER
●35ポイント

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

>特殊な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の制御をするために色々と調べていたのですが、この本が最も(といううか唯一)参考になりました。

◎質問者からの返答

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ