This commit is contained in:
Developer
2026-05-18 17:58:11 +08:00
commit 194033514f
49 changed files with 3414 additions and 0 deletions

593
docs/sdk_apis.md Normal file
View File

@@ -0,0 +1,593 @@
# Terra SDK 接口文档
## Terra SDK
Terra 是设备的名称,包含了光谱仪、激光器、拉曼相关接口。
## 接口列表
| 类名称 | 描述 |
|--------|------|
| DeviceWrapper | 设备管理器 |
| Device | 设备 |
## 调用示例
**step1: 获取 USB 设备**
```java
List<Device> allDevices = DeviceWrapper.openAllDevices(mContext);
```
**step2: 设备初始化**,初始化完成后通过回调方式通知客户端
```java
device.setCallBack(new Device.CallBack() {
@Override
public void onDeviceStatue(boolean state) {
Log.d(TAG, "state = " + state );
String sn = "";
if(state){
sn = device.getSerialNumber();
}
//...
}
});
```
**step3: 调用设备**
```java
double[] spectrum = device.getSpectrum();
```
## DeviceWrapper
获取或关闭所有设备
### Methods
#### openAllDevices
```java
/**
* 打开所有设备
*
* @param context Application context
* @return 挂在的所有设备
*/
public static List<Device> openAllDevices(Context context);
```
#### closeAllDevices
```java
/**
* 关闭所有设备
*/
public static void closeAllDevices();
```
#### openDebug
```java
/**
* 开启日志输出
*/
public static void openDebug();
```
#### checkUsbPermission
```java
/**
* 检测是否有 USB 权限
*/
public static void checkUsbPermission(Context context, PermissionCallBack permissionCallBack) {
UsbConnect.checkUsbPermission(context,permissionCallBack);
}
```
#### PermissionCallBack
```java
/**
* USB 权限状态回调
*/
public interface PermissionCallBack{
/**
* USB 权限状态
* @param deviceIndex 设备索引
* @param state true有权限
*/
public void onPermissionStatue(int deviceIndex, boolean state);
}
```
## Device
Device 是封装了设备提供的接口
### Methods
`CallBack` `setCallBack` `close` `getIndex` `isConnect` `getSerialNumber` `setIntegrationTime` `setAverageTimes` `setTriggerMode` `getSpectrum` `getResetSpectrum` `getWavelength` `getWaveNumber` `setCCDTECOn` `setCCDTECOff` `setCCDTECTemperature` `setLampEnable` `setLampDelayTime` `setLampWidth` `setLampInterval` `getLampDelayTime` `getLampWidth` `getLampInterval` `setExcitedWaveLength` `setLaserPower` `setLaserOn` `setLaserOff` `setLaserPowerOn` `setLaserPowerOff` `setTECOn` `setTECOff` `setMainBoardOn` `setMainBoardOff` `isMainBoardOpen` `isTECOpen` `waveletSmooth` `removeFluorescence` `lineInterpolation` `findPeaks` `getSlit` `getBadPoints` `getYJCorrectCoefficient` `getYAxisCorrectCoefficient` `getCorrectForDetectorNonlinear` `getWavelengthCalibrationCoefficients` `getLaserPowerCorrectCoefficient` `getFpgaVersion` `setYJCorrectCoefficient` `setLaserPowerCorrectCoefficient`
#### CallBack
```java
/**
* 设备状态回调接口
*/
public interface CallBack{
/**
* 设备状态回调
* @param state 设备状态
* true连接成功
* false连接失败
*/
void onDeviceStatue(boolean state);
}
```
#### setCallBack
```java
/**
* 设置回调函数
* @param callBack 回调
*/
public void setCallBack(CallBack callBack);
```
#### close
```java
/**
* 关闭设备
*/
public void close();
```
#### getIndex
```java
/**
* 设备编号
* @return 编号
*/
public int getIndex();
```
#### isConnect
```java
/**
* 设备是否连接成功
*/
public boolean isConnect();
```
#### getSerialNumber
```java
/**
* 获取设备序列号
* @return 设备序列号
*/
public String getSerialNumber();
```
#### setIntegrationTime
```java
/**
* 设置设备积分时间
* @param integrationTime 积分时间
* @return 是否设置成功
*/
public boolean setIntegrationTime(double integrationTime);
```
#### setAverageTimes
```java
/**
* 设置平均次数
* @param averageTimes 平均次数
*/
public void setAverageTimes(int averageTimes);
```
#### setTriggerMode
```java
/**
* 设置触发模式
* @param triggerMode 触发模式
* 0: Free Running
* 1: Hardware Level
* 2: Synchronous
* 3: Hardware Edge
* 4: Edge And Free
* @return 是否设置成功
*/
public boolean setTriggerMode(int triggerMode);
```
#### getSpectrum
```java
/**
* 获取光谱(读取当前光谱,非平均过后的光谱)
* @return 光谱数据
*/
public double[] getSpectrum();
```
#### getResetSpectrum
```java
/**
* 获取光谱(读取当前光谱,受用户积分时间)
* @return 光谱数据
*/
public double[] getResetSpectrum();
```
#### getWavelength
```java
/**
* 获取波长
* @return 波长数据
*/
public double[] getWavelength();
```
#### getWaveNumber
```java
/**
* 获取波数
* @return 波数数据
*/
public double[] getWaveNumber();
```
#### setCCDTECOn
```java
/**
* 开 CCD 制冷
* @return 是否关闭成功
*/
public boolean setCCDTECOn();
```
#### setCCDTECOff
```java
/**
* 关 CCD 制冷
* @return 是否关闭成功
*/
public boolean setCCDTECOff();
```
#### setCCDTECTemperature
```java
/**
* 设置制冷的目标温度 (-20~40)
* @return 是否设置成功
*/
public boolean setCCDTECTemperature(int temperature);
```
#### getCCDTECState
```java
/**
* 获取探测器制冷状态,返回 16 个字节:
* 第一个字节是 TEC 当前温度符号位0零上1零下单位
* 第二个字节是 TEC 当前温度整数位
* 第三个字节是 TEC 当前温度小数位
* 第四个字节是 PID 参数 P 高八位
* 第五个字节是 PID 参数 P 低八位
* 第六个字节是 PID 参数 I
* 第七个字节是 PID 参数 D
* 第八个字节是 TEC 电流符号位0正电流1负电流单位 mA
* 第九个字节是 TEC 电流高八位
* 第十个字节是 TEC 电流低八位
* 第十一个字节是报警是否位0 表示没有1 表示报警2 表示 TEC 没有)
* 第十二个字节 TEC 目标温度符号位0零上1零下单位
* 第十三个字节 TEC 目标温度整数位
* 第十四个字节 LD 电流高八位(目前是 PD 管放大器的电压)
* 第十五个字节 LD 电流低八位
* 第十六个字节上电状态0 表示没上电1 表示上电)
* @return 当前状态信息
*/
public byte[] getCCDTECState();
```
#### setLampEnable
```java
/**
* Lamp 控制
* @param enable 控制 truefalse
* @return 是否设置成功
*/
public boolean setLampEnable(boolean enable);
```
#### setLampDelayTime
```java
/**
* 设置灯泡的延迟时间(微秒)
* @param delayTime 延迟时间
* @return 是否设置成功
*/
public boolean setLampDelayTime(double delayTime);
```
#### setLampWidth
```java
/**
* 设置灯泡脉宽(微秒)
* @param width 脉宽
* @return 是否设置成功
*/
public boolean setLampWidth(double width);
```
#### setLampInterval
```java
/**
* 设置灯泡的周期(微秒)
* @param interval 周期
* @return 是否设置成功
*/
public boolean setLampInterval(double interval);
```
#### getLampDelayTime
```java
/**
* 获取延迟时间(微秒)
* @return 延迟时间
*/
public double getLampDelayTime();
```
#### getLampWidth
```java
/**
* 获取灯泡脉宽(微秒)
* @return 灯泡脉宽
*/
public double getLampWidth();
```
#### getLampInterval
```java
/**
* 获取灯泡的周期(微秒)
* @return 灯泡周期
*/
public double getLampInterval();
```
#### setExcitedWaveLength
```java
/**
* 设置激发波长
* @param excitedWaveLength 激发波长
* @return 是否设置成功
*/
public boolean setExcitedWaveLength(int excitedWaveLength);
```
#### setLaserPower
```java
/**
* 设置激光功率
* @param power 激光功率
* @return 是否设置成功
*/
public boolean setLaserPower(int power);
```
#### setLaserOn
```java
/**
* 开激光
* @return 是否设置成功
*/
public boolean setLaserOn();
```
#### setLaserOff
```java
/**
* 关激光
* @return 是否设置成功
*/
public boolean setLaserOff();
```
#### setLaserPowerOn
```java
/**
* 开激光器电源
* @return 是否设置成功
*/
public boolean setLaserPowerOn();
```
#### setLaserPowerOff
```java
/**
* 关激光器电源
* @return 是否设置成功
*/
public boolean setLaserPowerOff();
```
#### setTECOn
```java
/**
* 开 TEC
* @return 是否设置成功
*/
public boolean setTECOn();
```
#### setTECOff
```java
/**
* 关 TEC
* @return 是否设置成功
*/
public boolean setTECOff();
```
#### setMainBoardOn
```java
/**
* 开主板
* @return 是否设置成功
*/
public double setMainBoardOn();
```
#### setMainBoardOff
```java
/**
* 关主板
* @return 是否设置成功
*/
public double setMainBoardOff();
```
#### isMainBoardOpen
```java
/**
* 主板是否开成功,在最后一次操作时判断
* @return 是否开成功
*/
public boolean isMainBoardOpen();
```
#### isTECOpen
```java
/**
* 获取 TEC 状态true已开
* @return TEC 状态
*/
public boolean isTECOpen();
```
#### waveletSmooth
```java
/**
* 小波平滑
* @param spectrum 光谱
* @return 平滑后的光谱
*/
public double[] waveletSmooth(double[] spectrum);
```
#### removeFluorescence
```java
/**
* 去荧光
* @param spectrum 光谱
* @return 去荧光后的光谱
*/
public double[] removeFluorescence(double[] spectrum, int side);
```
#### lineInterpolation
```java
/**
* 线性插值
* @param xDataRaw 原 X 轴数据
* @param yDataRaw 原 Y 轴数据
* @param xData 插值后的 X 轴数据
* @return yData 插值后的 Y 轴数据
*/
public double[] lineInterpolation(double[] xDataRaw, double[] yDataRaw, double[] xData);
```
#### findPeaks
```java
/**
* 寻峰
* @param spectrum 光谱
* @param minIndicesBetweenPeaks 最小峰间距(值为 2实际可能需要 5
* @param baseline 基线
* @return 返回找到的峰的位置
*/
public static int[] findPeaks(double[] spectrum, int minIndicesBetweenPeaks, double baseline);
```
#### getSlit
```java
/**
* 获取狭缝
* @return 狭缝大小
*/
public String getSlit();
```
#### getBadPoints
```java
/**
* 获取坏点
* @return 坏点
*/
public int[] getBadPoints();
```
#### getYJCorrectCoefficient
```java
/**
* 获取波长校准系数
* @return 波长校准系数
*/
public double[] getYJCorrectCoefficient();
```
#### getYAxisCorrectCoefficient
```java
/**
* 获取 Y 轴校准系数
* @return Y 轴系数
*/
public double[] getYAxisCorrectCoefficient();
```
#### getCorrectForDetectorNonlinear
```java
/**
* 获取探测器非线性校正系数
* @return 探测器非线性校正系数
*/
public double[] getCorrectForDetectorNonlinear();
```
#### getWavelengthCalibrationCoefficients
```java
/**
* 获取波长校准系数
* @return 波长校准系数
*/
public double[] getWavelengthCalibrationCoefficients();
```
#### getLaserPowerCorrectCoefficient
```java
/**
* 获取功率校准系数
* @return 功率校准系数
*/
public double[] getLaserPowerCorrectCoefficient();
```
#### getFpgaVersion
```java
/**
* 获取 FPGA 版本
* @return FPGA 版本
*/
public double[] getFpgaVersion();
```
#### setYJCorrectCoefficient
```java
/**
* 设置波长校准系数
* @param coffes 波长校准系数
* @return 是否设置成功
*/
public boolean setYJCorrectCoefficient(double[] coffes);
```
#### setLaserPowerCorrectCoefficient
```java
/**
* 设置功率校准系数
* @param calibrationCoefficient 功率校准系数格式16 位字符串4 个数据,每个数据 4 位,如 0070030008001400
*/
public void setLaserPowerCorrectCoefficient(String calibrationCoefficient);
```