NetOceanDirect  1.31.0
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 
9  public ref class OceanDirect : public ManagedObject<OceanDirectAPI>
10  {
11  OceanDirect();
12  static OceanDirect^ odInstance;
13  public:
19  enum class FeatureID {
20  FEATURE_ID_SERIAL_NUMBER = ::FeatureId::FEATURE_ID_SERIAL_NUMBER,
21  FEATURE_ID_SPECTROMETER = ::FeatureId::FEATURE_ID_SPECTROMETER,
22  FEATURE_ID_THERMOELECTRIC = ::FeatureId::FEATURE_ID_THERMOELECTRIC,
23  FEATURE_ID_IRRADCAL = ::FeatureId::FEATURE_ID_IRRADCAL,
24  FEATURE_ID_EEPROM = ::FeatureId::FEATURE_ID_EEPROM,
25  FEATURE_ID_STROBE_LAMP = ::FeatureId::FEATURE_ID_STROBE_LAMP,
26  FEATURE_ID_WAVECAL = ::FeatureId::FEATURE_ID_WAVECAL,
27  FEATURE_ID_NONLINEARITYCAL = ::FeatureId::FEATURE_ID_NONLINEARITYCAL,
28  FEATURE_ID_STRAYLIGHTCAL = ::FeatureId::FEATURE_ID_STRAYLIGHTCAL,
29  FEATURE_ID_RAW_BUS_ACCESS = ::FeatureId::FEATURE_ID_RAW_BUS_ACCESS,
30  FEATURE_ID_CONTINUOUS_STROBE = ::FeatureId::FEATURE_ID_CONTINUOUS_STROBE,
31  FEATURE_ID_LIGHT_SOURCE = ::FeatureId::FEATURE_ID_LIGHT_SOURCE,
32  FEATURE_ID_TEMPERATURE = ::FeatureId::FEATURE_ID_TEMPERATURE,
33  FEATURE_ID_OPTICAL_BENCH = ::FeatureId::FEATURE_ID_OPTICAL_BENCH,
34  FEATURE_ID_REVISION = ::FeatureId::FEATURE_ID_REVISION,
35  FEATURE_ID_DATA_BUFFER = ::FeatureId::FEATURE_ID_DATA_BUFFER,
36  FEATURE_ID_PIXEL_BINNING = ::FeatureId::FEATURE_ID_PIXEL_BINNING,
37  FEATURE_ID_GPIO = ::FeatureId::FEATURE_ID_GPIO,
38  FEATURE_ID_SINGLE_STROBE = ::FeatureId::FEATURE_ID_SINGLE_STROBE,
39  FEATURE_ID_QUERY_STATUS = ::FeatureId::FEATURE_ID_QUERY_STATUS,
40  FEATURE_ID_BACK_TO_BACK = ::FeatureId::FEATURE_ID_BACK_TO_BACK,
41  FEATURE_ID_LED_ACTIVITY = ::FeatureId::FEATURE_ID_LED_ACTIVITY,
42  FEATURE_ID_TIME_META = ::FeatureId::FEATURE_ID_TIME_META,
43  FEATURE_ID_DHCP = ::FeatureId::FEATURE_ID_DHCP,
44  FEATURE_ID_IPV4_ADDRESS = ::FeatureId::FEATURE_ID_IPV4_ADDRESS,
45  FEATURE_ID_AUTO_NULLING = ::FeatureId::FEATURE_ID_AUTO_NULLING,
46  FEATURE_ID_DEVICE_INFORMATION = ::FeatureId::FEATURE_ID_DEVICE_INFORMATION,
47  FEATURE_ID_DEVICE_ALIAS = ::FeatureId::FEATURE_ID_DEVICE_ALIAS,
48  FEATURE_ID_USER_STRING = ::FeatureId::FEATURE_ID_IPV4_USER_STRING,
49  FEATURE_ID_SERIAL_PORT = ::FeatureId::FEATURE_ID_SERIAL_PORT,
50  FEATURE_ID_PIXEL = ::FeatureId::FEATURE_ID_PIXEL
51  };
52 
62  if (!odInstance) {
63  odInstance = gcnew OceanDirect();
64  }
65  return odInstance;
66  }
67 
68  virtual ~OceanDirect() {};
69 
77  Advanced^ AdvancedFeatures();
78 
79  // Device discovery methods
92  void openDevice(int deviceID, int% errorCode);
93 
104  void addNetworkDevice(String^ ipAddress, String^ deviceType, int% errorCode);
105 
117  void closeDevice(int deviceID, int% errorCode);
118 
123  void shutDown();
124 
138  array<Devices^>^ findDevices();
139 
151  array<Devices^>^ findUSBDevices();
152 
153 
159  array<Devices^>^ getCurrentDevicesConnected();
160 
171  String^ getDeviceModel(long deviceID, int% errorCode);
172 
183  Double getApiVersion();
184 
193  void getApiVersion(unsigned int% major, unsigned int% minor, unsigned int% point);
194  void getAPIRCNumber(unsigned int% candidate);
206  bool isFeatureEnabled(int deviceID, int% errorCode, NetOceanDirect::OceanDirect::FeatureID featureId);
207 
208  // Spectrometer-specific methods *************************************
209 
229  void applyElectricDarkCorrection(int deviceID, int% errorCode, bool apply);
230 
243  bool getElectricDarkCorrectionUsage(int deviceID, int% errorCode);
244 
245 
262  void applyNonLinearityCorrection(int deviceID, int% errorCode, bool apply);
263 
273  bool getNonLinearityCorrectionUsage(int deviceID, int% errorCode);
274 
304  void setIntegrationTimeMicros(int deviceID, int% errorCode, unsigned long integrationTimeMicros);
305 
323  unsigned long getIntegrationTimeMicros(int deviceID, int% errorCode);
324 
342  unsigned long getIntegrationTimeStepSize(int deviceID, int% errorCode);
343 
355  unsigned int getBoxcarWidth(long deviceID, int% errorCode);
356 
368  unsigned int getScansToAverage(long deviceID, int% errorCode);
369 
380  void setBoxcarWidth(long deviceID, int% errorCode, unsigned int boxcarWidth);
381 
401  void setScansToAverage(long deviceID, int% errorCode, unsigned int scansToAverage);
402 
417  int getTriggerMode(long deviceID, int% errorCode);
418 
430  void setTriggerMode(int deviceID, int% errorCode, int triggerMode);
431 
441  void setDelayMicroseconds(long deviceID, int% errorCode, unsigned long delay_usec);
450  unsigned long getDelayMicroseconds(long deviceID, int% errorCode);
464  unsigned long getDelayIncrementMicroseconds(long deviceID, int% errorCode);
475  unsigned long getDelayMaximumMicroseconds(long deviceID, int% errorCode);
486  unsigned long getDelayMinimumMicroseconds(long deviceID, int% errorCode);
501  array<double>^ getWavelengths(int deviceID, int% errorCode);
518  double getWavelength(int deviceID, int% errorCode, int pixel);
532  array<double>^ getSpectrum(int deviceID, int% errorCode);
533 
548  array<SpectrumWithMetadata^>^ getRawSpectrumWithMetadata(int deviceID, int% errorCode, int count);
549 
550 
562  void setStoredDarkSpectrum(long deviceID, int% errorCode, array<double>^% darkSpectrum);
563 
576  array<double>^ getStoredDarkSpectrum(long deviceID, int% errorCode);
577 
592  array<double>^ getDarkCorrectedSpectrum(long deviceID, int% errorCode, array<double>^% darkSpectrum);
593 
605  array<double>^ darkCorrectSpectrum(long deviceID, int% errorCode, array<double>^% illuminatedSpectrum);
606 
622  array<double>^ getDarkCorrectedSpectrum(long deviceID, int% errorCode);
623 
634  array<double>^ darkCorrectSpectrum(long deviceID, int% errorCode, array<double>^% darkSpectrum, array<double>^% illuminatedSpectrum);
635 
651  array<double>^ getNonlinearityCorrectedSpectrum(long deviceID, int% errorCode, array<double>^% darkSpectrum);
652 
666  array<double>^ nonlinearityCorrectSpectrum(long deviceID, int% errorCode, array<double>^% illuminatedSpectrum);
667 
684  array<double>^ getNonlinearityCorrectedSpectrum(long deviceID, int% errorCode);
685 
697  array<double>^ nonlinearityCorrectSpectrum(long deviceID, int% errorCode, array<double>^% darkSpectrum, array<double>^% illuminatedSpectrum);
698 
699 
713  int getNumberOfPixels(int deviceID, int% errorCode);
732  int getIndexAtWavelength(long deviceID, int% errorCode, double% wavelength, double aproxWavelength);
750  array<int>^ getIndicesAtAnyWavelength(long deviceID, int% errorCode, array<double>^% wavelength, int length);
769  array<int>^ getIndicesAtWavelengthRange(long deviceID, int% errorCode, array<double>^% wavelength, double lo, double hi);
785  int getEDPCount(int deviceID, int% errorCode);
801  array<int>^ getEDPIndices(int deviceID, int% errorCode, int length);
814  double getMaximumIntensity(int deviceID, int% errorCode);
835  unsigned long getMinimumIntegrationTime(int deviceID, int% errorCode);
852  unsigned long getMinimumAveragingIntegrationTimeMicros(long deviceID, int% errorCode);
868  unsigned long getMaximumIntegrationTime(int deviceID, int% errorCode);
880  String^ getSerialNumber(long deviceID, int% errorCode);
881 
893  array<double>^ getWavelengthCoefficients(long deviceID, int% errorCode);
894 
906  void setWavelengthCoefficients(long deviceID, int% errorCode, array<double>^ wavelengthCoeffs);
907 
916  String^ getErrorMessage(int errorCode);
917 
926  int getErrorMessageLength(int errorCode);
927 
933  int findSpectrumLength(int deviceID, int% errorCode);
934 
940  array<int>^ getDeviceIDs();
941 
942  private:
943  int specifiedCnt;
944  int totalIds;
945  Dictionary<int, Devices^>^ devs;
946  int probeDevices();
947  int getDeviceIDs(array<int>^ buffer, int length);
948  void setDeviceUsage(int deviceID, bool val);
949 
950  // Presented as private until use is determined
951  int getFormattedSpectrumLength(int deviceID, int% errorCode);
952  int getFormattedSpectrum(int deviceID, int% errorCode, array<double>^% buffer, int length);
953  int getUnformattedSpectrumLength(int deviceID, int% errorCode);
954  int getUnformattedSpectrum(int deviceID, int% errorCode, array<unsigned char>^% buffer, int length);
955  Devices^ createDevice(int deviceID);
956 
957  generic<typename T> array<T>^ AsManagedArray(void* memory, int count);
958  generic<typename T> void AsUnmanagedArray(array<T>^ arr, void * dest);
959 
960  };
961 }
962 
Definition: ManagedObject.h:8
Definition: NetOceanDirect.h:10
array< double > getStoredDarkSpectrum(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:397
void shutDown()
Definition: NetOceanDirect.cpp:68
void setScansToAverage(long deviceID, int% errorCode, unsigned int scansToAverage)
Definition: NetOceanDirect.cpp:302
int getTriggerMode(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:509
array< double > darkCorrectSpectrum(long deviceID, int% errorCode, array< double >^% illuminatedSpectrum)
Definition: NetOceanDirect.cpp:422
String getErrorMessage(int errorCode)
Definition: NetOceanDirect.cpp:642
Advanced AdvancedFeatures()
Definition: NetOceanDirect.cpp:18
void applyNonLinearityCorrection(int deviceID, int% errorCode, bool apply)
Definition: NetOceanDirect.cpp:242
void openDevice(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:32
array< SpectrumWithMetadata^> getRawSpectrumWithMetadata(int deviceID, int% errorCode, int count)
Definition: NetOceanDirect.cpp:354
array< double > getSpectrum(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:312
array< double > getDarkCorrectedSpectrum(long deviceID, int% errorCode, array< double >^% darkSpectrum)
Definition: NetOceanDirect.cpp:409
array< int > getIndicesAtWavelengthRange(long deviceID, int% errorCode, array< double >^% wavelength, double lo, double hi)
Definition: NetOceanDirect.cpp:572
String getDeviceModel(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:194
void closeDevice(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:62
void setTriggerMode(int deviceID, int% errorCode, int triggerMode)
Definition: NetOceanDirect.cpp:515
Double getApiVersion()
Definition: NetOceanDirect.cpp:177
double getMaximumIntensity(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:620
bool getNonLinearityCorrectionUsage(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:247
unsigned long getMaximumIntegrationTime(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:636
array< double > nonlinearityCorrectSpectrum(long deviceID, int% errorCode, array< double >^% illuminatedSpectrum)
Definition: NetOceanDirect.cpp:472
array< Devices^> getCurrentDevicesConnected()
Definition: NetOceanDirect.cpp:89
unsigned long getIntegrationTimeMicros(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:262
array< int > getEDPIndices(int deviceID, int% errorCode, int length)
Definition: NetOceanDirect.cpp:609
void addNetworkDevice(String^ ipAddress, String^ deviceType, int% errorCode)
Definition: NetOceanDirect.cpp:41
int findSpectrumLength(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:228
unsigned long getMinimumAveragingIntegrationTimeMicros(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:631
array< double > getWavelengthCoefficients(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:212
unsigned long getMinimumIntegrationTime(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:625
array< Devices^> findDevices()
Definition: NetOceanDirect.cpp:101
int getEDPCount(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:604
int getNumberOfPixels(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:549
bool isFeatureEnabled(int deviceID, int% errorCode, NetOceanDirect::OceanDirect::FeatureID featureId)
Definition: NetOceanDirect.cpp:267
unsigned long getIntegrationTimeStepSize(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:277
array< int > getIndicesAtAnyWavelength(long deviceID, int% errorCode, array< double >^% wavelength, int length)
Definition: NetOceanDirect.cpp:587
FeatureID
Definition: NetOceanDirect.h:19
bool getElectricDarkCorrectionUsage(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:257
void setIntegrationTimeMicros(int deviceID, int% errorCode, unsigned long integrationTimeMicros)
Definition: NetOceanDirect.cpp:272
static OceanDirect getInstance()
Definition: NetOceanDirect.h:61
void setStoredDarkSpectrum(long deviceID, int% errorCode, array< double >^% darkSpectrum)
Definition: NetOceanDirect.cpp:391
unsigned long getDelayMaximumMicroseconds(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:537
unsigned long getDelayMinimumMicroseconds(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:543
void setBoxcarWidth(long deviceID, int% errorCode, unsigned int boxcarWidth)
Definition: NetOceanDirect.cpp:297
int getErrorMessageLength(int errorCode)
Definition: NetOceanDirect.cpp:657
unsigned long getDelayMicroseconds(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:525
String getSerialNumber(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:203
void setDelayMicroseconds(long deviceID, int% errorCode, unsigned long delay_usec)
Definition: NetOceanDirect.cpp:520
double getWavelength(int deviceID, int% errorCode, int pixel)
Definition: NetOceanDirect.cpp:307
unsigned long getDelayIncrementMicroseconds(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:531
void setWavelengthCoefficients(long deviceID, int% errorCode, array< double >^ wavelengthCoeffs)
Definition: NetOceanDirect.cpp:221
unsigned int getBoxcarWidth(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:287
void applyElectricDarkCorrection(int deviceID, int% errorCode, bool apply)
Definition: NetOceanDirect.cpp:252
int getIndexAtWavelength(long deviceID, int% errorCode, double% wavelength, double aproxWavelength)
Definition: NetOceanDirect.cpp:564
array< Devices^> findUSBDevices()
Definition: NetOceanDirect.cpp:128
array< double > getWavelengths(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:553
unsigned int getScansToAverage(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:292
array< int > getDeviceIDs()
Definition: NetOceanDirect.cpp:649
array< double > getNonlinearityCorrectedSpectrum(long deviceID, int% errorCode, array< double >^% darkSpectrum)
Definition: NetOceanDirect.cpp:459