THM1176InstrumentDriver 1.1
C++ API for Metrolab THM1176
Loading...
Searching...
No Matches
VISAInstrument.h
Go to the documentation of this file.
1// Copyright (c) 2020 Metrolab Technology S.A., Geneva, Switzerland (www.metrolab.com)
2// See the included file LICENSE.txt for the licensing conditions.
3
10
11#pragma once
12
13// External tools
14#include "../resources/visatype.h"
15#include "../resources/visa.h"
16
17// Standard includes
18#include <iterator>
19
20// Personal includes
21#include "IEEE488Instrument.h"
22#include "VISAInstrumentTypes.h"
24#include "Synchronization.h"
25
26using namespace MTL::Synchronization;
27
28namespace MTL {
29 namespace Instrument {
30 //----------------------------------------------------------------------//
35 std::string StatusDescription(ViSession Session, ViStatus Status);
36
37 //----------------------------------------------------------------------//
40 {
41 private:
42 ViSession m_DefaultRM;
43
44 public:
45 // Constructors / destructors
47 virtual ~CVISAResourceManager();
48
49 // Initialization / Info
50 virtual bool Initialize();
51 ViStatus Status();
52
56 virtual std::string StatusDescription (I32 Status);
57
58 const ViSession & Session();
59 virtual bool Timeout();
60
61 // Resource utilities
66 virtual bool FindResources(CResourceList & rList, std::string Filter = "?*");
67
72 bool FindResources(CParsedResourceList & rList, std::string Filter = "?*");
73
79 bool ResourceInfo(tResourceName & rRsrc, eInterfaceType & rIntfType, tInterfaceNumber & rIntfNumber);
80
85 bool ResourceInfo(tResourceName & rRsrc, VISAResourceInfo & rReturnedInfo);
86 };
87
88 //----------------------------------------------------------------------//
91 {
92 private:
93 ViSession m_InstrSession;
94 bool m_ExclusiveLock;
95
96 public:
97 // Constructors / destructors
102 virtual ~CVISAInstrument();
103
104 // Connexion
107 virtual bool Open(void);
108
113 bool Open(eOpenAccessMode AccessMode, ViUInt32 Timeout_ms = 0);
114
115 virtual void Close();
116 virtual bool IsOpen();
117
118 // Info
122 virtual std::string StatusDescription (I32 Status);
123
124 const ViSession & Session();
125 virtual bool Timeout();
126
127 // Write / Read
131 virtual bool Write(const char * Str);
132
136 virtual bool Write(const std::string & rStr);
137
141 virtual bool Write(const CSCPIBuffer & rBuf);
142
147 bool Write(const ViBuf WriteBuf, ViUInt32 BuffLen);
148
153 virtual bool Read(CSCPIBuffer & rBuf, bool Append = false);
154
160 bool Read(ViPBuf ReadBuf, ViUInt32 ReadLen, ViUInt32 & rRetLen);
161
162 // Other operations
166 virtual bool SetTimeout(ViUInt32 Timeout);
167
168 virtual bool Clear();
169
173 virtual bool ReadSTB(ViUInt16 & rSTB);
174
177 virtual bool AssertTrigger(void);
178
182 bool AssertTrigger(eTriggerProtocol Protocol);
183
184 // Lock / Unlock
188 virtual bool LockExclusive(U32 Timeout);
189
195 bool LockShared(ViUInt32 Timeout, ViKeyId RequestedKey, ViChar AccessKey[]);
196
197 virtual bool Unlock();
198
199 virtual bool LockedExclusive();
200
201 // Events
204 virtual bool EnableEvent (void);
205
208 virtual bool DisableEvent (void);
209
213 virtual bool WaitOnEvent (U32 Timeout);
214
217 virtual bool DiscardEvents (void);
218
223 bool EnableEvent(eEventType Type, eEventMechanism Mechanism);
224
229 bool DisableEvent(eEventType Type, eEventMechanism Mechanism);
230
235 bool WaitOnEvent(eEventType Type, ViUInt32 Timeout);
236
240 bool WaitOnAllEvents(ViUInt32 Timeout);
241
246 bool DiscardEvents(eEventType Type, eEventMechanism Mechanism);
247
248 // Attributes
253 bool GetAttribute(ViAttr Attribute, void * Value);
254
255 // USB
265 bool UsbControlIn(ViInt16 bmRequestType, ViInt16 bRequest, ViUInt16 wValue, ViUInt16 wIndex, ViUInt16 wLength, ViPBuf buf, ViUInt16 & rretCnt);
266
275 bool UsbControlOut(ViInt16 bmRequestType, ViInt16 bRequest, ViUInt16 wValue, ViUInt16 wIndex, ViUInt16 wLength, ViBuf buf);
276
277 // Serial
281 bool ConfigSerialPort(const sSerialPortSettings & rPortSettings);
282 };
283
284}} // namespace MTL::Instrument
Abstract IEEE488 instrument class: interface definition.
int I32
32-bit signed integer.
Definition OSDefines.h:27
unsigned int U32
32-bit unsigned integer.
Definition OSDefines.h:31
IEEE488.2 / SCPI instrument I/O: Instrument buffer management.
Synchronization primitives.
C++ wrapper for NI-VISA: type definitions.
CIEEE488Instrument(CIEEE488ResourceManager &rRM, tResourceName Rsrc)
Constructor.
Parsed resource information for a list of instruments.
List of VISA resource names.
virtual bool Unlock()
Unlock the session.
virtual bool Open(void)
Open a session to this VISA instrument.
const ViSession & Session()
Return instrument session identifier.
virtual ~CVISAInstrument()
Destructor.
virtual bool LockExclusive(U32 Timeout)
Obtain an exclusive lock for this session.
virtual bool Read(CSCPIBuffer &rBuf, bool Append=false)
Read from a VISA instrument: SCPI buffer class variant.
virtual bool Timeout()
Last operation timed out.
virtual bool Clear()
Clear the instrument.
virtual bool ReadSTB(ViUInt16 &rSTB)
Read status byte.
virtual bool LockedExclusive()
Check whether session is locked exclusively.
virtual bool DiscardEvents(void)
Discard service requests.
bool WaitOnAllEvents(ViUInt32 Timeout)
Wait for all events.
virtual void Close()
Close session to this VISA instrument.
virtual bool IsOpen()
Check whether a session to this instrument is open.
bool ConfigSerialPort(const sSerialPortSettings &rPortSettings)
Set all the instrument attributes to configure the serial communication.
virtual bool AssertTrigger(void)
Assert a trigger.
virtual bool Write(const char *Str)
Write to a VISA instrument: C string variant.
virtual bool SetTimeout(ViUInt32 Timeout)
Set the timeout for this instrument session.
virtual bool DisableEvent(void)
Disable service requests.
bool UsbControlIn(ViInt16 bmRequestType, ViInt16 bRequest, ViUInt16 wValue, ViUInt16 wIndex, ViUInt16 wLength, ViPBuf buf, ViUInt16 &rretCnt)
Performs a USB control pipe transfer from the instrument.
bool LockShared(ViUInt32 Timeout, ViKeyId RequestedKey, ViChar AccessKey[])
Obtain a shared lock for this session.
bool UsbControlOut(ViInt16 bmRequestType, ViInt16 bRequest, ViUInt16 wValue, ViUInt16 wIndex, ViUInt16 wLength, ViBuf buf)
Performs a USB control pipe transfer to the instrument.
virtual bool WaitOnEvent(U32 Timeout)
Wait for a service request.
bool GetAttribute(ViAttr Attribute, void *Value)
Retrieves the state of an attribute.
virtual std::string StatusDescription(I32 Status)
Return description of status word.
CVISAInstrument(CVISAResourceManager &rRM, tResourceName Rsrc)
Constructor.
virtual bool EnableEvent(void)
Enable service requests.
VISA Resource Manager class.
virtual bool Initialize()
Initialize the Resource Manager.
const ViSession & Session()
Return Resource Manager session identifier.
virtual std::string StatusDescription(I32 Status)
Return description of status word.
virtual bool Timeout()
Last operation timed out.
ViStatus Status()
Return Resource Manager status.
bool ResourceInfo(tResourceName &rRsrc, eInterfaceType &rIntfType, tInterfaceNumber &rIntfNumber)
Get the interface type and number for the given VISA resource name.
virtual bool FindResources(CResourceList &rList, std::string Filter="?*")
Find VISA resources.
Information about a VISA resource.
std::string tResourceName
IEEE488 resource name.
eEventMechanism
Event mechanisms.
std::string StatusDescription(ViSession Session, ViStatus Status)
Return user-readable description of the given status code.
ViUInt16 tInterfaceNumber
Interface number.
eOpenAccessMode
Access modes for VISA resources.
eInterfaceType
VISA interface types.
eTriggerProtocol
Trigger protocols.
Definition THM1176.h:73