Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

GPIBController.h

Go to the documentation of this file.
00001 /*
00002  * Time-stamp: <00/08/07 18:53:36 pagey>
00003  *
00004  * $Id: GPIBController.h,v 0.13 2000/08/08 02:38:50 pagey Exp $
00005  *
00006  */
00007 #ifndef GPIBController_h
00008 #define GPIBController_h
00009 
00010 #include <list>
00011 #include <string>
00012 #include <fstream>
00013 #include "GPIBEquipment.h"
00014 #include "LibGPIB.h"
00015 
00016 extern "C++" {
00017   namespace LibGPIB {
00035     class GPIBController : public iostream {
00036     public: 
00040       typedef GPIBEquipment *                    GPIBEquipmentPtr ;
00041       typedef list<GPIBEquipmentPtr>             GPIBEquipmentList ;
00042       typedef GPIBEquipmentList::iterator        GPIBEquipmentListIterator ;
00043       typedef GPIBEquipmentList::const_iterator  GPIBEquipmentListConstIterator ;
00045 
00046       /* ----------------------------------------------------------------------
00047        * Public Static Members
00048        * ----------------------------------------------------------------------
00049        */
00053       static const char CR = 13 ;
00054 
00058       static const char LF = 10 ;
00059 
00066       enum EOSModeVal {
00068         EOS_TERM_READ = (1<<2), 
00070         EOS_WRITE_EOI = (1<<3), 
00072         EOS_EIGHT_BIT = (1<<4)  
00073       } ;
00075 
00079 
00081 
00125       GPIBController() ; 
00126 
00132       virtual ~GPIBController() = 0 ;
00133 
00135 
00148       void Open() = 0 ;
00149 
00154       void Close() = 0 ;
00155 
00163       virtual void BecomeActiveController(bool synchronously=true) = 0 ;
00164 
00171       virtual void ClearDevice(GPIBEquipment &device) = 0 ;
00172 
00179       virtual void SendCommand(GPIBEquipment &device, const string command) = 0 ;
00180 
00188       virtual const string ReadData(GPIBEquipment &device, const int read_bytes) = 0 ;
00189 
00196       virtual void SetLocal(GPIBEquipment &device) = 0 ;
00197 
00198       /*
00199        * Send the a command to the device asynchronously. 
00200        *
00201        */
00202       /* virtual void SendCommandAsync(const GPIBEquipment &device, const string command) = 0.0 ;
00203        */ 
00204 
00210       virtual void SetEOSModeAndChar(const EOSModeVal mode, const char eos) = 0 ; 
00211 
00220       const EOSModeVal SetEOSMode(const EOSModeVal mode) ;
00221 
00226       const EOSModeVal EOSMode() const ;
00227 
00236       const char SetEOSChar(const char eos) ;
00237 
00243       const char EOSChar() const ;
00244 
00251       void ConnectDevice(GPIBEquipment& device) ; 
00252 
00257       void DisconnectDevice(GPIBEquipment& device) ;
00258     
00264       void DisconnectAllDevices() ; 
00265 
00266       /*
00267        * Scan the GPIB bus and extracts a list of devices
00268        * which are connected to the bus. The routine checks 
00269        * for listening devices at GPIB addresses from mAddressMin 
00270        * to mAddressMax (all inclusive). 
00271        *
00272        */
00273       /* virtual void DetectDevices() = 0.0 ; */
00274 
00276 
00280 
00282 
00283       /* ----------------------------------------------------------------------
00284        * Friends
00285        * ----------------------------------------------------------------------
00286        */
00292       friend GPIBEquipmentBuffer ;
00293     protected:
00294       /* ----------------------------------------------------------------------
00295        * Protected Data Members
00296        * ----------------------------------------------------------------------
00297        */
00298       /* ----------------------------------------------------------------------
00299        * Protected Methods
00300        * ----------------------------------------------------------------------
00301        */
00306       virtual ostream& SendCharPrefix( const int primary_address, 
00307                                        const int secondary_address=0 ) = 0 ;
00308 
00313       virtual ostream& SendCharPostfix( const int primary_address, 
00314                                         const int secondary_address=0 ) = 0 ;
00315 
00320       virtual ostream& ReadCharPrefix( const int primary_address, 
00321                                        const int secondary_address=0 ) = 0 ;
00322 
00327       virtual ostream& ReadCharPostfix( const int primary_address, 
00328                                         const int secondary_address=0) = 0 ;
00329 
00330     private:
00331       /* ----------------------------------------------------------------------
00332        * Private Data Members
00333        * ----------------------------------------------------------------------
00334        */
00339       GPIBEquipmentList mDeviceList ;
00340      
00344       int mIOTimeout ; 
00345 
00349       int mEOIMode ;
00350     
00362       EOSModeVal mEOSMode ; 
00363 
00367       char mEOSChar ;
00368       /* ----------------------------------------------------------------------
00369        * Private Methods
00370        * ----------------------------------------------------------------------
00371        */
00372     } ;
00373     
00374     inline 
00375     GPIBController::GPIBController() :
00376       iostream(0) { 
00377       mEOSMode = EOS_TERM_READ ; 
00378       mEOSChar = '\n' ;
00379       mEOIMode = 0 ;
00380       mIOTimeout = 0 ;
00381       
00382     } 
00383 
00384     inline
00385     GPIBController::~GPIBController() {
00386       DisconnectAllDevices() ; 
00387     }
00388 
00389     inline 
00390     const GPIBController::EOSModeVal 
00391     GPIBController::SetEOSMode(const EOSModeVal mode) {
00392       SetEOSModeAndChar(mode, mEOSChar) ; 
00393       return mEOSMode ; 
00394     } 
00395 
00396     inline
00397     const GPIBController::EOSModeVal 
00398     GPIBController::EOSMode() const {
00399       return mEOSMode ;
00400     }
00401 
00402     inline
00403     const char GPIBController::SetEOSChar(const char eos) { 
00404       SetEOSModeAndChar(mEOSMode, eos) ; 
00405       return mEOSChar ; 
00406     }
00407 
00408     inline
00409     const char
00410     GPIBController::EOSChar() const {
00411       return mEOSChar ;
00412     }
00413 
00414   } // namespace LibGPIB
00415 } // extern "C++" 
00416 
00417 #endif

Generated at Tue Aug 8 01:37:55 2000 for libgpib by doxygen1.1.4 written by Dimitri van Heesch, © 1997-2000