NetOceanDirect  3.1.1
OceanDirect .NET API
NetOceanDirect.h
1 #pragma once
2 #include "ManagedObject.h"
3 #include "SpectrumWithMetadata.h"
4 
5 namespace NetOceanDirect {
6  ref class Advanced;
7  ref class Devices;
8  ref class SpectrumWithMetadata;
9 
10  public ref class OceanDirect : public ManagedObject<OceanDirectAPI>
11  {
12  protected:
13  static OceanDirect^ odInstance;
14  OceanDirect();
15  public:
21  enum class FeatureID {
22  FEATURE_ID_SERIAL_NUMBER = ::FeatureId::FEATURE_ID_SERIAL_NUMBER,
23  FEATURE_ID_SPECTROMETER = ::FeatureId::FEATURE_ID_SPECTROMETER,
24  FEATURE_ID_THERMOELECTRIC = ::FeatureId::FEATURE_ID_THERMOELECTRIC,
25  FEATURE_ID_IRRADCAL = ::FeatureId::FEATURE_ID_IRRADCAL,
26  FEATURE_ID_EEPROM = ::FeatureId::FEATURE_ID_EEPROM,
27  FEATURE_ID_STROBE_LAMP = ::FeatureId::FEATURE_ID_STROBE_LAMP,
28  FEATURE_ID_WAVECAL = ::FeatureId::FEATURE_ID_WAVECAL,
29  FEATURE_ID_NONLINEARITYCAL = ::FeatureId::FEATURE_ID_NONLINEARITYCAL,
30  FEATURE_ID_STRAYLIGHTCAL = ::FeatureId::FEATURE_ID_STRAYLIGHTCAL,
31  FEATURE_ID_RAW_BUS_ACCESS = ::FeatureId::FEATURE_ID_RAW_BUS_ACCESS,
32  FEATURE_ID_CONTINUOUS_STROBE = ::FeatureId::FEATURE_ID_CONTINUOUS_STROBE,
33  FEATURE_ID_LIGHT_SOURCE = ::FeatureId::FEATURE_ID_LIGHT_SOURCE,
34  FEATURE_ID_TEMPERATURE = ::FeatureId::FEATURE_ID_TEMPERATURE,
35  FEATURE_ID_OPTICAL_BENCH = ::FeatureId::FEATURE_ID_OPTICAL_BENCH,
36  FEATURE_ID_REVISION = ::FeatureId::FEATURE_ID_REVISION,
37  FEATURE_ID_DATA_BUFFER = ::FeatureId::FEATURE_ID_DATA_BUFFER,
38  FEATURE_ID_PIXEL_BINNING = ::FeatureId::FEATURE_ID_PIXEL_BINNING,
39  FEATURE_ID_GPIO = ::FeatureId::FEATURE_ID_GPIO,
40  FEATURE_ID_SINGLE_STROBE = ::FeatureId::FEATURE_ID_SINGLE_STROBE,
41  FEATURE_ID_QUERY_STATUS = ::FeatureId::FEATURE_ID_QUERY_STATUS,
42  FEATURE_ID_BACK_TO_BACK = ::FeatureId::FEATURE_ID_BACK_TO_BACK,
43  FEATURE_ID_LED_ACTIVITY = ::FeatureId::FEATURE_ID_LED_ACTIVITY,
44  FEATURE_ID_TIME_META = ::FeatureId::FEATURE_ID_TIME_META,
45  FEATURE_ID_DHCP = ::FeatureId::FEATURE_ID_DHCP,
46  FEATURE_ID_PIXEL = ::FeatureId::FEATURE_ID_PIXEL,
47  FEATURE_ID_AUTO_NULLING = ::FeatureId::FEATURE_ID_AUTO_NULLING,
48  FEATURE_ID_IPV4_ADDRESS = ::FeatureId::FEATURE_ID_IPV4_ADDRESS,
49  FEATURE_ID_IPV4_USER_STRING = ::FeatureId::FEATURE_ID_IPV4_USER_STRING,
50  FEATURE_ID_DEVICE_INFORMATION = ::FeatureId::FEATURE_ID_DEVICE_INFORMATION,
51  FEATURE_ID_DEVICE_ALIAS = ::FeatureId::FEATURE_ID_DEVICE_ALIAS,
52  FEATURE_ID_SERIAL_PORT = ::FeatureId::FEATURE_ID_SERIAL_PORT,
53  FEATURE_ID_SPECTRUM_ACQUISITION_CONTROL = ::FeatureId::FEATURE_ID_SPECTRUM_ACQUISITION_CONTROL,
54  FEATURE_ID_NETWORK_CONFIGURATION = ::FeatureId::FEATURE_ID_NETWORK_CONFIGURATION,
55  FEATURE_ID_ETHERNET = ::FeatureId::FEATURE_ID_ETHERNET,
56  FEATURE_ID_SHUTTER = ::FeatureId::FEATURE_ID_SHUTTER,
57  FEATURE_ID_HIGH_GAIN_MODE = ::FeatureId::FEATURE_ID_HIGH_GAIN_MODE
58  };
59 
60  OceanDirect(OceanDirectAPI* instance);
67  if (!odInstance) {
68  odInstance = gcnew OceanDirect();
69  }
70  return odInstance;
71  }
72 
73  virtual ~OceanDirect() {};
74 
82  virtual Advanced^ AdvancedFeatures();
83 
84  // Device discovery methods
102  virtual void openDevice(int deviceID, int% errorCode);
103 
117  virtual int addNetworkDevice(String^ ipAddress, String^ deviceType, int% errorCode);
118 
132  virtual void closeDevice(int deviceID, int% errorCode);
133 
138  virtual void shutDown();
139 
156  virtual array<Devices^>^ findDevices();
157 
172  virtual array<Devices^>^ findUSBDevices();
173 
178  virtual array<Devices^>^ getCurrentDevicesConnected();
179 
190  virtual String^ getDeviceModel(long deviceID, int% errorCode);
191 
200  virtual void getApiVersion(unsigned int% major, unsigned int% minor, unsigned int% point);
201  virtual void getAPIRCNumber(unsigned int% candidate);
202 
214  virtual bool isFeatureEnabled(int deviceID, int% errorCode, NetOceanDirect::OceanDirect::FeatureID featureId);
215 
222  virtual void setMulticastMsgSendRetry(size_t retryCount);
223 
230  virtual void setMulticastMsgResponseReadRetry(size_t retryCount);
231 
238  virtual void setMulticastMsgResponseReadDelay(size_t delayMs);
239 
240  // Spectrometer-specific methods *************************************
241 
260  virtual void applyElectricDarkCorrection(int deviceID, int% errorCode, bool apply);
261 
273  virtual bool getElectricDarkCorrectionUsage(int deviceID, int% errorCode);
274 
275 
292  virtual void applyNonLinearityCorrection(int deviceID, int% errorCode, bool apply);
293 
303  virtual bool getNonLinearityCorrectionUsage(int deviceID, int% errorCode);
304 
334  virtual void setIntegrationTimeMicros(int deviceID, int% errorCode, unsigned long integrationTimeMicros);
335 
353  virtual unsigned long getIntegrationTimeMicros(int deviceID, int% errorCode);
354 
372  virtual unsigned long getIntegrationTimeStepSize(int deviceID, int% errorCode);
373 
385  virtual unsigned int getBoxcarWidth(long deviceID, int% errorCode);
386 
398  virtual unsigned int getScansToAverage(long deviceID, int% errorCode);
399 
410  virtual void setBoxcarWidth(long deviceID, int% errorCode, unsigned int boxcarWidth);
411 
431  virtual void setScansToAverage(long deviceID, int% errorCode, unsigned int scansToAverage);
432 
446  virtual int getTriggerMode(long deviceID, int% errorCode);
447 
459  virtual void setTriggerMode(int deviceID, int% errorCode, int triggerMode);
460 
470  virtual void setAcquisitionDelayMicroseconds(long deviceID, int% errorCode, unsigned long delay_usec);
471 
481  virtual unsigned long getAcquisitionDelayMicroseconds(long deviceID, int% errorCode);
482 
496  virtual unsigned long getAcquisitionDelayIncrementMicroseconds(long deviceID, int% errorCode);
497 
508  virtual unsigned long getAcquisitionDelayMaximumMicroseconds(long deviceID, int% errorCode);
509 
520  virtual unsigned long getAcquisitionDelayMinimumMicroseconds(long deviceID, int% errorCode);
521 
536  virtual array<double>^ getWavelengths(int deviceID, int% errorCode);
537 
554  virtual double getWavelength(int deviceID, int% errorCode, int pixel);
555 
569  virtual array<double>^ getSpectrum(int deviceID, int% errorCode);
570 
585  virtual array<SpectrumWithMetadata^>^ getRawSpectrumWithMetadata(int deviceID, int% errorCode, int count);
586 
597  virtual void setStoredDarkSpectrum(long deviceID, int% errorCode, array<double>^% darkSpectrum);
598 
610  virtual array<double>^ getStoredDarkSpectrum(long deviceID, int% errorCode);
611 
625  virtual array<double>^ getDarkCorrectedSpectrum(long deviceID, int% errorCode, array<double>^% darkSpectrum);
626 
637  virtual array<double>^ darkCorrectSpectrum(long deviceID, int% errorCode, array<double>^% illuminatedSpectrum);
638 
653  virtual array<double>^ getDarkCorrectedSpectrum(long deviceID, int% errorCode);
654 
665  virtual array<double>^ darkCorrectSpectrum(long deviceID, int% errorCode, array<double>^% darkSpectrum, array<double>^% illuminatedSpectrum);
666 
681  virtual array<double>^ getNonlinearityCorrectedSpectrum(long deviceID, int% errorCode, array<double>^% darkSpectrum);
682 
699  virtual array<double>^ nonlinearityCorrectSpectrum(long deviceID, int% errorCode, array<double>^% illuminatedSpectrum);
700 
716  virtual array<double>^ getNonlinearityCorrectedSpectrum(long deviceID, int% errorCode);
717 
733  virtual array<double>^ nonlinearityCorrectSpectrum(long deviceID, int% errorCode, array<double>^% darkSpectrum, array<double>^% illuminatedSpectrum);
734 
748  array<double>^ boxcarCorrectSpectrum(long deviceID, int% errorCode, array<double>^% illuminatedSpectrum, unsigned int boxcarWidth);
749 
750 
764  virtual int getNumberOfPixels(int deviceID, int% errorCode);
765 
784  virtual int getIndexAtWavelength(long deviceID, int% errorCode, double% wavelength, double aproxWavelength);
785 
803  virtual array<int>^ getIndicesAtAnyWavelength(long deviceID, int% errorCode, array<double>^% wavelength, int length);
804 
823  virtual array<int>^ getIndicesAtWavelengthRange(long deviceID, int% errorCode, array<double>^% wavelength, double lo, double hi);
824 
839  virtual int getEDPCount(int deviceID, int% errorCode);
840 
856  virtual array<int>^ getEDPIndices(int deviceID, int% errorCode, int length);
857 
870  virtual double getMaximumIntensity(int deviceID, int% errorCode);
871 
892  virtual unsigned long getMinimumIntegrationTime(int deviceID, int% errorCode);
893 
909  virtual unsigned long getMinimumAveragingIntegrationTimeMicros(long deviceID, int% errorCode);
910 
926  virtual unsigned long getMaximumIntegrationTime(int deviceID, int% errorCode);
927 
939  virtual String^ getSerialNumber(long deviceID, int% errorCode);
940 
952  virtual array<double>^ getWavelengthCoefficients(long deviceID, int% errorCode);
953 
962  virtual String^ getErrorMessage(int errorCode);
963 
972  virtual int getErrorMessageLength(int errorCode);
973 
979  virtual int findSpectrumLength(int deviceID, int% errorCode);
980 
986  virtual array<int>^ getDeviceIDs();
987 
988  private:
989  int specifiedCnt;
990  int totalIds;
991  Dictionary<int, Devices^>^ devs;
992  int probeDevices();
993  int getDeviceIDs(array<int>^ buffer, int length);
994  void setDeviceUsage(int deviceID, bool val);
995 
996  // Presented as private until use is determined
997  int getFormattedSpectrumLength(int deviceID, int% errorCode);
998  int getFormattedSpectrum(int deviceID, int% errorCode, array<double>^% buffer, int length);
999  Devices^ createDevice(int deviceID);
1000 
1001  generic<typename T> array<T>^ AsManagedArray(void* memory, int count);
1002  generic<typename T> void AsUnmanagedArray(array<T>^ arr, void * dest);
1003 
1004  };
1005 }
1006 
Definition: ManagedObject.h:16
Definition: NetOceanDirect.h:11
virtual array< double > getStoredDarkSpectrum(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:410
virtual void setMulticastMsgResponseReadDelay(size_t delayMs)
Definition: NetOceanDirect.cpp:220
virtual void shutDown()
Definition: NetOceanDirect.cpp:87
virtual void setScansToAverage(long deviceID, int% errorCode, unsigned int scansToAverage)
Definition: NetOceanDirect.cpp:315
virtual int getTriggerMode(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:536
virtual array< double > darkCorrectSpectrum(long deviceID, int% errorCode, array< double >^% illuminatedSpectrum)
Definition: NetOceanDirect.cpp:435
virtual String getErrorMessage(int errorCode)
Definition: NetOceanDirect.cpp:669
array< double > boxcarCorrectSpectrum(long deviceID, int% errorCode, array< double >^% illuminatedSpectrum, unsigned int boxcarWidth)
Definition: NetOceanDirect.cpp:524
virtual Advanced AdvancedFeatures()
Definition: NetOceanDirect.cpp:35
virtual void setMulticastMsgResponseReadRetry(size_t retryCount)
Definition: NetOceanDirect.cpp:216
virtual void applyNonLinearityCorrection(int deviceID, int% errorCode, bool apply)
Definition: NetOceanDirect.cpp:265
virtual void openDevice(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:49
virtual array< SpectrumWithMetadata^> getRawSpectrumWithMetadata(int deviceID, int% errorCode, int count)
Definition: NetOceanDirect.cpp:367
virtual array< double > getSpectrum(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:325
virtual array< double > getDarkCorrectedSpectrum(long deviceID, int% errorCode, array< double >^% darkSpectrum)
Definition: NetOceanDirect.cpp:422
virtual array< int > getIndicesAtWavelengthRange(long deviceID, int% errorCode, array< double >^% wavelength, double lo, double hi)
Definition: NetOceanDirect.cpp:599
virtual String getDeviceModel(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:224
virtual void closeDevice(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:81
virtual void setTriggerMode(int deviceID, int% errorCode, int triggerMode)
Definition: NetOceanDirect.cpp:542
virtual double getMaximumIntensity(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:647
virtual bool getNonLinearityCorrectionUsage(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:270
virtual unsigned long getMaximumIntegrationTime(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:663
virtual array< double > nonlinearityCorrectSpectrum(long deviceID, int% errorCode, array< double >^% illuminatedSpectrum)
Definition: NetOceanDirect.cpp:485
virtual array< Devices^> getCurrentDevicesConnected()
Definition: NetOceanDirect.cpp:108
virtual unsigned long getIntegrationTimeMicros(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:285
virtual array< int > getEDPIndices(int deviceID, int% errorCode, int length)
Definition: NetOceanDirect.cpp:636
virtual int findSpectrumLength(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:251
virtual unsigned long getMinimumAveragingIntegrationTimeMicros(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:658
virtual array< double > getWavelengthCoefficients(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:242
virtual unsigned long getMinimumIntegrationTime(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:652
virtual array< Devices^> findDevices()
Definition: NetOceanDirect.cpp:120
virtual void getApiVersion(unsigned int% major, unsigned int% minor, unsigned int% point)
Definition: NetOceanDirect.cpp:194
virtual unsigned long getAcquisitionDelayMaximumMicroseconds(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:564
virtual int getEDPCount(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:631
virtual unsigned long getAcquisitionDelayIncrementMicroseconds(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:558
virtual int getNumberOfPixels(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:576
virtual bool isFeatureEnabled(int deviceID, int% errorCode, NetOceanDirect::OceanDirect::FeatureID featureId)
Definition: NetOceanDirect.cpp:207
virtual unsigned long getIntegrationTimeStepSize(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:295
virtual array< int > getIndicesAtAnyWavelength(long deviceID, int% errorCode, array< double >^% wavelength, int length)
Definition: NetOceanDirect.cpp:614
FeatureID
Definition: NetOceanDirect.h:21
virtual unsigned long getAcquisitionDelayMicroseconds(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:552
virtual bool getElectricDarkCorrectionUsage(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:280
virtual void setIntegrationTimeMicros(int deviceID, int% errorCode, unsigned long integrationTimeMicros)
Definition: NetOceanDirect.cpp:290
static OceanDirect getInstance()
Definition: NetOceanDirect.h:66
virtual void setStoredDarkSpectrum(long deviceID, int% errorCode, array< double >^% darkSpectrum)
Definition: NetOceanDirect.cpp:404
virtual int addNetworkDevice(String^ ipAddress, String^ deviceType, int% errorCode)
Definition: NetOceanDirect.cpp:58
virtual unsigned long getAcquisitionDelayMinimumMicroseconds(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:570
virtual void setBoxcarWidth(long deviceID, int% errorCode, unsigned int boxcarWidth)
Definition: NetOceanDirect.cpp:310
virtual int getErrorMessageLength(int errorCode)
Definition: NetOceanDirect.cpp:684
virtual String getSerialNumber(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:233
virtual double getWavelength(int deviceID, int% errorCode, int pixel)
Definition: NetOceanDirect.cpp:320
virtual unsigned int getBoxcarWidth(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:300
virtual void applyElectricDarkCorrection(int deviceID, int% errorCode, bool apply)
Definition: NetOceanDirect.cpp:275
virtual int getIndexAtWavelength(long deviceID, int% errorCode, double% wavelength, double aproxWavelength)
Definition: NetOceanDirect.cpp:591
virtual array< Devices^> findUSBDevices()
Definition: NetOceanDirect.cpp:147
virtual array< double > getWavelengths(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:580
virtual unsigned int getScansToAverage(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:305
virtual void setMulticastMsgSendRetry(size_t retryCount)
Definition: NetOceanDirect.cpp:212
virtual array< int > getDeviceIDs()
Definition: NetOceanDirect.cpp:676
virtual void setAcquisitionDelayMicroseconds(long deviceID, int% errorCode, unsigned long delay_usec)
Definition: NetOceanDirect.cpp:547
virtual array< double > getNonlinearityCorrectedSpectrum(long deviceID, int% errorCode, array< double >^% darkSpectrum)
Definition: NetOceanDirect.cpp:472