概述
安捷伦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日