基于C#的计算机与安捷伦34970A通信方法

2019-07-14 02:34发布

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