首页
归档
友情链接
留言
更多
关于
动态
Search
1
[分享栈]centos7安装gcc10.2.0
7,077 阅读
2
[技术栈]CRC校验原理及C#代码实现CRC16、CRC32计算FCS校验码
6,701 阅读
3
[技术栈]C#利用Luhn算法(模10算法)对IMEI校验
6,314 阅读
4
[分享栈]esxi6.7虚拟机安装omv(openmediavault)教程
5,765 阅读
5
[分享栈]centos7安装python3.8.5
4,830 阅读
分享栈
技术栈
经验栈
登录
Search
标签搜索
C#
centos
winform
仪器
IPV4
IPV6
测速
crc
crc16
crc32
fcs
luhn
模10
算法
sql
gcc
python
紫光展锐
omv
openmediavault
武小栈
累计撰写
21
篇文章
累计收到
37
条评论
首页
栏目
分享栈
技术栈
经验栈
页面
归档
友情链接
留言
关于
动态
搜索到
2
篇与
的结果
2020-06-23
[经验栈]C#与是德科技信号发生器(Keysight RF Signal Generators)N9310A通信操作
[TOC]1、前言这次使用的仪器是是德科技(keysight)的射频信号发生器,型号为N9310A,来一张正面照。2、C#代码2.1 参考C#与泰克示波器(Tektronix oscilloscope)通信操作中C#代码;2.2 可以用是德科技提供的通信代码;环境:IO 程序库套件项目-引用-添加-程序集-Keysight.Visausing System; using Ivi.Visa; using Keysight.Visa; namespace IdnSample { class IdnSample { static void Main(string[] args) { GpibSession session = new GpibSession ("MyInstr", Ivi.Visa.AccessModes.None, 2000); try { IMessageBasedFormattedIO io = session.FormattedIO; io.PrintfAndFlush("*IDN?");//发送查询设备指令 string[] response = new string[] { "", "", "", "" }; io.Scanf("%,s", out response);//读取信息,以逗号或空格划分字符串 Console.WriteLine("Manufacturer: {0}", response[0]); Console.WriteLine("Instrument Model: {0}", response[1].TrimEnd(new char[] {'\n'})); if (response.Length > 2) { Console.WriteLine("Firmware Revision: {0}", response[2].TrimEnd(new char[] {'\n'})); } if (response.Length > 3) { Console.WriteLine("Serial Number: {0}", response[3].TrimEnd(new char[] {'\n'})); } } catch { Console.WriteLine("*IDN? query failed"); } finally { ession.Dispose(); session = null; } Console.WriteLine("Press any key to end..."); Console.ReadKey(); } } }2.3 使用Ivi.Visa.Interop类;using System; using Ivi.Visa.Interop; namespace HardwareAutomation { public class IviVisaInteropInstrumentsAPIs { FormattedIO488 instrument = new FormattedIO488(); ResourceManager rm = new ResourceManager(); public void Set(string usbAddress, int timeOut) { instrument.IO = (IMessage)rm.Open(usbAddress, AccessMode.NO_LOCK, 0, ""); instrument.IO.TerminationCharacterEnabled = true; instrument.IO.Timeout = timeOut; } public void Write(string WriteStr) { instrument.WriteString(WriteStr, true); } public string Read() { try { return instrument.ReadString(); } catch (Exception e) { //Console.WriteLine(e); //throw; return ""; } } } }3、简单指令:SYSTem:DATE? //查询日期,用于确认信号发生器是否连接正常 :FREQuency:CW 5 MHz //设置频率为5MHz :FREQuency:CW? //查询频率 :AMPLitude:CW 5 dBm //设置幅度为5dbm :RFOutput:STATe ON //打开射频输出 :AM:STATe ON //打开调幅模式 :AM:DEPTh 5 //设置调幅深度 :AM:SOURce EXT //设置调幅源为外部 :MOD:STATe ON //使能设置 :FM:STATe ON //打开调频模式 :FM:DEViation 5 KHz //设置调频偏差为5KHz :FM:SOURce EXT //设置调频源为外部 :MOD:STATe ON //使能设置 :PULM:STATe ON //打开脉冲模式 :PULM:SOURce EXT //设置脉冲源为外部 :MOD:STATe ON //使能设置参考资料N9310A User's GuideKeysight VISA.NET Help(C:\Program Files\ (x86)\Keysight\IO Libraries Suite\VisaNet.chm)
2020年06月23日
2,460 阅读
4 评论
0 点赞
2020-06-22
[经验栈]C#与泰克示波器(Tektronix oscilloscope)MSO64通信操作
1、前言此次需要用到工具操作示波器动态配置和检验数据,下面为此次开发的一些总结记录。按理说这里应该用泰克(tektronix)提供的示波器(oscilloscope)驱动和API,但是我没有找到泰克提供的.NET版本的API,我又不是特别熟悉C封装到C#的开发,所以干脆使用了NI-VISA .NET,可能是没有使用到特殊驱动部分,使用并没有出现异常。2、安装环境1、NI-VISA3、C#代码using System; using System.Collections.Generic; using Ivi.Visa; using NationalInstruments.Visa; namespace VisaInstruments { public class NiVisaInstrumentsAPIs { private MessageBasedSession mbSession; private IVisaAsyncResult asyncHandle = null; public void FindResources(string filter) { using (var rm = new ResourceManager()) { try { IEnumerable<string> resources = rm.Find(filter); foreach (string s in resources) { //可以根据ParseResult查询出硬件类型,如Custom,Gpib,Serial,Usb等 //ParseResult parseResult = rm.Parse(s); //HardwareInterfaceType hardwareType = parseResult.InterfaceType; } } catch (Exception ex) { //处理错误 } } } public bool OpenInstrument(string address) { try { using (var rmSession = new ResourceManager()) { mbSession = (MessageBasedSession)rmSession.Open(address); //mbSession.SynchronizeCallbacks = true;使用异步方法需设SynchronizeCallbacks为true return true; } } catch (Exception exp) { return false; } } public void Write(string s) { mbSession.RawIO.Write(ReplaceCommonEscapeSequences(s)); } public string Read() { return InsertCommonEscapeSequences(mbSession.RawIO.ReadString()); } public void WriteAsync(string s) { try { string textToWrite = ReplaceCommonEscapeSequences(s); asyncHandle = mbSession.RawIO.BeginWrite( textToWrite, new VisaAsyncCallback(OnWriteComplete), (object)textToWrite.Length); } catch (Exception exp) { } } private void OnWriteComplete(IVisaAsyncResult result) { try { mbSession.RawIO.EndWrite(result); // "Success"; } catch (Exception exp) { } } public void ReadAsync() { try { asyncHandle = mbSession.RawIO.BeginRead( 1024, new VisaAsyncCallback(OnReadComplete), null); } catch (Exception exp) { } } private void OnReadComplete(IVisaAsyncResult result) { try { string responseString = mbSession.RawIO.EndReadString(result); string info = InsertCommonEscapeSequences(responseString); } catch (Exception exp) { } } public void AbortRW() { try { mbSession.RawIO.AbortAsyncOperation(asyncHandle); } catch (Exception exp) { } } private string ReplaceCommonEscapeSequences(string s) { return (s != null) ? s.Replace("\\n", "\n").Replace("\\r", "\r") : s; } private string InsertCommonEscapeSequences(string s) { return (s != null) ? s.Replace("\n", "\\n").Replace("\r", "\\r") : s; } } }4、实体按钮对应指令重新设置参数 --- *RST 前面板Autoset按钮 ---- AUTOSet EXECute 前面板通道1,2,3,4按钮 --- DISplay:GLObal:CH1:STATE on ACQUIRE:STOPAFTER RUNSTOP 前面板Single/Seq按钮 --- ACQUIRE:STOPAFTER SEQuence 前面板放大镜按钮 --- DISplay:WAVEView1:ZOOM:ZOOM1:STATe ON 前面板Default setup按钮 --- FACtory 需要先执行此条命令解锁命令操作旋钮 HORIZONTAL:DELAY:MODE ON 前面板HORizontal区域position旋钮 -- HORizontal:DELay:TIME 0.3 前面板HORizontal区域scale旋钮 HORIZONTAL:MODE:SCALE 0.5e-3 HORIZONTAL:MODE:SCALE? 前面板vertical区域scale旋钮 CH1:SCAle 100E-2 前面板vertical区域position旋钮 CH2:POSition -2.0 前面板touch off按钮 --- TOUCHSCReen:STATe OFF 前面板trigger区域force按钮 --- TRIGGER FORCE 前面板trigger区域mode按钮 --- TRIGger:A:MODe {AUTO|NORMal} 前面板A,B旋钮 --- TRIGger:{A|B|B:RESET}5、简单测量参数指令//设定读取通道和参数 MEASUREMENT:MEAS1:TYPE AMPLITUDE MEASUREMENT:MEAS1:SOURCE CH1 //读取信息 MEASUREMENT:MEAS1:RESUlts:CURRentacq:MEAN? //删除测试信息 MEASUREMENT:DELETE "MEAS1" //截屏 SAVE:IMAGE "C:/Dut12–tests.png" //可测参数列表 MEASUrement:MEAS<x>:TYPe {ACCOMMONMODE|ACRMS|AMPlITUDE|AREA|BASE|BITAMPLITUDE|BITHIGH|BITLOW|BURSTWIDTH|COMMONMODE|DATARATE|DCD|DDJ|DDRAOS|DDRAOSPERTCK|DDRAOSPERUI|DDRAUS|DDRAUSPERTCK|DDRAUSPERUI|DDRHOLDDIFF|DDRSETUPDIFF|DDRTCHABS|DDRTCHAVERAGE|DDRTCKAVERAGE|DDRTCLABS|DDRTCLAVERAGE|DDRTERRMN|DDRTERRN|DDRTJITCC|DDRTJITDUTY|DDRTJITPER|DDRTPST|DDRTRPRE|DDRTWPRE|DDRVIXAC|DDRTDQSCK|DELAY|DJ|DJDIRAC|DPMOVERSHOOT|DPMUNDERSHOOT|DPMRIPPLE|DPMTURNOFFTIME|DPMTURNONTIME|EYEHIGH|EYELOW|FALLSLEWRATE|FAHIGH|HEIGHT|HEIGHTBER|HIGHTIME|HOLD|JITTERSUMMARY|J2|J9|LOW|LOWTIME|MAXIMUM|MEAN|MINIMUM|NDUtY|NPERIOD|NPJ|NOVERSHOOT|NWIDTH|PDUTTY|PERIOD|PHASE|PHASENOISE|PJ|PK2Pk|POVERSHOOT|PWIDTH|QFACTOR|RISESLEWRATE|RISETIME|RJ|RJDIRAC|RMS|SRJ|SSCFREQDEV|SSCMODRATE|SETUP|SKEW|TIE|TIMEOUTSIDELEVEL|TJBER|TNTRATIO|TOP|UNITINTERVAL|VDIFFXOVR|WIDTH|WIDTHBER|}6、简单的GPIO测试用例//设置垂直刻度为300mv CH1:SCAle 300E-3 //位置为-3div CH1:POSition -3.0 //耦合为DC CH1:COUPLING DC //设置水平刻度为20ms HORIZONTAL:MODE:SCALE 20e-3 //打开采集 ACQUIRE:STATE ON //测量最大电压 MEASUREMENT:MEAS1:TYPE MAXIMUM MEASUREMENT:MEAS1:SOURCE CH1 //测量最小电压 MEASUREMENT:MEAS2:TYPE MINIMUM MEASUREMENT:MEAS2:SOURCE CH1 //测量高值 MEASUREMENT:MEAS3:TYPE TOP MEASUREMENT:MEAS3:SOURCE CH1 //测量低值 MEASUREMENT:MEAS4:TYPE BASE MEASUREMENT:MEAS4:SOURCE CH1 //停止采集 ACQUIRE:STATE OFF //设置标签 CH1:LABEL:NAME "GPIO1HIGH" //截屏 SAVE:IMAGE "G:/GPIO1HIGH.png"参考资料4, 5, 6 Series MSO (MSO44, MSO46, MSO54, MSO56, MSO58, MSO58LP, MSO64, LPD64) Programmer ManualTEKVISA Connectivity Software - V4.2.0
2020年06月22日
1,631 阅读
2 评论
0 点赞