2021-12-02 18:07:29 +08:00
# include "OControl_USB.h"
# include <iostream>
# include <cstring>
OceanOptics_lib : : OceanOptics_lib ( )
{
m_iSpectralmeterHandle = - 100 ;
}
2021-12-06 17:50:39 +08:00
2021-12-02 18:07:29 +08:00
OceanOptics_lib : : ~ OceanOptics_lib ( )
{
}
//ʹ <> <CAB9> ͷ<EFBFBD> ļ<EFBFBD> <C4BC> <EFBFBD> #include "api/SeaBreezeWrapper.h"
2021-12-13 17:18:24 +08:00
int OceanOptics_lib : : Initialize ( bool bIsUSBMode , std : : string ucPortNumber , std : : string strDeviceName )
2021-12-02 18:07:29 +08:00
{
int flag ;
int error ;
//char type[16];
int device_count = 0 ;
int i ;
for ( i = 0 ; i < SEABREEZE_MAX_DEVICES ; i + + )
{
2021-12-06 17:50:39 +08:00
// printf("\nOpening spectrometer %d.\n", i);
2021-12-02 18:07:29 +08:00
flag = seabreeze_open_spectrometer ( i , & error ) ;
2021-12-06 17:50:39 +08:00
// printf("Open spectrometer result is (%d) [%s]\n", flag, get_error_string(error));
2021-12-02 18:07:29 +08:00
if ( 0 = = flag )
{
device_count + + ;
}
2021-12-06 17:50:39 +08:00
else
{
continue ;
}
2021-12-02 18:07:29 +08:00
string sn = GetSerialNumber ( i ) ;
if ( strcmp ( sn . c_str ( ) , strDeviceName . c_str ( ) ) = = 0 )
{
m_iSpectralmeterHandle = i ;
2021-12-06 17:50:39 +08:00
// printf("\nfind!!!!!!!!!!!!\n");
2021-12-02 18:07:29 +08:00
break ;
}
else
{
2021-12-06 17:50:39 +08:00
// printf("\nClosing spectrometer %d.\n", i);
2021-12-02 18:07:29 +08:00
flag = seabreeze_close_spectrometer ( i , & error ) ;
2021-12-06 17:50:39 +08:00
// printf("Close spectrometer result is (%d) [%s]\n", flag, get_error_string(error));
2021-12-02 18:07:29 +08:00
}
}
if ( m_iSpectralmeterHandle = = - 100 )
{
2021-12-06 17:50:39 +08:00
// printf("\nNo!!!!!!!!!!!!\n");
2021-12-02 18:07:29 +08:00
return 1 ;
}
2021-12-06 17:50:39 +08:00
seabreeze_set_trigger_mode ( m_iSpectralmeterHandle , & error , 0 ) ;
2021-12-02 18:07:29 +08:00
2021-12-06 17:50:39 +08:00
long test = seabreeze_get_buffer_capacity_minimum ( m_iSpectralmeterHandle , & error ) ;
seabreeze_set_buffer_capacity ( m_iSpectralmeterHandle , & error , test ) ;
//seabreeze_set_trigger_mode(m_iSpectralmeterHandle, &error, 0);
//seabreeze_set_trigger_mode(m_iSpectralmeterHandle, &error, 0);
// printf("seabreeze_set_trigger_mode: Result is [%s]\n", get_error_string(error));
2021-12-02 18:07:29 +08:00
2021-12-06 17:50:39 +08:00
//<2F> <> <EFBFBD> ó<EFBFBD> ʼ <EFBFBD> <CABC> <EFBFBD> <EFBFBD> ʱ<EFBFBD> <CAB1>
long minimum_time ;
2021-12-02 18:07:29 +08:00
minimum_time = seabreeze_get_min_integration_time_microsec ( m_iSpectralmeterHandle , & error ) ;
//printf("...Minimum is %ld microseconds, result is [%s]\n", minimum_time, get_error_string(error));
2021-12-06 17:50:39 +08:00
bool ret = isSuccess ( ( char * ) get_error_string ( error ) ) ;
if ( ! ret )
{
// printf("\n-------------------û<> ɹ<EFBFBD> <C9B9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> \n");
return 1 ;
}
2021-12-02 18:07:29 +08:00
if ( minimum_time < 0 ) {
/* If there was an error, reset to a time that is supported widely. */
minimum_time = 15000 ;
return 1 ;
}
2021-12-06 17:50:39 +08:00
SetExposureTime ( minimum_time / 1000 ) ;
2021-12-02 18:07:29 +08:00
return 0 ;
}
//ʹ <> <CAB9> ͷ<EFBFBD> ļ<EFBFBD> <C4BC> <EFBFBD> #include "api/SeaBreezeWrapper.h"
int OceanOptics_lib : : Initialize ( )
{
int flag ;
int error ;
//char type[16];
int device_count = 0 ;
int i ;
for ( i = 0 ; i < SEABREEZE_MAX_DEVICES ; i + + )
{
2021-12-06 17:50:39 +08:00
printf ( " \n Opening spectrometer %d. \n " , i ) ;
2021-12-02 18:07:29 +08:00
flag = seabreeze_open_spectrometer ( i , & error ) ;
//printf("Open spectrometer result is (%d) [%s]\n", flag, get_error_string(error));
if ( 0 = = flag )
{
m_iSpectralmeterHandle = i ;
break ;
}
2021-12-06 17:50:39 +08:00
else
{
continue ;
}
2021-12-02 18:07:29 +08:00
}
if ( m_iSpectralmeterHandle = = - 100 )
{
2021-12-06 17:50:39 +08:00
printf ( " \n No!!!!!!!!!!!! \n " ) ;
2021-12-02 18:07:29 +08:00
return 1 ;
}
2021-12-06 17:50:39 +08:00
seabreeze_set_trigger_mode ( m_iSpectralmeterHandle , & error , 0 ) ;
seabreeze_set_trigger_mode ( m_iSpectralmeterHandle , & error , 0 ) ;
seabreeze_set_trigger_mode ( m_iSpectralmeterHandle , & error , 0 ) ;
// printf("seabreeze_set_trigger_mode: Result is [%s]\n", get_error_string(error));
//<2F> <> <EFBFBD> ó<EFBFBD> ʼ <EFBFBD> <CABC> <EFBFBD> <EFBFBD> ʱ<EFBFBD> <CAB1>
2021-12-02 18:07:29 +08:00
long minimum_time ;
minimum_time = seabreeze_get_min_integration_time_microsec ( m_iSpectralmeterHandle , & error ) ;
//printf("...Minimum is %ld microseconds, result is [%s]\n", minimum_time, get_error_string(error));
2021-12-06 17:50:39 +08:00
bool ret = isSuccess ( ( char * ) get_error_string ( error ) ) ;
if ( ! ret )
{
// printf("\n-------------------û<> ɹ<EFBFBD> <C9B9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> \n");
return 1 ;
}
2021-12-02 18:07:29 +08:00
if ( minimum_time < 0 ) {
/* If there was an error, reset to a time that is supported widely. */
minimum_time = 15000 ;
2021-12-06 17:50:39 +08:00
return 1 ;
2021-12-02 18:07:29 +08:00
}
2021-12-06 17:50:39 +08:00
SetExposureTime ( minimum_time / 1000 ) ;
2021-12-02 18:07:29 +08:00
return 0 ;
}
//ʹ <> <CAB9> ͷ<EFBFBD> ļ<EFBFBD> <C4BC> <EFBFBD> #include "api/seabreezeapi/SeaBreezeAPI.h"
//int OceanOptics_lib::Initialize(bool bIsUSBMode,ZZ_U8 ucPortNumber,std::string strDeviceName)
//{
// int number_of_devices;
// long *device_ids;
// int i;
// int flag;
// int error = 0;
// char nameBuffer[80];
// char *serialNumber;
//
//
//// /* Give the driver a chance to initialize itself */
//// sbapi_initialize();
//
// printf("Probing for devices...\n"); fflush(stdout);
// sbapi_probe_devices();
//
// printf("Getting device count...\n"); fflush(stdout);
// number_of_devices = sbapi_get_number_of_device_ids();
// std::cout<<"Device count is "<< number_of_devices <<std::endl;
// if(0 == number_of_devices) {
// return 0;
// }
//
// printf("Getting device IDs...\n");
// device_ids = (long *)calloc(number_of_devices, sizeof(long));
// number_of_devices = sbapi_get_device_ids(device_ids, number_of_devices);
// printf("Got %d device ID%s.\n", number_of_devices, number_of_devices == 1 ? "" : "s"); fflush(stdout);
//
//
// for(i = 0; i < number_of_devices; i++)
// {
// printf("%d: Device 0x%02lX:\n", i, device_ids[i]);
//// printf("\tGetting device type...\n");
// flag = sbapi_get_device_type(device_ids[i], &error, nameBuffer, 79);
//// printf("\t\tResult is (%d) [%s]\n", flag, sbapi_get_error_string(error));
// if(flag > 0) {
// printf("\tDevice type: [%s]\n", nameBuffer);
// }
//
// serialNumber = GetSerialNumber(device_ids[i]);
// serialNumber = GetSerialNumber(device_ids[i]);
//
// printf("\tSerial number tc: [%s]\n", serialNumber);
//
//// /* Open the device */
//// printf("\tAttempting to open:\n");
//// flag = sbapi_open_device(device_ids[i], &error);
//// printf("\t\tResult is (%d) [%s]\n", flag, sbapi_get_error_string(error));
////
//// // jump to the next iteration if there was a problem
//// if(flag != 0) {
//// continue;
//// }
////
//// // log deviations
//// unsupportedFeatureCount=0;
//// testFailureCount=0;
////
//// /* Test the device */
//// for(test_index = 0; test_index < __test_function_count; test_index++) {
//// /* Invoke each of the test functions against this device */
//// __test_functions[test_index](device_ids[i], &unsupportedFeatureCount, &testFailureCount);
//// }
////
//// /* Close the device */
//// printf("\tAttempting to close:\n");
//// sbapi_close_device(device_ids[i], &error);
//// printf("\t\tResult is (%d) [%s]\n", flag, sbapi_get_error_string(error));
//// printf("%d: Device 0x%02lX: \n\tNumber of unsupported features = %d\n\tNumber of test failures = %d\n", i, device_ids[i], unsupportedFeatureCount, testFailureCount);
// }
//
// flag = sbapi_get_device_type(device_ids[i], &error, nameBuffer, 79);
//
// return 1;
//}
//<2F> ر<EFBFBD> <D8B1> 豸
void OceanOptics_lib : : Close ( )
{
int flag ;
int error ;
flag = seabreeze_close_spectrometer ( m_iSpectralmeterHandle , & error ) ;
2021-12-06 17:50:39 +08:00
// printf("Close spectrometer result is (%d) [%s]\n", flag, get_error_string(error));
2021-12-02 18:07:29 +08:00
}
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ݲɼ<DDB2>
int OceanOptics_lib : : SingleShot ( DataFrame & dfData )
{
if ( m_iSpectralmeterHandle = = - 100 )
{
2021-12-06 17:50:39 +08:00
printf ( " \n No!!!!!!!!!!!! \n " ) ;
2021-12-02 18:07:29 +08:00
return 1 ;
}
int error ;
int flag ;
int spec_length ;
double * spectrum = 0 ;
2021-12-06 17:50:39 +08:00
bool ret ;
2021-12-02 18:07:29 +08:00
2021-12-06 17:50:39 +08:00
// printf("\n\nGetting formatted spectrum length.\n");
2021-12-02 18:07:29 +08:00
spec_length = seabreeze_get_formatted_spectrum_length ( m_iSpectralmeterHandle , & error ) ;
//printf("Get formatted spectrum_length result is (%d) [%s]\n", spec_length, get_error_string(error));
2021-12-06 17:50:39 +08:00
ret = isSuccess ( ( char * ) get_error_string ( error ) ) ;
if ( ! ret )
{
return 1 ;
}
2021-12-02 18:07:29 +08:00
if ( spec_length > 0 )
{
spectrum = ( double * ) calloc ( ( size_t ) spec_length , sizeof ( double ) ) ;
2021-12-06 17:50:39 +08:00
seabreeze_clear_buffer ( m_iSpectralmeterHandle , & error ) ;
printf ( " \n Getting a formatted spectrum. \n " ) ;
2021-12-02 18:07:29 +08:00
flag = seabreeze_get_formatted_spectrum ( m_iSpectralmeterHandle , & error , spectrum , spec_length ) ;
2021-12-06 17:50:39 +08:00
printf ( " \n Getting a formatted spectrum------------------------------. \n " ) ;
// printf("Get formatted spectrum result is (%d) [%s]\n", flag, get_error_string(error));
// printf("\tPixel value 20 is %1.2f\n", spectrum[20]);
ret = isSuccess ( ( char * ) get_error_string ( error ) ) ;
if ( ! ret )
{
return 1 ;
}
2021-12-02 18:07:29 +08:00
for ( int tmp = 0 ; tmp < spec_length ; tmp + + )
{
2021-12-08 17:43:27 +08:00
dfData . lData [ tmp ] = spectrum [ tmp ] ;
2021-12-02 18:07:29 +08:00
}
int exposureTimeInMS ;
GetExposureTime ( exposureTimeInMS ) ;
dfData . usExposureTimeInMS = exposureTimeInMS ;
float temperature ;
GetDeviceTemperature ( temperature ) ;
dfData . fTemperature = temperature ;
free ( spectrum ) ;
}
return 0 ;
}
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ع<EFBFBD> ʱ<EFBFBD> <CAB1>
int OceanOptics_lib : : SetExposureTime ( int iExposureTimeInMS )
{
if ( m_iSpectralmeterHandle = = - 100 )
{
2021-12-06 17:50:39 +08:00
printf ( " \n No!!!!!!!!!!!! \n " ) ;
2021-12-02 18:07:29 +08:00
return 1 ;
}
int error ;
2021-12-06 17:50:39 +08:00
seabreeze_set_integration_time_microsec ( m_iSpectralmeterHandle , & error , iExposureTimeInMS * 1000 ) ;
printf ( " Set integration time result is [%s] \n " , get_error_string ( error ) ) ;
bool ret = isSuccess ( ( char * ) get_error_string ( error ) ) ;
if ( ! ret )
{
return 1 ;
}
2021-12-02 18:07:29 +08:00
m_iExposureTime = iExposureTimeInMS ;
2021-12-06 17:50:39 +08:00
// //----------------------------------------------------------------------------------------------------------------
// int error;
// long *spectrometer_ids;
// int number_of_spectrometers;
//
// number_of_spectrometers = sbapi_get_number_of_spectrometer_features(m_iSpectralmeterHandle, &error);
// printf("\t\t\tResult is %d [%s]\n", number_of_spectrometers, sbapi_get_error_string(error));
// spectrometer_ids = (long *)calloc(number_of_spectrometers, sizeof(long));
// number_of_spectrometers = sbapi_get_spectrometer_features(m_iSpectralmeterHandle, &error, spectrometer_ids, number_of_spectrometers);
// printf("\t\t\tResult is %d [%s]\n", number_of_spectrometers, sbapi_get_error_string(error));
//
// sbapi_spectrometer_set_integration_time_micros(m_iSpectralmeterHandle, spectrometer_ids[0], &error, iExposureTimeInMS*1000);
// printf("\t\t\t\tResult is [%s]\n", sbapi_get_error_string(error));
2021-12-02 18:07:29 +08:00
return 0 ;
}
//<2F> <> ȡ<EFBFBD> ع<EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
int OceanOptics_lib : : GetExposureTime ( int & iExposureTimeInMS )
{
if ( m_iSpectralmeterHandle = = - 100 )
{
2021-12-06 17:50:39 +08:00
printf ( " \n No!!!!!!!!!!!! \n " ) ;
2021-12-02 18:07:29 +08:00
return 1 ;
}
iExposureTimeInMS = m_iExposureTime ;
return 0 ;
}
//<2F> <> <EFBFBD> <EFBFBD> Ŀ<EFBFBD> <C4BF> <EFBFBD> ¶<EFBFBD>
int OceanOptics_lib : : SetDeviceTemperature ( float fTemperature )
{
2021-12-06 17:50:39 +08:00
bool ret ;
2021-12-02 18:07:29 +08:00
if ( m_iSpectralmeterHandle = = - 100 )
{
2021-12-06 17:50:39 +08:00
printf ( " \n No!!!!!!!!!!!! \n " ) ;
2021-12-02 18:07:29 +08:00
return 1 ;
}
int error ;
2021-12-06 17:50:39 +08:00
// printf("\nSetting TEC temperature to -5C\n");
2021-12-02 18:07:29 +08:00
seabreeze_set_tec_temperature ( m_iSpectralmeterHandle , & error , fTemperature ) ;
2021-12-06 17:50:39 +08:00
// printf("Set tec temperature result is [%s]\n", get_error_string(error));
ret = isSuccess ( ( char * ) get_error_string ( error ) ) ;
if ( ! ret )
{
return 1 ;
}
2021-12-02 18:07:29 +08:00
2021-12-06 17:50:39 +08:00
// printf("\nSetting TEC enable to true\n");
2021-12-02 18:07:29 +08:00
seabreeze_set_tec_enable ( m_iSpectralmeterHandle , & error , 1 ) ;
2021-12-06 17:50:39 +08:00
// printf("Set tec enable result is [%s]\n", get_error_string(error));
ret = isSuccess ( ( char * ) get_error_string ( error ) ) ;
if ( ! ret )
{
return 1 ;
}
2021-12-02 18:07:29 +08:00
return 0 ;
}
//<2F> <> ȡ<EFBFBD> ¶<EFBFBD> <C2B6> <EFBFBD> <EFBFBD> <EFBFBD>
int OceanOptics_lib : : GetDeviceTemperature ( float & fTemperature )
{
2022-01-04 17:32:19 +08:00
fTemperature = 0 ;
2021-12-02 18:07:29 +08:00
if ( m_iSpectralmeterHandle = = - 100 )
{
2021-12-06 17:50:39 +08:00
printf ( " \n No!!!!!!!!!!!! \n " ) ;
2021-12-02 18:07:29 +08:00
return 1 ;
}
double temp ;
int error ;
// usleep(1000000);
2021-12-06 17:50:39 +08:00
// printf("\nGetting TEC temperature\n");
2021-12-02 18:07:29 +08:00
temp = seabreeze_read_tec_temperature ( m_iSpectralmeterHandle , & error ) ;
2021-12-06 17:50:39 +08:00
// printf("Read tec temperature result is %1.2f C [%s]\n", temp, get_error_string(error));
bool ret = isSuccess ( ( char * ) get_error_string ( error ) ) ;
if ( ! ret )
{
return 1 ;
}
2021-12-02 18:07:29 +08:00
fTemperature = temp ;
return 0 ;
}
//<2F> <> ȡ<EFBFBD> 豸<EFBFBD> <E8B1B8> Ϣ
int OceanOptics_lib : : GetDeviceInfo ( DeviceInfo & Info )
{
if ( m_iSpectralmeterHandle = = - 100 )
{
2021-12-06 17:50:39 +08:00
printf ( " \n No!!!!!!!!!!!! \n " ) ;
2021-12-02 18:07:29 +08:00
return 1 ;
}
string deviceType = GetDeviceType ( m_iSpectralmeterHandle ) ;
string SN = GetSerialNumber ( m_iSpectralmeterHandle ) ;
Info . strPN = deviceType ;
Info . strSN = SN ;
return 0 ;
}
//<2F> <> ȡ<EFBFBD> 豸<EFBFBD> <E8B1B8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
int OceanOptics_lib : : GetDeviceAttribute ( DeviceAttribute & Attr )
{
if ( m_iSpectralmeterHandle = = - 100 )
{
2021-12-06 17:50:39 +08:00
printf ( " \n No!!!!!!!!!!!! \n " ) ;
2021-12-02 18:07:29 +08:00
return 1 ;
}
int error ;
int flag ;
int spec_length ;
double * wls = 0 ;
2021-12-06 17:50:39 +08:00
// printf("\n\nGetting formatted spectrum length.\n");
2021-12-02 18:07:29 +08:00
spec_length = seabreeze_get_formatted_spectrum_length ( m_iSpectralmeterHandle , & error ) ;
2021-12-06 17:50:39 +08:00
// printf("Get formatted spectrum length result is (%d) [%s]\n", spec_length, get_error_string(error));
bool ret = isSuccess ( ( char * ) get_error_string ( error ) ) ;
if ( ! ret )
{
return 1 ;
}
2021-12-02 18:07:29 +08:00
Attr . iPixels = spec_length ;
2021-12-06 17:50:39 +08:00
long minimum_time ;
minimum_time = seabreeze_get_min_integration_time_microsec ( m_iSpectralmeterHandle , & error ) ;
2022-03-21 14:11:34 +08:00
Attr . iMinIntegrationTimeInMS = ( int ) ( ( double ) minimum_time / ( double ) 1000 ) ;
2021-12-02 18:07:29 +08:00
Attr . iMaxIntegrationTimeInMS = 60000 ;
if ( spec_length > 0 ) {
wls = ( double * ) calloc ( ( size_t ) spec_length , sizeof ( double ) ) ;
2021-12-06 17:50:39 +08:00
// printf("\nGetting wavelengths.\n");
2021-12-02 18:07:29 +08:00
flag = seabreeze_get_wavelengths ( m_iSpectralmeterHandle , & error , wls , spec_length ) ;
2021-12-06 17:50:39 +08:00
// printf("Get wavelengths result is (%d) [%s]\n", flag, get_error_string(error));
// printf("\tPixel 20 is wavelength %1.2f nm\n", wls[20]);
bool ret = isSuccess ( ( char * ) get_error_string ( error ) ) ;
if ( ! ret )
{
return 1 ;
}
2021-12-02 18:07:29 +08:00
for ( int tmp = 0 ; tmp < spec_length ; tmp + + )
{
Attr . fWaveLengthInNM [ tmp ] = wls [ tmp ] ;
}
free ( wls ) ;
}
return 0 ;
}
bool OceanOptics_lib : : isSuccess ( char * resultStr )
{
if ( strstr ( resultStr , " Success " ) = = NULL ) //<2F> <> a<EFBFBD> в<EFBFBD> <D0B2> <EFBFBD> b<EFBFBD> <62> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڣ<EFBFBD>
{
2021-12-06 17:50:39 +08:00
//cout << "not found\n";//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
return false ;
2021-12-02 18:07:29 +08:00
}
else //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڡ<EFBFBD>
{
2021-12-06 17:50:39 +08:00
//cout <<"found\n"; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
return true ;
2021-12-02 18:07:29 +08:00
}
}
2021-12-06 17:50:39 +08:00
2021-12-02 18:07:29 +08:00
const char * OceanOptics_lib : : get_error_string ( int error )
{
static char buffer [ 32 ] ;
seabreeze_get_error_string ( error , buffer , sizeof ( buffer ) ) ;
return buffer ;
}
string OceanOptics_lib : : GetDeviceType ( int index )
{
char type [ 16 ] ;
int error ;
seabreeze_get_model ( index , & error , type , sizeof ( type ) ) ;
2021-12-06 17:50:39 +08:00
// printf("...Result is (%s) [%s]\n", type, get_error_string(error));
bool ret = isSuccess ( ( char * ) get_error_string ( error ) ) ;
if ( ! ret )
{
return " " ;
}
2021-12-02 18:07:29 +08:00
type [ 15 ] = ' \0 ' ;
string deviceType = type ;
return deviceType ;
}
string OceanOptics_lib : : GetSerialNumber ( int index )
{
static char serial_number [ 32 ] ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> static<69> <63> <EFBFBD> ˱<EFBFBD> <CBB1> <EFBFBD> <EFBFBD> ᶨ<EFBFBD> <E1B6A8> <EFBFBD> <EFBFBD> stack<63> <6B> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> غ<D8BA> <F3A3ACBE> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
int flag ;
int error ;
2021-12-06 17:50:39 +08:00
// printf("\n\nGetting serial number.\n");
2021-12-02 18:07:29 +08:00
flag = seabreeze_get_serial_number ( index , & error , serial_number , 32 ) ;
2021-12-06 17:50:39 +08:00
// printf("Get serial number result is (%d) [%s]\n", flag, get_error_string(error));
bool ret = isSuccess ( ( char * ) get_error_string ( error ) ) ;
if ( ! ret )
{
return " " ;
}
2021-12-02 18:07:29 +08:00
serial_number [ 31 ] = ' \0 ' ;
if ( flag > 0 ) {
2021-12-06 17:50:39 +08:00
printf ( " \t Serial number: [%s] \n " , serial_number ) ;
2021-12-02 18:07:29 +08:00
}
string sn = serial_number ;
return sn ;
}