最近做个项目要用到安捷伦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);
}
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.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();
}
}
}
然后贴上一篇操作说明书
这里写链接内容