C#实现控制射频仪表E5071C,采集数据,处理数据,保存数据
using System;
using System.IO;
using System.Text;
using Ivi.Visa.Interop;
using NationalInstruments.Visa;
namespace E5071C_Demo
{
class Program
{
static void Main(string[] args)
{
// 连接仪表
ResourceManager rm = new ResourceManager();
string e5071c = "GPIB0::16::INSTR";
MessageBasedSession mbSession = (MessageBasedSession)rm.Open(e5071c);
// 初始化仪表
mbSession.Write(":SYST:FPRESET"); // 恢复出厂设置
mbSession.Write(":CALC:PAR:DEL:ALL"); // 删除所有测量参数
// 配置仪表参数
mbSession.Write(":SENS:FREQ:STAR 1000000"); // 设置起始频率
mbSession.Write(":SENS:FREQ:STOP 3000000000"); // 设置终止频率
mbSession.Write(":SENS:SWE:POIN 100"); // 设置采样点数
mbSession.Write(":SENS:BWID 10"); // 设置测量带宽
// 设置测量类型
mbSession.Write(":CALC:PAR:DEF 'CH1_S21', 'S21'"); // 定义测量类型及参数
mbSession.Write(":CALC:FORM MLOG"); // 设置格式
// 开始测量
mbSession.Write(":INIT:CONT ON"); // 连续测量
// 读取数据
string data = mbSession.Query(":CALC:DATA? FDATA");
// 处理数据
StringBuilder sb = new StringBuilder();
using (StringReader sr = new StringReader(data))
{
string line;
while ((line = sr.ReadLine()) != null)
{
string[] values = line.Split(',');
double freq = double.Parse(values[0]);
double amp = double.Parse(values[1]);
double phase = double.Parse(values[2]);
// 处理数据的逻辑
// ...
sb.AppendLine($"{freq},{amp},{phase}");
}
}
// 保存数据到文件
string filepath = @"C:\data.txt";
File.WriteAllText(filepath, sb.ToString());
// 断开连接
mbSession.Dispose();
rm.Dispose();
}
}
}
上述代码中,使用了IVI-COM驱动和NI-VISA驱动,
其中IVI-COM驱动提供可重用的控制和测量仪表的API接口,NI-VISA驱动则提供通信协议和设置仪表参数的相关方法。
在代码中,首先使用ResourceManager
对象连接了GPIB接口的E5071C仪表,
然后初始化了仪表并设置了相关参数。
之后执行了测量和读取数据的操作,将数据处理后保存到了文件中。
最后断开连接并销毁资源。
编程学习交流群 639076909:有问题请加群咨询
编程一对一辅导 https://tomcode.taobao.com/
课程免费试学:http://edu.tompeixun.com/