Here is the example from Keysight, what I am after is starting the socket and leaving it open for 5 IP addresses. The issue I am having is I open and close the socket ever time I write a line and the instrument does not like this. I have slightly overcome this by writing classes that have multiple lines that I can pass vaiables through, but there are still issues. I modified a project years ago that had this built in, but for the life of me I do not know what is is called and my searches are leading me down the wrong path. I should be able to make a class that starts the socket, then write lines to the socket.
////////////////////////////////////////////////////////////////////////////////
// © Keysight Technologies 2016
//
// 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 Keysight Technologies has no
// warranty, obligations or liability for any Sample Application Files.
//
////////////////////////////////////////////////////////////////////////////////
using System;
using System.Collections.Generic;
using System.Text;
using Ivi.Visa;
using Ivi.Visa.FormattedIO;
namespace Socket_Example
{
class Program
{
static void Main(string[] args)
{
// Change this variable to the address of your instrument
string VISA_ADDRESS = "Your instrument's VISA address goes here!";
// Create a connection (session) to the TCP/IP socket on the instrument.
// Change VISA_ADDRESS to a SOCKET address, e.g. "TCPIP::169.254.104.59::5025::SOCKET"
IMessageBasedSession session = GlobalResourceManager.Open(VISA_ADDRESS) as IMessageBasedSession;
// The first thing you should do with a SOCKET connection is enable the Termination Character. Otherwise all of your read's will fail
session.TerminationCharacterEnabled = true;
// We can find out details of the connection
ITcpipSocketSession socket = session as ITcpipSocketSession;
Console.WriteLine("IP: {0}\r\nHostname: {1}\r\nPort: {2}\r\n",
socket.Address,
socket.HostName,
socket.Port);
// Send the *IDN? and read the response as strings
MessageBasedFormattedIO formattedIO = new MessageBasedFormattedIO(session);
formattedIO.WriteLine("*IDN?");
string idnResponse = formattedIO.ReadLine();
Console.WriteLine("*IDN? returned: {0}", idnResponse);
// Close the connection to the instrument
session.Dispose();
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
}
}