THM1176InstrumentDriver 1.1
C++ API for Metrolab THM1176
Loading...
Searching...
No Matches
IEEE488Instrument.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
8
9#pragma once
10
11#include "OSDefines.h"
14#include "Synchronization.h"
15
16using namespace MTL::Synchronization;
17
18namespace MTL {
19 namespace Instrument {
20 //----------------------------------------------------------------------//
23 {
24 protected:
25 mutable CMutex m_Lock;
27
28 public:
29 // Constructors / destructors
33 { }
34
35 // Initialization
36 virtual bool Initialize() = 0;
37
38 // Resource utilities
43 virtual bool FindResources(CResourceList & rList, std::string Filter = "?*") = 0;
44
45 // Info
46 I32 Status(void)
47 {
48 CLockGuard<CMutex> l_LockGuard(m_Lock);
49 return m_Status;
50 }
51
55 virtual std::string StatusDescription (I32 Status) = 0;
56
57 virtual bool Timeout(void) = 0;
58 };
59
60 //----------------------------------------------------------------------//
63 {
64 protected:
65 static const I32 IEEE488_DEFAULT_TIMEOUT = 100;
66
67 protected:
73
74 public:
75 // Constructors / destructors
83 { }
84
85 // Connection
88 virtual bool Open(void) = 0;
89 virtual void Close() = 0;
90 virtual bool IsOpen() = 0;
91
92 // Info
93 I32 Status(void)
94 {
96 return m_Status;
97 }
98
102 virtual std::string StatusDescription (I32 Status) = 0;
103
104 virtual bool Timeout(void) = 0;
105
106 // Write / Read
110 virtual bool Write(const char * Str) = 0;
111
115 virtual bool Write(const std::string & rStr) = 0;
116
120 virtual bool Write(const CSCPIBuffer & rBuf) = 0;
121
126 virtual bool Read(CSCPIBuffer & rBuf, bool Append = false) = 0;
127
128 // Other operations
133 {
136 return true;
137 }
138
142 {
143 return m_Timeout;
144 }
145
146 virtual bool Clear() = 0;
147
151 virtual bool ReadSTB(U16 & rSTB) = 0;
152
155 virtual bool AssertTrigger(void) = 0;
156
157 // Lock / Unlock
161 virtual bool LockExclusive(U32 Timeout) = 0;
162
163 virtual bool Unlock() = 0;
164
165 virtual bool LockedExclusive() = 0;
166
167 virtual bool EnableEvent (void) = 0;
168
169 virtual bool DisableEvent (void) = 0;
170
171 virtual bool WaitOnEvent (U32 Timeout) = 0;
172
173 virtual bool DiscardEvents (void) = 0;
174
175 }; // class CIEEE488Instrument
176
177 } // namespace MTL::Instrument
178} // namespace MTL
Abstract IEEE488 instrument class: type definitions.
Platform Dependent Definitions.
int I32
32-bit signed integer.
Definition OSDefines.h:27
unsigned int U32
32-bit unsigned integer.
Definition OSDefines.h:31
unsigned short U16
16-bit unsigned integer.
Definition OSDefines.h:30
IEEE488.2 / SCPI instrument I/O: Instrument buffer management.
Synchronization primitives.
CRecursiveMutex m_Lock
Lock onto the class interface.
virtual bool Write(const CSCPIBuffer &rBuf)=0
Write to a IEEE488 instrument: SCPI buffer class variant.
virtual bool Clear()=0
Clear the instrument.
virtual bool LockExclusive(U32 Timeout)=0
Obtain an exclusive lock for this session.
virtual bool Write(const std::string &rStr)=0
Write to a IEEE488 instrument: C++ string variant.
tResourceName m_Rsrc
Resource name of the instrument.
U32 GetTimeout(void)
Return the timeout for this instrument.
virtual bool DiscardEvents(void)=0
Discard service requests.
virtual bool DisableEvent(void)=0
Disable service requests.
virtual bool Timeout(void)=0
Last operation timed out.
virtual bool AssertTrigger(void)=0
Assert a trigger.
virtual bool LockedExclusive()=0
Check whether session is locked exclusively.
U32 m_Timeout
Timeout for operations.
virtual void Close()=0
Close session to this instrument.
virtual bool EnableEvent(void)=0
Enable service requests.
virtual std::string StatusDescription(I32 Status)=0
Return description of status word.
CIEEE488ResourceManager & m_rRrsrcMan
Reference to the associated resource manager.
bool SetTimeout(U32 Timeout)
Set the timeout for this instrument.
CIEEE488Instrument(CIEEE488ResourceManager &rRM, tResourceName Rsrc)
Constructor.
virtual bool IsOpen()=0
Check whether a session to this instrument is open.
virtual bool Unlock()=0
Unlock the session.
virtual bool Read(CSCPIBuffer &rBuf, bool Append=false)=0
Read from a IEEE488 instrument: SCPI buffer class variant.
static const I32 IEEE488_DEFAULT_TIMEOUT
Default timeout (ms)
virtual bool Open(void)=0
Open a session to this IEEE488 instrument.
I32 m_Status
Status of last operation.
virtual bool WaitOnEvent(U32 Timeout)=0
Wait for a service request.
virtual bool ReadSTB(U16 &rSTB)=0
Read status byte.
virtual bool Write(const char *Str)=0
Write to a IEEE488 instrument: C string variant.
IEEE488 Instrument Resource Manager class.
virtual bool Initialize()=0
Initialize the Resource Manager.
virtual bool FindResources(CResourceList &rList, std::string Filter="?*")=0
Find IEEE488 resources.
virtual bool Timeout(void)=0
Last operation timed out.
CMutex m_Lock
Lock onto the resource manager.
virtual std::string StatusDescription(I32 Status)=0
Return description of status word.
I32 m_Status
Status of last operation.
List of VISA resource names.
std::string tResourceName
IEEE488 resource name.
std::mutex CMutex
Mutex.
std::recursive_mutex CRecursiveMutex
Recursive Mutex.
Definition THM1176.h:73