THM1176InstrumentManager  1.0
Qt Object abstraction for Metrolab THM1176
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"
23 #include "SCPIInstrumentBuffer.h"
24 #include "Synchronization.h"
25 
26 using namespace MTL::Synchronization;
27 
28 namespace 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
206  bool EnableEvent(eEventType Type, eEventMechanism Mechanism);
207 
212  bool DisableEvent(eEventType Type, eEventMechanism Mechanism);
213 
218  bool WaitOnEvent(eEventType Type, ViUInt32 Timeout);
219 
223  bool WaitOnAllEvents(ViUInt32 Timeout);
224 
229  bool DiscardEvents(eEventType Type, eEventMechanism Mechanism);
230 
231  // Attributes
236  bool GetAttribute(ViAttr Attribute, void * Value);
237 
238  // USB
248  bool UsbControlIn(ViInt16 bmRequestType, ViInt16 bRequest, ViUInt16 wValue, ViUInt16 wIndex, ViUInt16 wLength, ViPBuf buf, ViUInt16 & rretCnt);
249 
258  bool UsbControlOut(ViInt16 bmRequestType, ViInt16 bRequest, ViUInt16 wValue, ViUInt16 wIndex, ViUInt16 wLength, ViBuf buf);
259 
260  // Serial
264  bool ConfigSerialPort(const sSerialPortSettings & rPortSettings);
265  };
266 
267 }} // namespace MTL::Instrument
ViKeyId
ViString ViKeyId
Definition: visa.h:79
Synchronization.h
Synchronization primitives.
MTL::Instrument::CResourceList
List of VISA resource names.
Definition: IEEE488InstrumentTypes.h:26
MTL::Instrument::eEventMechanism
eEventMechanism
Event mechanisms.
Definition: VISAInstrumentTypes.h:56
ViPBuf
ViPByte ViPBuf
Definition: visatype.h:151
MTL::Instrument::VISAResourceInfo
Information about a VISA resource.
Definition: VISAInstrumentTypes.h:191
MTL::Synchronization
Definition: Synchronization.h:12
MTL::Instrument::sSerialPortSettings
Serial port settings.
Definition: VISAInstrumentTypes.h:167
ViUInt32
unsigned long ViUInt32
Definition: visatype.h:105
MTL::Instrument::eEventType
eEventType
Event types.
Definition: VISAInstrumentTypes.h:64
ViInt16
_VI_SIGNED short ViInt16
Definition: visatype.h:118
ViSession
ViObject ViSession
Definition: visatype.h:178
IEEE488Instrument.h
Abstract IEEE488 instrument class: interface definition.
MTL::Instrument::eInterfaceType
eInterfaceType
VISA interface types.
Definition: VISAInstrumentTypes.h:25
MTL
Definition: CTHM1176InstrumentManager.h:179
MTL::Instrument::StatusDescription
std::string StatusDescription(ViSession Session, ViStatus Status)
Return user-readable description of the given status code.
Definition: VISAInstrument.cpp:42
I32
int I32
32-bit signed integer.
Definition: OSDefines.h:28
ViChar
char ViChar
Definition: visatype.h:130
MTL::Instrument::eTriggerProtocol
eTriggerProtocol
Trigger protocols.
Definition: VISAInstrumentTypes.h:103
MTL::Instrument::tInterfaceNumber
ViUInt16 tInterfaceNumber
Interface number.
Definition: VISAInstrumentTypes.h:35
MTL::Instrument::CIEEE488Instrument
IEEE488 instrument class.
Definition: IEEE488Instrument.h:63
VISAInstrumentTypes.h
C++ wrapper for NI-VISA: type definitions.
MTL::Instrument::CIEEE488ResourceManager
IEEE488 Instrument Resource Manager class.
Definition: IEEE488Instrument.h:23
MTL::Instrument::tResourceName
std::string tResourceName
IEEE488 resource name.
Definition: IEEE488InstrumentTypes.h:22
ViAttr
ViUInt32 ViAttr
Definition: visatype.h:182
MTL::Instrument::eOpenAccessMode
eOpenAccessMode
Access modes for VISA resources.
Definition: VISAInstrumentTypes.h:49
SCPIInstrumentBuffer.h
IEEE488.2 / SCPI instrument I/O: Instrument buffer management.
MTL::Instrument::CSCPIBuffer
Instrument Buffer.
Definition: SCPIInstrumentBuffer.h:44
MTL::Instrument::CVISAInstrument
VISA instrument class.
Definition: VISAInstrument.h:91
ViStatus
ViInt32 ViStatus
Definition: visatype.h:166
ViUInt16
unsigned short ViUInt16
Definition: visatype.h:114
U32
unsigned int U32
32-bit unsigned integer.
Definition: OSDefines.h:32
ViBuf
ViPByte ViBuf
Definition: visatype.h:150
MTL::Instrument::CVISAResourceManager
VISA Resource Manager class.
Definition: VISAInstrument.h:40
MTL::Instrument::CParsedResourceList
Parsed resource information for a list of instruments.
Definition: VISAInstrumentTypes.h:252