最近做個項目要用到安捷倫34970A採集數據,34970A支持RS232接口,但是如果直接用winform自帶的seriaport類基本是不管用的,經過幾天研究和問客服呀,也沒得到個啥結果,頭髮倒是掉了幾根。最終靈感突發,翻牆Google別國論壇,才知道安捷倫等儀表通訊需要用到VISA的庫。庫的獲取方法目前知道兩個,1個是下載是德科技的IO Library,還有就是上NI下載NI-VISA.用法都差不多,下面直接貼代碼`
using System;
using System.Windows.Forms;
using System.Threading;
using Ivi.Visa.Interop;
namespace 安捷倫採集儀
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Ivi.Visa.Interop.ResourceManager rMgr = new Ivi.Visa.Interop.ResourceManager();
FormattedIO488 src = new FormattedIO488();
private void button1_Click(object sender, EventArgs e)
{try {
src.IO.Clear();
src.WriteString("READ?");
Thread.Sleep(100);
textBox1.AppendText(src.ReadString());
}
catch { Console.WriteLine("error!"); }
}
private void button2_Click(object sender, EventArgs e)
{
src.IO =(IMessage)rMgr.Open("ASRL3::INSTR", AccessMode.NO_LOCK, 2000, null);
//src.IO.Timeout = 1000;
}
private void button3_Click(object sender, EventArgs e)
{
src.IO.Close();
}
private void timer1_Tick(object sender, EventArgs e)
{
src.IO = (IMessage)rMgr.Open("ASRL3::INSTR", AccessMode.NO_LOCK, 2000, null);
//src.IO.Timeout = 1000;
// src.IO.Clear();
src.WriteString("READ?",true );
Thread.Sleep(20);
textBox1.AppendText(src.ReadString());
src.IO.Close();
}
private void button4_Click(object sender, EventArgs e)
{
timer1.Start();
}
private void button5_Click(object sender, EventArgs e)
{
timer1.Stop();
}
}
}
然後貼上一篇操作說明書 這裏寫鏈接內容