前提・実現したいこと
操作しているPC1に制御しているネットワークアナライザ(PC2)にbmp→バイナリに変換したファイルデータを送りたい。
発生している問題・エラーメッセージ
for文を使用して8回繰り返しているのですが、6,7回目でこのエラーがでたり、時々8回成功して終了したりしてます。
inst.IO = rm.Open(ネットワークアナライザのVISAアドレス) as IMessage; ここで
c#
1 2COMEExceptionはハンドルされませんでした。 3HRESULT=8004003c
該当のソースコード
for文は途中まで動いているのでとりあえずfor文の中身です。
cese文を使って繰り返し作業をしようとしてました。
・・・・・ IMessageBasedSession session; // VISA.NET IMessageBasedFormattedIO instrument0; session = (IMessageBasedSession)GlobalResourceManager.Open(ネットワークアナライザのVISAアドレス); ・・・・・ int num2=1,b; string File_Name; for (b = 1; b <= 8; b++) { switch (num2) { case 1: File_Name = sn.Text + "No1"; num1 = 2; break; case 2: File_Name = sn.Text + "No2"; num1 = 3; break; ---case3~7略--- case 8: File_Name = sn.Text + "No8"; break; } instrument0 = session.FormattedIO; session.TimeoutMilliseconds = 10000; instrument0.WriteLine("INIT1:CONT OFF"); Byte[] bmpDat = GetScreenshot(); Bitmap bmp = Bithenkan(bmpDat); bmp.save(PC1の保存先のアドレス + ".bmp"); } public Byte[] GetScreenshot() //スクリーンの画像をネットワークアナライザに保存、バイナリデータに変換 { Byte[] dat12 = null; FormattedIO488 inst = new FormattedIO488(); ResourceManager rm = new ResourceManager(); inst.IO = rm.Open(ネットワークアナライザのVISAアドレス) as IMessage; inst.IO.Timeout = 10000; inst.WriteString("MMEM:STOR:IMAG " + "'" + "D:\" + File_Name + ".bmp" + "'"); inst.WriteString("MMEM:TRAN? " + "'" + "D:\" + File_Name + ".bmp" + "'"); try { inst.IO.Timeout = 2000; dat12 = inst.ReadIEEEBlock(IEEEBinaryType.BinaryType_UI1) as Byte[]; inst.IO.Close(); } catch { } finally { session.TimeoutMilliseconds = 10000; } return dat12; } private Bitmap Bithenkan(Byte[] ba2) //バイナリ→bmp画像変換 { Bitmap bmp = null; ImageConverter ic = new ImageConverter(); bmp = new Bitmap(ic.ConvertFrom(ba2) as Image); return bmp; }
試したこと
最後まではいかなくても一応動いているプログラムですし、出来るときとできないときがあるっていう点で
個人的にfor文のせいでPC内部のなんかがおかしくなっていると思って
接続を一旦切ればいいかなと思い
inst.IO.Close();を追加で入れましたが、偶然かわかりませんが5回でエラーが出てたのが6回目までいけるようになりました。
機器との接続法を二種類(IMessageBasedFormattedIOとFormattedIO488)使用しているせいかもしれませんが、
どっちか一つにまとめようとしましたが、お互いにお互いにしかできない仕事ができるので、できれば二種類のままでできる方法が知りたいです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー