using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Ivi.Visa; using Ivi.Visa.Interop; namespace HTOLHAST { // Base class for SCPI instruments public abstract class SCPIInstrument { protected ResourceManager resourceManager; protected Ivi.Visa.Interop.FormattedIO488 instrument; public abstract Sample CreateSample(string response); protected SCPIInstrument(string resourceString) { resourceManager = new ResourceManager(); instrument = new FormattedIO488(); instrument.IO = (IMessage)resourceManager.Open(resourceString, AccessMode.NO_LOCK, 2000, ""); } public void WriteCommand(string command) { try { instrument.WriteString(command, true); } catch (Exception ex) { Console.WriteLine($"Error writing command: {ex.Message}"); } } public string ReadResponse() { try { string response = instrument.ReadString(); // Read from the instrument return response; } catch (Exception ex) { Console.WriteLine($"Error reading response: {ex.Message}"); return string.Empty; } } public string GetID() { WriteCommand("*IDN?"); return ReadResponse(); } public void Reset() { WriteCommand("*RST"); } public void Close() { instrument.IO.Close(); } } }