|
|
@ -0,0 +1,75 @@ |
|
|
|
package a8k.app.hardware.utils; |
|
|
|
|
|
|
|
import a8k.app.dao.type.a8kidcard.zenum.A8kOptType; |
|
|
|
|
|
|
|
public class OptGainConvert { |
|
|
|
|
|
|
|
static public class FOptGainConvert { |
|
|
|
public double scanerToRealGain(int gain) { |
|
|
|
double scanGain = 0; |
|
|
|
scanGain = (((100. / 256.) * (double) gain) + 0.125) / 2.15 + 1.; //和硬件电路有关 |
|
|
|
return scanGain; |
|
|
|
} |
|
|
|
|
|
|
|
public int scanerToRawGain(double scanGain) { |
|
|
|
int scan_gain_raw = 0; |
|
|
|
scan_gain_raw = (int) (((scanGain - 1.0) * 2.15 - 0.125) * 255. / 100. + 0.5); //和硬件电路有关 |
|
|
|
if (scan_gain_raw < 1) |
|
|
|
scan_gain_raw = 1; |
|
|
|
if (scan_gain_raw > 255) |
|
|
|
scan_gain_raw = 255; |
|
|
|
return scan_gain_raw; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
static public class TOptGainConvert { |
|
|
|
public int scanerToRawGain(double scanGain) { |
|
|
|
// opamp_gain = (((100.0 * (float) scan_gain_raw) / 255) + 2.4) / 4.7; |
|
|
|
int scan_gain_raw = 0; |
|
|
|
scan_gain_raw = (int) ((scanGain * 4.7 - 2.4) * 256. / 100. + 0.5); //和硬件电路有关 |
|
|
|
if (scan_gain_raw < 1) |
|
|
|
scan_gain_raw = 1; |
|
|
|
if (scan_gain_raw > 255) |
|
|
|
scan_gain_raw = 255; |
|
|
|
return scan_gain_raw; |
|
|
|
} |
|
|
|
|
|
|
|
public double scanerToRealGain(int gain) { |
|
|
|
double scanGain = 0; |
|
|
|
scanGain = (((100.0 * (double) gain) / 256) + 2.4) / 4.7; //和硬件电路有关 |
|
|
|
return scanGain; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public static double scanerToRealGain(A8kOptType type, int gain) { |
|
|
|
if (type == A8kOptType.FOPT) { |
|
|
|
return new FOptGainConvert().scanerToRealGain(gain); |
|
|
|
} else if (type == A8kOptType.TOPT) { |
|
|
|
return new TOptGainConvert().scanerToRealGain(gain); |
|
|
|
} |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
public static int scanerToRawGain(A8kOptType type, double scanGain) { |
|
|
|
if (type == A8kOptType.FOPT) { |
|
|
|
return new FOptGainConvert().scanerToRawGain(scanGain); |
|
|
|
} else if (type == A8kOptType.TOPT) { |
|
|
|
return new TOptGainConvert().scanerToRawGain(scanGain); |
|
|
|
} |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
public static void main(String[] args) { |
|
|
|
TOptGainConvert tgc = new TOptGainConvert(); |
|
|
|
System.out.printf("t gain range %f->%f%n", tgc.scanerToRealGain(0), tgc.scanerToRealGain(255)); |
|
|
|
|
|
|
|
FOptGainConvert fgc = new FOptGainConvert(); |
|
|
|
System.out.printf("f gain range %f->%f%n", fgc.scanerToRealGain(0), fgc.scanerToRealGain(255)); |
|
|
|
|
|
|
|
} |
|
|
|
} |