13 #using "Interop.OphirLMMeasurementLib.dll" 15 #include <msclr\auto_gcroot.h> 20 class OphirPyroWrapperPrivate
22 public: msclr::auto_gcroot<OphirLMMeasurementLib::CoLMMeasurement^> ophirAPI;
25 OphirPyroWrapper::OphirPyroWrapper()
27 _private =
new OphirPyroWrapperPrivate();
28 _private->ophirAPI =
gcnew OphirLMMeasurementLib::CoLMMeasurement();
31 OphirPyroWrapper::~OphirPyroWrapper()
36 char* OphirPyroWrapper::ScanUSB()
39 System::Object^ managedObject;
40 _private->ophirAPI->ScanUSB(managedObject);
41 array<System::String^>^ managedCapi =
dynamic_cast<array<System::String^>^
>(managedObject);
42 if (managedCapi->Length != 0)
43 return (
char*)Marshal::StringToHGlobalAnsi(managedCapi[0]).ToPointer();
48 int OphirPyroWrapper::OpenDevice(
char* serialNumber)
51 _private->ophirAPI->OpenUSBDevice(
gcnew System::String(serialNumber), deviceHandle);
56 char* OphirPyroWrapper::GetWavelengths(
int deviceHandle)
59 System::Object^ options;
61 _private->ophirAPI->GetWavelengths(deviceHandle, 0, index, options);
62 array<System::String^>^ managedCapi =
dynamic_cast<array<System::String^>^
>(options);
63 if (managedCapi->Length != 0)
64 return (
char*)Marshal::StringToHGlobalAnsi(managedCapi[index]).ToPointer();
69 char* OphirPyroWrapper::GetRanges(
int deviceHandle)
72 System::Object^ options;
74 _private->ophirAPI->GetRanges(deviceHandle, 0, index, options);
75 array<System::String^>^ managedCapi =
dynamic_cast<array<System::String^>^
>(options);
76 if (managedCapi->Length != 0)
77 return (
char*)Marshal::StringToHGlobalAnsi(managedCapi[index]).ToPointer();
82 bool OphirPyroWrapper::StartStream(
int deviceHandle)
84 _private->ophirAPI->StartStream(deviceHandle, 0);
88 bool OphirPyroWrapper::StopStream(
int deviceHandle)
90 _private->ophirAPI->StopStream(deviceHandle, 0);
94 bool OphirPyroWrapper::CloseDevice(
int deviceHandle)
96 _private->ophirAPI->Close(deviceHandle);
100 unsigned int OphirPyroWrapper::GetData(
int deviceHandle, std::vector<double>* data, std::vector<double>* timestamp, std::vector<int>* status)
102 System::Object^ dataArray;
103 System::Object^ timeStampArray;
104 System::Object^ statusArray;
105 array<double>^ managedDataArray;
106 array<double>^ managedTimeStampArray;
107 array<int>^ managedStatusArray;
108 _private->ophirAPI->GetData(deviceHandle, 0, dataArray, timeStampArray, statusArray);
109 managedDataArray = (array<double>^)dataArray;
110 managedTimeStampArray = (array<double>^)timeStampArray;
111 managedStatusArray = (array<int>^)statusArray;
112 if (managedDataArray->Length > 0)
114 data->resize(managedDataArray->Length);
115 timestamp->resize(managedDataArray->Length);
116 status->resize(managedDataArray->Length);
117 for(
int i = 0; i<managedDataArray->Length; i++)
119 (*data)[i] = managedDataArray[i];
120 (*timestamp)[i] = managedTimeStampArray[i];
121 (*status)[i] = managedStatusArray[i];
124 return managedDataArray->Length;
129 timestamp->resize(1);
132 (*timestamp)[0] = -1;