NetOceanDirect  2.4.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  FEATURE_ID_SPECTRUM_ACQUISITION_CONTROL = ::FeatureId::FEATURE_ID_SPECTRUM_ACQUISITION_CONTROL,
52  FEATURE_ID_NETWORK_CONFIGURATION = ::FeatureId::FEATURE_ID_NETWORK_CONFIGURATION,
53  FEATURE_ID_ETHERNET = ::FeatureId::FEATURE_ID_ETHERNET,
54  FEATURE_ID_SHUTTER = ::FeatureId::FEATURE_ID_SHUTTER
55  };
56 
63  if (!odInstance) {
64  odInstance = gcnew OceanDirect();
65  }
66  return odInstance;
67  }
68 
69  virtual ~OceanDirect() {};
70 
78  Advanced^ AdvancedFeatures();
79 
80  // Device discovery methods
98  void openDevice(int deviceID, int% errorCode);
99 
113  int addNetworkDevice(String^ ipAddress, String^ deviceType, int% errorCode);
114 
128  void closeDevice(int deviceID, int% errorCode);
129 
134  void shutDown();
135 
151  array<Devices^>^ findDevices();
152 
166  array<Devices^>^ findUSBDevices();
167 
172  array<Devices^>^ getCurrentDevicesConnected();
173 
184  String^ getDeviceModel(long deviceID, int% errorCode);
185 
196  Double getApiVersion();
197 
206  void getApiVersion(unsigned int% major, unsigned int% minor, unsigned int% point);
207  void getAPIRCNumber(unsigned int% candidate);
219  bool isFeatureEnabled(int deviceID, int% errorCode, NetOceanDirect::OceanDirect::FeatureID featureId);
220 
221  // Spectrometer-specific methods *************************************
222 
241  void applyElectricDarkCorrection(int deviceID, int% errorCode, bool apply);
242 
254  bool getElectricDarkCorrectionUsage(int deviceID, int% errorCode);
255 
256 
273  void applyNonLinearityCorrection(int deviceID, int% errorCode, bool apply);
274 
284  bool getNonLinearityCorrectionUsage(int deviceID, int% errorCode);
285 
315  void setIntegrationTimeMicros(int deviceID, int% errorCode, unsigned long integrationTimeMicros);
316 
334  unsigned long getIntegrationTimeMicros(int deviceID, int% errorCode);
335 
353  unsigned long getIntegrationTimeStepSize(int deviceID, int% errorCode);
354 
366  unsigned int getBoxcarWidth(long deviceID, int% errorCode);
367 
379  unsigned int getScansToAverage(long deviceID, int% errorCode);
380 
391  void setBoxcarWidth(long deviceID, int% errorCode, unsigned int boxcarWidth);
392 
412  void setScansToAverage(long deviceID, int% errorCode, unsigned int scansToAverage);
413 
427  int getTriggerMode(long deviceID, int% errorCode);
428 
440  void setTriggerMode(int deviceID, int% errorCode, int triggerMode);
441 
451  void setDelayMicroseconds(long deviceID, int% errorCode, unsigned long delay_usec);
452 
461  unsigned long getDelayMicroseconds(long deviceID, int% errorCode);
462 
476  unsigned long getDelayIncrementMicroseconds(long deviceID, int% errorCode);
477 
488  unsigned long getDelayMaximumMicroseconds(long deviceID, int% errorCode);
489 
500  unsigned long getDelayMinimumMicroseconds(long deviceID, int% errorCode);
501 
516  array<double>^ getWavelengths(int deviceID, int% errorCode);
517 
534  double getWavelength(int deviceID, int% errorCode, int pixel);
535 
549  array<double>^ getSpectrum(int deviceID, int% errorCode);
550 
565  array<SpectrumWithMetadata^>^ getRawSpectrumWithMetadata(int deviceID, int% errorCode, int count);
566 
577  void setStoredDarkSpectrum(long deviceID, int% errorCode, array<double>^% darkSpectrum);
578 
590  array<double>^ getStoredDarkSpectrum(long deviceID, int% errorCode);
591 
605  array<double>^ getDarkCorrectedSpectrum(long deviceID, int% errorCode, array<double>^% darkSpectrum);
606 
617  array<double>^ darkCorrectSpectrum(long deviceID, int% errorCode, array<double>^% illuminatedSpectrum);
618 
633  array<double>^ getDarkCorrectedSpectrum(long deviceID, int% errorCode);
634 
645  array<double>^ darkCorrectSpectrum(long deviceID, int% errorCode, array<double>^% darkSpectrum, array<double>^% illuminatedSpectrum);
646 
661  array<double>^ getNonlinearityCorrectedSpectrum(long deviceID, int% errorCode, array<double>^% darkSpectrum);
662 
679  array<double>^ nonlinearityCorrectSpectrum(long deviceID, int% errorCode, array<double>^% illuminatedSpectrum);
680 
696  array<double>^ getNonlinearityCorrectedSpectrum(long deviceID, int% errorCode);
697 
713  array<double>^ nonlinearityCorrectSpectrum(long deviceID, int% errorCode, array<double>^% darkSpectrum, array<double>^% illuminatedSpectrum);
714 
728  void boxcarCorrectSpectrum(long deviceID, int% errorCode, array<double>^% illuminatedSpectrum, unsigned int boxcarWidth);
729 
730 
744  int getNumberOfPixels(int deviceID, int% errorCode);
745 
764  int getIndexAtWavelength(long deviceID, int% errorCode, double% wavelength, double aproxWavelength);
765 
783  array<int>^ getIndicesAtAnyWavelength(long deviceID, int% errorCode, array<double>^% wavelength, int length);
784 
803  array<int>^ getIndicesAtWavelengthRange(long deviceID, int% errorCode, array<double>^% wavelength, double lo, double hi);
804 
819  int getEDPCount(int deviceID, int% errorCode);
820 
836  array<int>^ getEDPIndices(int deviceID, int% errorCode, int length);
837 
850  double getMaximumIntensity(int deviceID, int% errorCode);
851 
872  unsigned long getMinimumIntegrationTime(int deviceID, int% errorCode);
873 
889  unsigned long getMinimumAveragingIntegrationTimeMicros(long deviceID, int% errorCode);
890 
906  unsigned long getMaximumIntegrationTime(int deviceID, int% errorCode);
907 
919  String^ getSerialNumber(long deviceID, int% errorCode);
920 
932  array<double>^ getWavelengthCoefficients(long deviceID, int% errorCode);
933 
942  String^ getErrorMessage(int errorCode);
943 
952  int getErrorMessageLength(int errorCode);
953 
959  int findSpectrumLength(int deviceID, int% errorCode);
960 
966  array<int>^ getDeviceIDs();
967 
968  private:
969  int specifiedCnt;
970  int totalIds;
971  Dictionary<int, Devices^>^ devs;
972  int probeDevices();
973  int getDeviceIDs(array<int>^ buffer, int length);
974  void setDeviceUsage(int deviceID, bool val);
975 
976  // Presented as private until use is determined
977  int getFormattedSpectrumLength(int deviceID, int% errorCode);
978  int getFormattedSpectrum(int deviceID, int% errorCode, array<double>^% buffer, int length);
979  Devices^ createDevice(int deviceID);
980 
981  generic<typename T> array<T>^ AsManagedArray(void* memory, int count);
982  generic<typename T> void AsUnmanagedArray(array<T>^ arr, void * dest);
983 
984  };
985 }
986 
Definition: ManagedObject.h:8
Definition: NetOceanDirect.h:10
array< double > getStoredDarkSpectrum(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:387
void shutDown()
Definition: NetOceanDirect.cpp:70
void setScansToAverage(long deviceID, int% errorCode, unsigned int scansToAverage)
Definition: NetOceanDirect.cpp:292
int getTriggerMode(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:506
array< double > darkCorrectSpectrum(long deviceID, int% errorCode, array< double >^% illuminatedSpectrum)
Definition: NetOceanDirect.cpp:412
String getErrorMessage(int errorCode)
Definition: NetOceanDirect.cpp:639
Advanced AdvancedFeatures()
Definition: NetOceanDirect.cpp:18
void applyNonLinearityCorrection(int deviceID, int% errorCode, bool apply)
Definition: NetOceanDirect.cpp:237
void openDevice(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:32
array< SpectrumWithMetadata^> getRawSpectrumWithMetadata(int deviceID, int% errorCode, int count)
Definition: NetOceanDirect.cpp:344
array< double > getSpectrum(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:302
array< double > getDarkCorrectedSpectrum(long deviceID, int% errorCode, array< double >^% darkSpectrum)
Definition: NetOceanDirect.cpp:399
array< int > getIndicesAtWavelengthRange(long deviceID, int% errorCode, array< double >^% wavelength, double lo, double hi)
Definition: NetOceanDirect.cpp:569
String getDeviceModel(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:196
void closeDevice(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:64
void setTriggerMode(int deviceID, int% errorCode, int triggerMode)
Definition: NetOceanDirect.cpp:512
Double getApiVersion()
Definition: NetOceanDirect.cpp:179
double getMaximumIntensity(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:617
bool getNonLinearityCorrectionUsage(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:242
unsigned long getMaximumIntegrationTime(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:633
array< double > nonlinearityCorrectSpectrum(long deviceID, int% errorCode, array< double >^% illuminatedSpectrum)
Definition: NetOceanDirect.cpp:462
array< Devices^> getCurrentDevicesConnected()
Definition: NetOceanDirect.cpp:91
unsigned long getIntegrationTimeMicros(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:257
array< int > getEDPIndices(int deviceID, int% errorCode, int length)
Definition: NetOceanDirect.cpp:606
int findSpectrumLength(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:223
unsigned long getMinimumAveragingIntegrationTimeMicros(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:628
array< double > getWavelengthCoefficients(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:214
unsigned long getMinimumIntegrationTime(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:622
array< Devices^> findDevices()
Definition: NetOceanDirect.cpp:103
int getEDPCount(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:601
int getNumberOfPixels(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:546
bool isFeatureEnabled(int deviceID, int% errorCode, NetOceanDirect::OceanDirect::FeatureID featureId)
Definition: NetOceanDirect.cpp:262
unsigned long getIntegrationTimeStepSize(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:272
array< int > getIndicesAtAnyWavelength(long deviceID, int% errorCode, array< double >^% wavelength, int length)
Definition: NetOceanDirect.cpp:584
FeatureID
Definition: NetOceanDirect.h:19
bool getElectricDarkCorrectionUsage(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:252
void setIntegrationTimeMicros(int deviceID, int% errorCode, unsigned long integrationTimeMicros)
Definition: NetOceanDirect.cpp:267
static OceanDirect getInstance()
Definition: NetOceanDirect.h:62
void setStoredDarkSpectrum(long deviceID, int% errorCode, array< double >^% darkSpectrum)
Definition: NetOceanDirect.cpp:381
int addNetworkDevice(String^ ipAddress, String^ deviceType, int% errorCode)
Definition: NetOceanDirect.cpp:41
unsigned long getDelayMaximumMicroseconds(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:534
unsigned long getDelayMinimumMicroseconds(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:540
void setBoxcarWidth(long deviceID, int% errorCode, unsigned int boxcarWidth)
Definition: NetOceanDirect.cpp:287
int getErrorMessageLength(int errorCode)
Definition: NetOceanDirect.cpp:654
unsigned long getDelayMicroseconds(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:522
String getSerialNumber(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:205
void setDelayMicroseconds(long deviceID, int% errorCode, unsigned long delay_usec)
Definition: NetOceanDirect.cpp:517
double getWavelength(int deviceID, int% errorCode, int pixel)
Definition: NetOceanDirect.cpp:297
unsigned long getDelayIncrementMicroseconds(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:528
unsigned int getBoxcarWidth(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:277
void applyElectricDarkCorrection(int deviceID, int% errorCode, bool apply)
Definition: NetOceanDirect.cpp:247
int getIndexAtWavelength(long deviceID, int% errorCode, double% wavelength, double aproxWavelength)
Definition: NetOceanDirect.cpp:561
void boxcarCorrectSpectrum(long deviceID, int% errorCode, array< double >^% illuminatedSpectrum, unsigned int boxcarWidth)
Definition: NetOceanDirect.cpp:499
array< Devices^> findUSBDevices()
Definition: NetOceanDirect.cpp:130
array< double > getWavelengths(int deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:550
unsigned int getScansToAverage(long deviceID, int% errorCode)
Definition: NetOceanDirect.cpp:282
array< int > getDeviceIDs()
Definition: NetOceanDirect.cpp:646
array< double > getNonlinearityCorrectedSpectrum(long deviceID, int% errorCode, array< double >^% darkSpectrum)
Definition: NetOceanDirect.cpp:449