|
分類:[C#]
波形取得データ取得プログラムを作成しているのですが、エラーの原因がわかりません。
実行すると、プログラムではエラーの原因が出ず、オシロスコープに
「送信できる応答がありません。」
と出ます。
このオシロによると、「このメッセージは送受信の順序を確認してください。」
とのとこなので、送受信のプログラムを見ていただきたいのですが。。。
GPIBボードはインターフェイス社のものを使っています。
わかる方、ちょっとした意見のある方、よろしくお願いします!
private void CommandWaveTranStart_Click(object sender, EventArgs e) //波形取り込みボタンクリック
{
int nRet1, nRet2, nRet3, nRet4 = 0;
string szData1 = "WAVeform:FORMat ASCii";
string szData2 = "WAVEform:TRACe 1"; //オシロのコマンドで、対象波形を問い合わせる
string szData3 = "WAVEform:STARt 0"; //上記のものの開始点
string szData4 = "WAVEform:END 2000"; //最後のデータの指定
uint nLen1, nLen2, nLen3, nLen4;
int[] DevAdrsTbl = new int[2];
// 機器アドレステーブル設定
DevAdrsTbl[0] = 1;
DevAdrsTbl[1] = -1;
// データ送信
nLen1 = (uint)szData1.Length;
if(nLen1 != 0)
{
nRet1 = IFCGPIB.GpibSend(nBoardNo, DevAdrsTbl ,nLen1, szData1);
if(nRet1 != 0)
{
return;
}
}
nLen2 = (uint)szData2.Length;
if(nLen2 != 0)
{
nRet2 = IFCGPIB.GpibSend(nBoardNo, DevAdrsTbl,nLen2, szData2);
if(nRet2 != 0)
{
return;
}
}
nLen3 = (uint)szData3.Length;
if(nLen3 != 0)
{
nRet3 = IFCGPIB.GpibSend(nBoardNo, DevAdrsTbl,nLen3, szData3);
if(nRet3 != 0)
{
return;
}
}
nLen4 = (uint)szData4.Length;
if(nLen4 != 0)
{
nRet4 = IFCGPIB.GpibSend(nBoardNo, DevAdrsTbl,nLen4, szData4);
if(nRet4 != 0)
{
return;
}
}
// データ受信
int nRet = 0;
string RecvBuffer = "";
uint RecvLen;
RecvLen = 64;
nRet = IFCGPIB.GpibReceive(nBoardNo, DevAdrsTbl, ref RecvLen, out RecvBuffer);
if(nRet != 0)
{
Form1.DsplyErrMessage(nRet);
return;
}
Form1.DsplyErrMessage(nRet);
textBoxData.Text = RecvBuffer;
}
**********************************
GpibSendとGpibReceiveの使い方。
●C言語
#include "GPC43042.H"
int GpibSend(
ULONG nBoardNo, // ボード番号
PLONG lAdrsTbl, // アドレステーブルへのポインタ
ULONG ulLength, // 送信バッファサイズ
PVOID vpBuffer // 送信バッファへのポインタ
);
●C言語
#include "GPC43042.H"
int GpibReceive(
ULONG nBoardNo, // ボード番号
PLONG lAdrsTbl, // アドレステーブルへのポインタ
PULONG ulpLength, // 受信バッファサイズ格納変数へのポインタ
PVOID vpBuffer // 受信バッファへのポインタ
);
|