593 lines
11 KiB
Markdown
593 lines
11 KiB
Markdown
# 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 控制 true:开,false
|
||
* @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);
|
||
``` |