C#
/****************************************************************************
' Copyright © 2010 Agilent Technologies Inc. All rights
' reserved.
'
' You have a royalty-free right to use, modify, reproduce and distribute
' the Sample Application Files (and/or any modified version) in any way
' you find useful, provided that you agree that Agilent has no
' warranty, obligations or liability for any Sample Application Files.
'
' Agilent Technologies provides programming examples for illustration only,
' This sample program assumes that you are familiar with the programming
' language being demonstrated and the tools used to create and debug
' procedures. Agilent support engineers can help explain the
' functionality of Agilent software components and associated
' commands, but they will not modify these samples to provide added
' functionality or construct procedures to meet your specific needs.
'****************************************************************************
'****************************************************************************
'This sample program is intended to use with Microsoft Visual C# 2005
'and Agilent Visa Object library.
'
'Sample program execution requires VISA library installation as prerequisite.
'
'Sample program uses VISA COM 3.0 Type Library as reference to VISA library at below location:
'<visa install location>\VisaCom\Primary Interop Assemblies\Ivi.Visa.Interop.dll
'User must point to the file, if not detected automatically.
' ****************************************************************************/
using System;
using System.Collections.Generic;
using System.Text;
//Adding visa liberary reference
using Ivi.Visa.Interop;
//Amplitude Modulation is a sample program that enables a Amplitude modulation output on channel 1
//of 3352XA instrument with the following signal characteristics
//
//Carrier Frequency: Sin wave, 1 Mhz, 5 VPP
//Amplitude Modulated carrier with Double Sideband Suppressed Carrier
//
//Modulating Frequency: Sin Wave, 1 KHz
//AM Depth 100%
namespace Amplitude_Modulation
{
class Program
{
//No error message
const string noErrString = "+0,\"No error\"\n";
static void Main(string[] args)
{
try
{
AMModulation();
}
catch (Exception oExp)
{
Console.WriteLine(oExp.Message);
}
Console.WriteLine("Press
Enter to exit");
Console.ReadLine();
}
public static void AMModulation()
{
//Set Instrument address
string instAddress = "TCPIP0::156.140.95.225::inst0::INSTR";
ResourceManagerClass oRm = new ResourceManagerClass();
FormattedIO488Class oFio = new FormattedIO488Class();
//Open session for instrument.
oFio.IO = (IMessage)oRm.Open(instAddress, AccessMode.NO_LOCK, 2000, "");
//Query Idendity string and report.
oFio.WriteString("*IDN?", true);
string strResult = oFio.ReadString();
Console.WriteLine("Instrument Identity String: " + strResult);
//Clear and reset instrument
oFio.WriteString("*CLS; *RST", true);
//Configure the carrier waveform
oFio.WriteString("SOURCE1:FUNC SIN",true);
oFio.WriteString("SOURCE1:FREQ 10E5", true);
oFio.WriteString("SOURCE1:VOLT 5", true);
//Select the mode of Amplitude Modulation
oFio.WriteString("SOURCE1:AM:DSSC ON", true);
//Select the modulation source
oFio.WriteString("SOURCE1:AM:SOURCE INT", true);
//Select the shape of the modulating waveform:
oFio.WriteString("SOURCE1:AM:INT:FUNC SIN", true);
//Set the modulating frequency
oFio.WriteString("SOURCE1:AM:INT:FREQ 1000", true);
//Set the modulation depth
oFio.WriteString("SOURCE1:AM:DEPTH 100", true);
//Enable AM Modulation
oFio.WriteString("SOURCE1:AM:STATE ON", true);
//Enable Output
oFio.WriteString("OUTPUT1 ON", true);
//Read Error
oFio.WriteString("SYSTEM:ERROR?", true);
strResult = oFio.ReadString();
if (strResult == noErrString)
{
Console.WriteLine("Amplitude Modulation output enabled without any error\n");
}
else
{
Console.WriteLine("Error reported: " + strResult);
}
}
}
}