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