using System; using System.IO; using System.Linq; using System.Text; using System.Windows.Forms; using System.Text.RegularExpressions; using NationalInstruments.VisaNS; // Add Reference->NationalInstruments.VisaNS & NationalInstruments.common by installing NI-VISA .NET4 files from its Development Support // Change Project Example Properties Applicaiton Target fromwork to ".Net Framework 4" namespace Example1 { public partial class Form1 : Form { private MessageBasedSession mbSession; //Instrument VISA address string resourceString = "USB0::0x0699::0x0408::C011373::INSTR"; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { byte[] WFMdata = null; //Open connection to instrument mbSession = (MessageBasedSession)ResourceManager.GetLocalManager().Open(resourceString); init(); WFMdata = curve(); Plot(WFMdata); //Close instrument connection mbSession.Dispose(); } private void init() { string result; int RecLength; mbSession.Timeout = 3000; mbSession.Write("*CLS"); mbSession.Write("DATA:SOURCE CH1"); mbSession.Write("DATa:ENCdg RPB"); mbSession.Write("WFMOutpre:BYT_Nr 1"); mbSession.Write("DATA:START 1"); mbSession.Write("HEADER OFF"); result = mbSession.Query("HORizontal:RECOrdlength?"); RecLength = Int32.Parse(result); mbSession.Write("DATA:STOP " + RecLength); RecLength += 25; mbSession.DefaultBufferSize = RecLength; } private byte[] curve() { byte[] Block = null; byte[] WFMdata = null; int i = 0; mbSession.SendEndEnabled = true; mbSession.Write("curve?"); Block = mbSession.ReadByteArray(); if (Block[i++] == '#') { string NZDig = ASCIIEncoding.ASCII.GetString(Block, i++, 1); int count = int.Parse(NZDig); string Dig = ASCIIEncoding.ASCII.GetString(Block, i, count); int record = int.Parse(Dig); WFMdata = new byte[record]; i += count; MemoryStream stream = new MemoryStream(Block, i, record); BinaryReader reader = new BinaryReader(stream); for (int j = 0; j < record; j++) { WFMdata[j] = reader.ReadByte(); } } return WFMdata; } private void Plot(byte[] WFMdata) { try { for (int i = 0; i < WFMdata.Length; i++) { chart1.Series["Series1"].Points.AddXY (i, Convert.ToInt16(WFMdata[i])); } } catch { } chart1.Series["Series1"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.FastLine; } } }