概述
安捷伦34970A采集数据,34970A支持RS232接口,但是如果直接用winform自带的seriaport类基本是没必要使用的,安捷伦等仪表通讯需要用到VISA的库。
库的获取
1. 是德科技的IO Library.
2. 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();}}
}
参考链接
【免费】基于C#的计算机与安捷伦34970A通信方法资源-CSDN文库https://download.csdn.net/download/anlog/89396104
基于C#的计算机与安捷伦34970A通信方法 - 代码先锋网 (codeleading.com)https://www.codeleading.com/article/11481234827/
官方编程例程:
34970A/34972A C# Programming Examples | Keysighthttps://www.keysight.com.cn/cn/zh/lib/software-detail/programming-examples/34970a34972a-c-programming-examples-1835005.html
【免费】基于C#的计算机与安捷伦34970A通信资源-CSDN文库https://download.csdn.net/download/anlog/89397404
总结
使用普通的seriaport 类进行处理需要自己进行相应的字符串处理,没有必要自己进行。使用官方库可以避免自己处理这些麻烦的信息,并且可以在更换接口时修改的内容更少。后续升级设备时(比如网口读取数据)更加简单。
特此记录
anlog
2024年6月4日