#include "library.h" #include #include //void hello() { // std::cout << "Hello, World!" << std::endl; //} //使用头文件:#include "api/SeaBreezeWrapper.h" int OceanOptics_lib::Initialize(bool bIsUSBMode,ZZ_U8 ucPortNumber,std::string strDeviceName) { int flag; int error; char type[16]; int device_count = 0; int i; for(i = 0; i < SEABREEZE_MAX_DEVICES; i++) { printf("\nOpening spectrometer %d.\n", i); flag = seabreeze_open_spectrometer(i, &error); printf("...Result is (%d) [%s]\n", flag, get_error_string(error)); if(0 == flag) { device_count++; } string sn = GetSerialNumber(i); if(strcmp(sn.c_str(),strDeviceName.c_str())==0) { m_iSpectralmeterHandle = i; printf("\nfind!!!!!!!!!!!!\n"); break; } } // for(i = 0; i < device_count; i++) // { // printf("\nGetting device %d name.\n", i); // seabreeze_get_model(i, &error, type, sizeof(type)); // printf("...Result is (%s) [%s]\n", type, get_error_string(error)); // // GetSerialNumber(i); // } return 1; } //使用头文件:#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 < 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; //} //关闭设备 void OceanOptics_lib::Close() { int flag; int error; flag = seabreeze_close_spectrometer(m_iSpectralmeterHandle, &error); printf("...Result is (%d) [%s]\n", flag, get_error_string(error)); } //单次数据采集 int OceanOptics_lib::SingleShot(DataFrame &dfData) { int error; int flag; int spec_length; double *spectrum = 0; printf("\n\nGetting formatted spectrum length.\n"); spec_length = seabreeze_get_formatted_spectrum_length(m_iSpectralmeterHandle, &error); printf("...Result is (%d) [%s]\n", spec_length, get_error_string(error)); if(spec_length > 0) { spectrum = (double *)calloc((size_t)spec_length, sizeof(double)); printf("\nGetting a formatted spectrum.\n"); flag = seabreeze_get_formatted_spectrum(m_iSpectralmeterHandle, &error, spectrum, spec_length); printf("...Result is (%d) [%s]\n", flag, get_error_string(error)); printf("\tPixel value 20 is %1.2f\n", spectrum[20]); for(int tmp = 0; tmp 0) { wls = (double *)calloc((size_t)spec_length, sizeof(double)); printf("\nGetting wavelengths.\n"); flag = seabreeze_get_wavelengths(m_iSpectralmeterHandle, &error, wls, spec_length); printf("...Result is (%d) [%s]\n", flag, get_error_string(error)); printf("\tPixel 20 is wavelength %1.2f nm\n", wls[20]); for(int tmp = 0; tmp 0) { printf("\tSerial number: [%s]\n", serial_number); } string sn = serial_number; return sn; }