C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

オシロスコープの制御

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■92720 / inTopicNo.1)  オシロスコープの制御
  
□投稿者/ じょこびっち (1回)-(2019/10/24(Thu) 10:49:22)

分類:[C#] 

現在c#を学習している初心者です。
http://literature.cdn.keysight.com/litweb/pdf/5991-0244JAJP.pdf
上記の手順を見ながらオシロスコープの制御をしてみようと試みています。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Ivi.Visa.Interop;

namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
ResourceManager rm = new ResourceManager();
FormattedIO488 inst = new FormattedIO488();

// 通信開始
inst.IO = rm.Open("[VISAアドレス]") as IMessage;

// 測定器のID確認
inst.WriteString("*IDN?"); // IDクエリ
String str = inst.ReadString(); // 応答の文字列取得

// ダイアログボックスの表示
MessageBox.Show(str);

// 通信の終了
inst.IO.Close();
}
}
}

デバッグすると
inst.IO = rm.Open("[VISAアドレス]") as IMessage;
この行で止まり
「ハンドルされていない例外」
System.Runtime.InteropServices.COMExeption:'HRESULT=80040011'
が表示されます。

開発環境:
VisualStudioExpress2017
Tektronixのオシロスコープを使用しています。
どうすれば解決出来るでしょうか?よろしくお願いします。

引用返信 編集キー/
■92721 / inTopicNo.2)  Re[1]: オシロスコープの制御
□投稿者/ 魔界の仮面弁士 (2434回)-(2019/10/24(Thu) 10:59:17)
No92720 (じょこびっち さん) に返信
> 現在c#を学習している初心者です。
細かいことですが、c# ではなく C# が正式表記だったりします。(JIS X 3015)


> 「ハンドルされていない例外」
> System.Runtime.InteropServices.COMExeption:'HRESULT=80040011'
> が表示されます。
0x80040011 (OLE_E_CANTCONVERT) は「オブジェクトを変換できません」というエラーです。


> inst.IO = rm.Open("[VISAアドレス]") as IMessage;
環境が無いのでテストはできませんが、まずはどの段階でエラーとなっているかを
確認するため、上記の行を分解して
 // inst.IO = rm.Open("[VISAアドレス]") as IMessage;
 object obj1 = rm.Open("[VISAアドレス]");
 IMessage obj2 = obj1 as IMessage;
 inst.IO = obj2;
にしてみください。
エラーになるのは Open の行でしょうか。IMessage への変換時でしょうか。


Open で失敗するのだとしたら、引数に指定した
VISA アドレス文字列(例:USB0::0x0957::0x17A2::MY50500003::0::INSTR)が
正しいものであるかどうかを確認してみてください。
引用返信 編集キー/
■92723 / inTopicNo.3)  Re[2]: オシロスコープの制御
□投稿者/ じょこびっち (2回)-(2019/10/24(Thu) 11:13:56)
No92721 (魔界の仮面弁士 さん) に返信
> ■No92720 (じょこびっち さん) に返信
>>現在c#を学習している初心者です。
> 細かいことですが、c# ではなく C# が正式表記だったりします。(JIS X 3015)


なるほど、そうなのですね。以後気を付けます。


>>inst.IO = rm.Open("[VISAアドレス]") as IMessage;
> 環境が無いのでテストはできませんが、まずはどの段階でエラーとなっているかを
> 確認するため、上記の行を分解して
>  // inst.IO = rm.Open("[VISAアドレス]") as IMessage;
>  object obj1 = rm.Open("[VISAアドレス]");
>  IMessage obj2 = obj1 as IMessage;
>  inst.IO = obj2;
> にしてみください。
> エラーになるのは Open の行でしょうか。IMessage への変換時でしょうか。
>
>
> Open で失敗するのだとしたら、引数に指定した
> VISA アドレス文字列(例:USB0::0x0957::0x17A2::MY50500003::0::INSTR)が
> 正しいものであるかどうかを確認してみてください。


分解してデバッグしたところOpenで止まりました。
原因は魔界の仮面弁士さんのおっしゃる通りVISAアドレスが間違っていました。
VISAアドレスを修正したら無事に動作しました。
ありがとうございました。また、よろしくお願いします。

解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ