第一次提交

This commit is contained in:
2021-11-25 18:50:24 +08:00
parent 5fc0619dd7
commit 14711be782
5 changed files with 247 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/ocean_lib/build
/ocean_lib/.idea

View File

@ -0,0 +1,42 @@
#include <string>
#include "ZZ_Types.h"
#pragma once
using namespace ZZ_MISCDEF;
using namespace ZZ_MISCDEF::IRIS::FS;
class CIrisFSBase
{
public:
//CIrisFSBase();
//virtual ~CIrisFSBase()= 0;
public:
//<2F><>ʼ<EFBFBD><CABC><EFBFBD>
//<2F>˴<EFBFBD>stringΪָ<CEAA><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD>ocean<61><6E><EFBFBD><EFBFBD><EFBFBD>ǵIJ<C7B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><D0B8><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>c/c++<2B><>׼<EFBFBD><D7BC><EFBFBD><EFBFBD>
//0Ϊ<30>޴<EFBFBD><DEB4>󣬲<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD>ֵͬ
virtual int Initialize(bool bIsUSBMode,ZZ_U8 ucPortNumber,std::string strDeviceName) = 0;
// //<2F>ر<EFBFBD><D8B1>
// virtual void Close() = 0;
//
// //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲɼ<DDB2>
// virtual int SingleShot(DataFrame &dfData) = 0;
//
// //<2F><><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD>ʱ<EFBFBD><CAB1>
// virtual int SetExposureTime(int iExposureTimeInMS) = 0;
//
// //<2F><>ȡ<EFBFBD>ع<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// virtual int GetExposureTime(int &iExposureTimeInMS) = 0;
//
// //<2F><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>
// virtual int SetDeviceTemperature(float fTemperature) = 0;
//
// //<2F><>ȡ<EFBFBD><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD>
// virtual int GetDeviceTemperature(float &fTemperature) = 0;
//
// //<2F><>ȡ<EFBFBD><EFBFBD><E8B1B8>Ϣ
// virtual int GetDeviceInfo(DeviceInfo &Info) = 0;
//
// //<2F><>ȡ<EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// virtual int GetDeviceAttribute(DeviceAttribute &Attr) = 0;
};

44
ocean_lib/ZZ_Types.h Normal file
View File

@ -0,0 +1,44 @@
//////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD>ļ<EFBFBD>
//////////////////////////////////////////////////////////////////////////
#pragma once
#include <iostream>
namespace ZZ_MISCDEF
{
typedef unsigned char ZZ_U8;
typedef unsigned short int ZZ_U16;
typedef unsigned long int ZZ_U32;
namespace IRIS
{
//Fiber Spectrometer
namespace FS
{
typedef struct tagDataFrame
{
ZZ_U16 usExposureTimeInMS;
ZZ_U16 usData[4096];
float fTemperature;
double dTimes = 0;
}DataFrame;
typedef struct tagDeviceInfo
{
std::string strPN;
std::string strSN;
}DeviceInfo;
typedef struct tagDeviceAttribute
{
int iPixels;
int iMaxIntegrationTimeInMS;
int iMinIntegrationTimeInMS;
float fWaveLengthInNM[4096];
}DeviceAttribute;
}
}
}

101
ocean_lib/library.cpp Normal file
View File

@ -0,0 +1,101 @@
#include "library.h"
#include <iostream>
//void hello() {
// std::cout << "Hello, World!" << std::endl;
//}
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];
/* 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);
}
// /* 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;
}
const char* OceanOptics_lib::get_error_string(int error)
{
static char buffer[32];
seabreeze_get_error_string(error, buffer, sizeof(buffer));
return buffer;
}
void OceanOptics_lib::read_serial_number_test(int index)
{
char serial_number[32];
int flag;
int error;
printf("\n\nGetting serial number.\n");
flag = seabreeze_get_serial_number(index, &error, serial_number, 32);
printf("...Result is (%d) [%s]\n", flag, get_error_string(error));
serial_number[31] = '\0';
if(flag > 0) {
printf("\tSerial number: [%s]\n", serial_number);
}
}

58
ocean_lib/library.h Normal file
View File

@ -0,0 +1,58 @@
#ifndef OCEAN_LIB_LIBRARY_H
#define OCEAN_LIB_LIBRARY_H
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <unistd.h>
#include "api/SeaBreezeWrapper.h"
#include "IrisFiberSpectrometerBase.h"
#include "api/seabreezeapi/SeaBreezeAPI.h"
//void hello();
class OceanOptics_lib:public CIrisFSBase
{
public:
//初始化设备
//此处string为指明连接哪个ocean光谱仪的参数可自行更换为其他c/c++标准类型
//0为无错误不同错误请返回不同值
int Initialize(bool bIsUSBMode,ZZ_U8 ucPortNumber,std::string strDeviceName);
//
// //关闭设备
// void Close();
//
// //单次数据采集
// int SingleShot(DataFrame &dfData);
//
// //设置曝光时间
// int SetExposureTime(int iExposureTimeInMS);
//
// //获取曝光时间设置
// int GetExposureTime(int &iExposureTimeInMS);
//
// //设置目标温度
// int SetDeviceTemperature(float fTemperature);
//
// //获取温度设置
// int GetDeviceTemperature(float &fTemperature);
//
// //获取设备信息
// int GetDeviceInfo(DeviceInfo &Info);
//
// //获取设备特征数据
// int GetDeviceAttribute(DeviceAttribute &Attr);
//tc
static const char* get_error_string(int error);
void read_serial_number_test(int index);
};
#endif //OCEAN_LIB_LIBRARY_H