1 %{ 2 #include "ctb-0.16/gpib.h" 3 %} 4 5 %include iobase.i 6 7 namespace ctb { 8 9 %typemap(in) void * dcs (Gpib_DCS tmp) { 10 /* dont check for list */ 11 $1 = &tmp; 12 } 13 14 enum GpibTimeout 15 { 16 GpibTimeoutNONE = 0, 17 GpibTimeout10us, 18 GpibTimeout30us, 19 GpibTimeout100us, 20 GpibTimeout300us, 21 GpibTimeout1ms, 22 GpibTimeout3ms, 23 GpibTimeout10ms, 24 GpibTimeout30ms, 25 GpibTimeout100ms, 26 GpibTimeout300ms, 27 GpibTimeout1s, 28 GpibTimeout3s, 29 GpibTimeout10s, 30 GpibTimeout30s, 31 GpibTimeout100s, 32 GpibTimeout300s, 33 GpibTimeout1000s 34 }; 35 36 struct Gpib_DCS 37 { 38 int m_address1; 39 int m_address2; 40 GpibTimeout m_timeout; 41 bool m_eot; 42 unsigned char m_eosChar; 43 unsigned char m_eosMode; 44 Gpib_DCS(); 45 ~Gpib_DCS(); 46 char* GetSettings(); 47 }; 48 49 enum { 50 CTB_GPIB_SETADR = CTB_GPIB, 51 CTB_GPIB_GETRSP, 52 CTB_GPIB_GETSTA, 53 CTB_GPIB_GETERR, 54 CTB_GPIB_GETLINES, 55 CTB_GPIB_SETTIMEOUT, 56 CTB_GPIB_GTL, 57 CTB_GPIB_REN, 58 CTB_GPIB_RESET_BUS, 59 CTB_GPIB_SET_EOS_CHAR, 60 CTB_GPIB_GET_EOS_CHAR, 61 CTB_GPIB_SET_EOS_MODE, 62 CTB_GPIB_GET_EOS_MODE 63 }; 64 65 class GpibDevice : public IOBase 66 { 67 protected: 68 int m_board; 69 int m_hd; 70 int m_state; 71 int m_error; 72 int m_count; 73 int m_asyncio; 74 Gpib_DCS m_dcs; 75 int CloseDevice(); 76 int OpenDevice(const char* devname, void* dcs); 77 virtual const char* GetErrorString(int error,bool detailed); 78 public: 79 GpibDevice(); 80 virtual ~GpibDevice(); 81 const char* ClassName(); 82 virtual const char* GetErrorDescription(int error); 83 virtual const char* GetErrorNotation(int error); 84 virtual char* GetSettingsAsString(); 85 int Ibrd(char* buf,size_t len); 86 int Ibwrt(char* buf,size_t len); 87 virtual int Ioctl(int cmd,void* args); 88 int IsOpen(); 89 int Read(char* buf,size_t len); 90 int Write(char* buf,size_t len); 91 92 static int FindListeners(int board = 0); 93 94 }; 95 96 }; 97