|
@@ -86,6 +86,12 @@ bool OscilloscopeData::openOSC()
|
|
m_usbInterface->usbCtrlTrans(0x17, 0x7f);
|
|
m_usbInterface->usbCtrlTrans(0x17, 0x7f);
|
|
/* 设置缓冲区大小 */
|
|
/* 设置缓冲区大小 */
|
|
m_usbInterface->setInfo(BUFFER_SIZE);
|
|
m_usbInterface->setInfo(BUFFER_SIZE);
|
|
|
|
+ /* 获取零电压值 */
|
|
|
|
+ getZeroVoltage();
|
|
|
|
+ /* 获取电压校准系数 */
|
|
|
|
+ getVoltageCalibration();
|
|
|
|
+
|
|
|
|
+
|
|
m_isOpen = true;
|
|
m_isOpen = true;
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
@@ -188,7 +194,11 @@ void OscilloscopeData::setChannelMerge(bool merge)
|
|
m_usbInterface->usbCtrlTrans(0x24, m_ctrlByte1);
|
|
m_usbInterface->usbCtrlTrans(0x24, m_ctrlByte1);
|
|
}
|
|
}
|
|
|
|
|
|
-/* 设置通道A输入量程 */
|
|
|
|
|
|
+/**
|
|
|
|
+ * @brief 设置通道A输入量程,这个函数需要在打开示波器之后调用
|
|
|
|
+ *
|
|
|
|
+ * @param range
|
|
|
|
+ */
|
|
void OscilloscopeData::setChannelARange(OscChannelRange range)
|
|
void OscilloscopeData::setChannelARange(OscChannelRange range)
|
|
{
|
|
{
|
|
if(m_usbInterface == nullptr)
|
|
if(m_usbInterface == nullptr)
|
|
@@ -230,9 +240,15 @@ void OscilloscopeData::setChannelARange(OscChannelRange range)
|
|
m_usbInterface->usbCtrlTrans(0x22, 0x00);
|
|
m_usbInterface->usbCtrlTrans(0x22, 0x00);
|
|
}
|
|
}
|
|
m_usbInterface->usbCtrlTrans(0x24, m_ctrlByte1);
|
|
m_usbInterface->usbCtrlTrans(0x24, m_ctrlByte1);
|
|
|
|
+
|
|
|
|
+ setZeroVoltageAndCalibration(OscChannel::CH_A, range);
|
|
}
|
|
}
|
|
|
|
|
|
-/* 设置通道B输入量程 */
|
|
|
|
|
|
+/**
|
|
|
|
+ * @brief 设置通道B输入量程
|
|
|
|
+ *
|
|
|
|
+ * @param range
|
|
|
|
+ */
|
|
void OscilloscopeData::setChannelBRange(OscChannelRange range)
|
|
void OscilloscopeData::setChannelBRange(OscChannelRange range)
|
|
{
|
|
{
|
|
if(m_usbInterface == nullptr)
|
|
if(m_usbInterface == nullptr)
|
|
@@ -281,6 +297,8 @@ void OscilloscopeData::setChannelBRange(OscChannelRange range)
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
m_usbInterface->usbCtrlTrans(0x24, m_ctrlByte1);
|
|
m_usbInterface->usbCtrlTrans(0x24, m_ctrlByte1);
|
|
|
|
+
|
|
|
|
+ setZeroVoltageAndCalibration(OscChannel::CH_B, range);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -535,48 +553,48 @@ void OscilloscopeData::getVoltageCalibration()
|
|
unsigned char voltageCalibration = 0;
|
|
unsigned char voltageCalibration = 0;
|
|
/* 2V档位,正负8V量程 */
|
|
/* 2V档位,正负8V量程 */
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0xc2);
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0xc2);
|
|
- m_mapChAVoltageCalibration.insert(OscChannelRange::CR_8V, voltageCalibration);
|
|
|
|
|
|
+ m_mapChAVoltageAmplitudeRatio.insert(OscChannelRange::CR_8V, voltageCalibration);
|
|
/* 1V档位,正负5V量程 */
|
|
/* 1V档位,正负5V量程 */
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0x03);
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0x03);
|
|
- m_mapChAVoltageCalibration.insert(OscChannelRange::CR_5V, voltageCalibration);
|
|
|
|
|
|
+ m_mapChAVoltageAmplitudeRatio.insert(OscChannelRange::CR_5V, voltageCalibration);
|
|
/* 500mV档位,正负2.5V量程 */
|
|
/* 500mV档位,正负2.5V量程 */
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0x08);
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0x08);
|
|
- m_mapChAVoltageCalibration.insert(OscChannelRange::CR_2V5, voltageCalibration);
|
|
|
|
|
|
+ m_mapChAVoltageAmplitudeRatio.insert(OscChannelRange::CR_2V5, voltageCalibration);
|
|
/* 200mV档位,正负1V量程 */
|
|
/* 200mV档位,正负1V量程 */
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0x06);
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0x06);
|
|
- m_mapChAVoltageCalibration.insert(OscChannelRange::CR_1V, voltageCalibration);
|
|
|
|
|
|
+ m_mapChAVoltageAmplitudeRatio.insert(OscChannelRange::CR_1V, voltageCalibration);
|
|
/* 100mV档位,正负500mV量程 */
|
|
/* 100mV档位,正负500mV量程 */
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0x09);
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0x09);
|
|
- m_mapChAVoltageCalibration.insert(OscChannelRange::CR_500MV, voltageCalibration);
|
|
|
|
|
|
+ m_mapChAVoltageAmplitudeRatio.insert(OscChannelRange::CR_500MV, voltageCalibration);
|
|
/* 50mV档位,正负250mV量程 */
|
|
/* 50mV档位,正负250mV量程 */
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0x0a);
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0x0a);
|
|
- m_mapChAVoltageCalibration.insert(OscChannelRange::CR_250MV, voltageCalibration);
|
|
|
|
|
|
+ m_mapChAVoltageAmplitudeRatio.insert(OscChannelRange::CR_250MV, voltageCalibration);
|
|
/* 20mV档位,正负100mV量程 */
|
|
/* 20mV档位,正负100mV量程 */
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0x2a);
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0x2a);
|
|
- m_mapChAVoltageCalibration.insert(OscChannelRange::CR_100MV, voltageCalibration);
|
|
|
|
|
|
+ m_mapChAVoltageAmplitudeRatio.insert(OscChannelRange::CR_100MV, voltageCalibration);
|
|
|
|
|
|
/* 获取通道B电压校准系数 */
|
|
/* 获取通道B电压校准系数 */
|
|
/* 2V档位,正负8V量程 */
|
|
/* 2V档位,正负8V量程 */
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0xd2);
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0xd2);
|
|
- m_mapChBVoltageCalibration.insert(OscChannelRange::CR_8V, voltageCalibration);
|
|
|
|
|
|
+ m_mapChBVoltageAmplitudeRatio.insert(OscChannelRange::CR_8V, voltageCalibration);
|
|
/* 1V档位,正负5V量程 */
|
|
/* 1V档位,正负5V量程 */
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0x04);
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0x04);
|
|
- m_mapChBVoltageCalibration.insert(OscChannelRange::CR_5V, voltageCalibration);
|
|
|
|
|
|
+ m_mapChBVoltageAmplitudeRatio.insert(OscChannelRange::CR_5V, voltageCalibration);
|
|
/* 500mV档位,正负2.5V量程 */
|
|
/* 500mV档位,正负2.5V量程 */
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0x0b);
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0x0b);
|
|
- m_mapChBVoltageCalibration.insert(OscChannelRange::CR_2V5, voltageCalibration);
|
|
|
|
|
|
+ m_mapChBVoltageAmplitudeRatio.insert(OscChannelRange::CR_2V5, voltageCalibration);
|
|
/* 200mV档位,正负1V量程 */
|
|
/* 200mV档位,正负1V量程 */
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0x07);
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0x07);
|
|
- m_mapChBVoltageCalibration.insert(OscChannelRange::CR_1V, voltageCalibration);
|
|
|
|
|
|
+ m_mapChBVoltageAmplitudeRatio.insert(OscChannelRange::CR_1V, voltageCalibration);
|
|
/* 100mV档位,正负500mV量程 */
|
|
/* 100mV档位,正负500mV量程 */
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0x0c);
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0x0c);
|
|
- m_mapChBVoltageCalibration.insert(OscChannelRange::CR_500MV, voltageCalibration);
|
|
|
|
|
|
+ m_mapChBVoltageAmplitudeRatio.insert(OscChannelRange::CR_500MV, voltageCalibration);
|
|
/* 50mV档位,正负250mV量程 */
|
|
/* 50mV档位,正负250mV量程 */
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0x0d);
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0x0d);
|
|
- m_mapChBVoltageCalibration.insert(OscChannelRange::CR_250MV, voltageCalibration);
|
|
|
|
|
|
+ m_mapChBVoltageAmplitudeRatio.insert(OscChannelRange::CR_250MV, voltageCalibration);
|
|
/* 20mV档位,正负100mV量程 */
|
|
/* 20mV档位,正负100mV量程 */
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0x2d);
|
|
voltageCalibration = m_usbInterface->usbCtrlTrans(0x90, 0x2d);
|
|
- m_mapChBVoltageCalibration.insert(OscChannelRange::CR_100MV, voltageCalibration);
|
|
|
|
|
|
+ m_mapChBVoltageAmplitudeRatio.insert(OscChannelRange::CR_100MV, voltageCalibration);
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -585,14 +603,14 @@ void OscilloscopeData::printVoltageCalibration(OscChannel channel)
|
|
{
|
|
{
|
|
if(channel == OscChannel::CH_A)
|
|
if(channel == OscChannel::CH_A)
|
|
{
|
|
{
|
|
- for(auto it = m_mapChAVoltageCalibration.begin(); it != m_mapChAVoltageCalibration.end(); ++it)
|
|
|
|
|
|
+ for(auto it = m_mapChAVoltageAmplitudeRatio.begin(); it != m_mapChAVoltageAmplitudeRatio.end(); ++it)
|
|
{
|
|
{
|
|
SPDLOG_LOGGER_INFO(m_logger, "通道A {} 量程下的电压校准系数为: {}", static_cast<int>(it.key()), it.value());
|
|
SPDLOG_LOGGER_INFO(m_logger, "通道A {} 量程下的电压校准系数为: {}", static_cast<int>(it.key()), it.value());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if(channel == OscChannel::CH_B)
|
|
else if(channel == OscChannel::CH_B)
|
|
{
|
|
{
|
|
- for(auto it = m_mapChBVoltageCalibration.begin(); it != m_mapChBVoltageCalibration.end(); ++it)
|
|
|
|
|
|
+ for(auto it = m_mapChBVoltageAmplitudeRatio.begin(); it != m_mapChBVoltageAmplitudeRatio.end(); ++it)
|
|
{
|
|
{
|
|
SPDLOG_LOGGER_INFO(m_logger, "通道B {} 量程下的电压校准系数为: {}", static_cast<int>(it.key()), it.value());
|
|
SPDLOG_LOGGER_INFO(m_logger, "通道B {} 量程下的电压校准系数为: {}", static_cast<int>(it.key()), it.value());
|
|
}
|
|
}
|
|
@@ -674,6 +692,7 @@ void OscilloscopeData::threadProcessData()
|
|
m_mutexCaptureData.unlock();
|
|
m_mutexCaptureData.unlock();
|
|
/* 处理数据 */
|
|
/* 处理数据 */
|
|
SPDLOG_LOGGER_DEBUG(m_logger, "开始处理数据,通道A数据: {}, 通道B数据: {}", m_bufferChnA[32000], m_bufferChnB[32000]);
|
|
SPDLOG_LOGGER_DEBUG(m_logger, "开始处理数据,通道A数据: {}, 通道B数据: {}", m_bufferChnA[32000], m_bufferChnB[32000]);
|
|
|
|
+ /* 矫正零电压值 */
|
|
}
|
|
}
|
|
/* 打印1000个数据 */
|
|
/* 打印1000个数据 */
|
|
// for(uint32_t i = 0; i < BUFFER_SIZE/2; i++)
|
|
// for(uint32_t i = 0; i < BUFFER_SIZE/2; i++)
|
|
@@ -688,6 +707,18 @@ void OscilloscopeData::threadProcessData()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/* 根据采样点数添加颜色 */
|
|
|
|
+void OscilloscopeData::threadAddColorBySample()
|
|
|
|
+{
|
|
|
|
+ // while(m_runCapture)
|
|
|
|
+ {
|
|
|
|
+ g_eyeMapMatrix.mutexEyeData.lock();
|
|
|
|
+ g_eyeMapMatrix.addColorBySample();
|
|
|
|
+ g_eyeMapMatrix.mutexEyeData.unlock();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* @brief 解析数据,眼图需要的数据,从C#代码中移植过来
|
|
* @brief 解析数据,眼图需要的数据,从C#代码中移植过来
|
|
*
|
|
*
|
|
@@ -799,13 +830,13 @@ void OscilloscopeData::parseEyeMapData(unsigned char* buffer, unsigned int size)
|
|
bool flag3 = true;
|
|
bool flag3 = true;
|
|
/* 找到数组中的上升沿和下降沿,并记录其坐标 */
|
|
/* 找到数组中的上升沿和下降沿,并记录其坐标 */
|
|
uint8_t vaPre = 0;
|
|
uint8_t vaPre = 0;
|
|
- uint8_t va = 0;
|
|
|
|
|
|
+ // uint8_t va = 0;
|
|
uint8_t vaNext = 0;
|
|
uint8_t vaNext = 0;
|
|
for (int i = 10; i < num3; i++)
|
|
for (int i = 10; i < num3; i++)
|
|
{
|
|
{
|
|
/* 取出相邻的三个值 */
|
|
/* 取出相邻的三个值 */
|
|
vaPre = vecData[i - 1].value;
|
|
vaPre = vecData[i - 1].value;
|
|
- va = vecData[i].value;
|
|
|
|
|
|
+ // va = vecData[i].value;
|
|
vaNext = vecData[i + 1].value;
|
|
vaNext = vecData[i + 1].value;
|
|
if (flag3)
|
|
if (flag3)
|
|
{
|
|
{
|
|
@@ -886,6 +917,7 @@ void OscilloscopeData::parseEyeMapData(unsigned char* buffer, unsigned int size)
|
|
int num18 = 0;
|
|
int num18 = 0;
|
|
int num19 = 0;
|
|
int num19 = 0;
|
|
float num20 = 0.0;
|
|
float num20 = 0.0;
|
|
|
|
+ /* 将数据拷贝到OscData的Matrix中 */
|
|
for (int i = 0; i < list2.size(); i++)
|
|
for (int i = 0; i < list2.size(); i++)
|
|
{
|
|
{
|
|
std::vector<EyeDataT> list5 = list2[i];
|
|
std::vector<EyeDataT> list5 = list2[i];
|
|
@@ -913,7 +945,117 @@ void OscilloscopeData::parseEyeMapData(unsigned char* buffer, unsigned int size)
|
|
g_eyeDataMatrix.eyeLessenTheBurden();
|
|
g_eyeDataMatrix.eyeLessenTheBurden();
|
|
list2.clear();
|
|
list2.clear();
|
|
// pEyeData[,] eyedata = globleVariables.g_IeyeDataMatrix.eyeZoomOut();
|
|
// pEyeData[,] eyedata = globleVariables.g_IeyeDataMatrix.eyeZoomOut();
|
|
|
|
+ auto eyeData = g_eyeDataMatrix.eyeZoomOut();
|
|
// GraphView.m_eyedMatrux.EyeDataMatrixCopy(eyedata);
|
|
// GraphView.m_eyedMatrux.EyeDataMatrixCopy(eyedata);
|
|
|
|
+ g_eyeMapMatrix.mutexEyeData.lock();
|
|
|
|
+ g_eyeMapMatrix.copyDataMatrix(*eyeData);
|
|
|
|
+ g_eyeMapMatrix.mutexEyeData.unlock();
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/* 设置零电压值和电压校准系数 */
|
|
|
|
+void OscilloscopeData::setZeroVoltageAndCalibration(OscChannel chn, OscChannelRange range)
|
|
|
|
+{
|
|
|
|
+
|
|
|
|
+ if(chn == OscChannel::CH_A)
|
|
|
|
+ {
|
|
|
|
+ /* 电压幅值比 */
|
|
|
|
+ uint8_t altitudeByteA = 0;
|
|
|
|
+ m_zeroVoltageA = m_mapChAZeroVoltage.value(range);
|
|
|
|
+ altitudeByteA = m_mapChAVoltageAmplitudeRatio.value(range);
|
|
|
|
+
|
|
|
|
+ if(range == OscChannelRange::CR_100MV)
|
|
|
|
+ {
|
|
|
|
+ m_voltageCalibrationA = (altitudeByteA * 2) / 255.0;
|
|
|
|
+ m_rangeRatioA = 0.1 / 255.0;
|
|
|
|
+ }
|
|
|
|
+ else if(range == OscChannelRange::CR_250MV)
|
|
|
|
+ {
|
|
|
|
+ m_voltageCalibrationA = (altitudeByteA * 2) / 255.0;
|
|
|
|
+ m_rangeRatioA = 0.25 / 255.0;
|
|
|
|
+ }
|
|
|
|
+ else if(range == OscChannelRange::CR_500MV)
|
|
|
|
+ {
|
|
|
|
+ m_voltageCalibrationA = (altitudeByteA * 2) / 255.0;
|
|
|
|
+ m_rangeRatioA = 0.5 / 255.0;
|
|
|
|
+ }
|
|
|
|
+ else if(range == OscChannelRange::CR_1V)
|
|
|
|
+ {
|
|
|
|
+ m_voltageCalibrationA = (altitudeByteA * 2) / 255.0;
|
|
|
|
+ m_rangeRatioA = 1.0 / 255.0;
|
|
|
|
+ }
|
|
|
|
+ else if(range == OscChannelRange::CR_2V5)
|
|
|
|
+ {
|
|
|
|
+ m_voltageCalibrationA = (altitudeByteA * 2) / 255.0;
|
|
|
|
+ m_rangeRatioA = 2.5 / 255.0;
|
|
|
|
+ }
|
|
|
|
+ else if(range == OscChannelRange::CR_5V)
|
|
|
|
+ {
|
|
|
|
+ m_voltageCalibrationA = (altitudeByteA * 2) / 255.0;
|
|
|
|
+ m_rangeRatioA = 5.0 / 255.0;
|
|
|
|
+ }
|
|
|
|
+ else if(range == OscChannelRange::CR_8V)
|
|
|
|
+ {
|
|
|
|
+ m_voltageCalibrationA = (altitudeByteA * 2) / 255.0;
|
|
|
|
+ m_rangeRatioA = 8.0 / 255.0;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else if(chn == OscChannel::CH_B)
|
|
|
|
+ {
|
|
|
|
+ /* 电压幅值比 */
|
|
|
|
+ uint8_t altitudeByteB = 0;
|
|
|
|
+ m_zeroVoltageB = m_mapChBZeroVoltage.value(range);
|
|
|
|
+ altitudeByteB = m_mapChBVoltageAmplitudeRatio.value(range);
|
|
|
|
+
|
|
|
|
+ if(range == OscChannelRange::CR_100MV)
|
|
|
|
+ {
|
|
|
|
+ m_voltageCalibrationB = (altitudeByteB * 2) / 255.0;
|
|
|
|
+ m_rangeRatioB = 0.1 / 255.0;
|
|
|
|
+ }
|
|
|
|
+ else if(range == OscChannelRange::CR_250MV)
|
|
|
|
+ {
|
|
|
|
+ m_voltageCalibrationB = (altitudeByteB * 2) / 255.0;
|
|
|
|
+ m_rangeRatioB = 0.25 / 255.0;
|
|
|
|
+ }
|
|
|
|
+ else if(range == OscChannelRange::CR_500MV)
|
|
|
|
+ {
|
|
|
|
+ m_voltageCalibrationB = (altitudeByteB * 2) / 255.0;
|
|
|
|
+ m_rangeRatioB = 0.5 / 255.0;
|
|
|
|
+ }
|
|
|
|
+ else if(range == OscChannelRange::CR_1V)
|
|
|
|
+ {
|
|
|
|
+ m_voltageCalibrationB = (altitudeByteB * 2) / 255.0;
|
|
|
|
+ m_rangeRatioB = 1.0 / 255.0;
|
|
|
|
+ }
|
|
|
|
+ else if(range == OscChannelRange::CR_2V5)
|
|
|
|
+ {
|
|
|
|
+ m_voltageCalibrationB = (altitudeByteB * 2) / 255.0;
|
|
|
|
+ m_rangeRatioB = 2.5 / 255.0;
|
|
|
|
+ }
|
|
|
|
+ else if(range == OscChannelRange::CR_5V)
|
|
|
|
+ {
|
|
|
|
+ m_voltageCalibrationB = (altitudeByteB * 2) / 255.0;
|
|
|
|
+ m_rangeRatioB = 5.0 / 255.0;
|
|
|
|
+ }
|
|
|
|
+ else if(range == OscChannelRange::CR_8V)
|
|
|
|
+ {
|
|
|
|
+ m_voltageCalibrationB = (altitudeByteB * 2) / 255.0;
|
|
|
|
+ m_rangeRatioB = 8.0 / 255.0;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/* 校准电压 */
|
|
|
|
+double OscilloscopeData::calibrationVoltageA(uint8_t& data)
|
|
|
|
+{
|
|
|
|
+ return m_voltageCalibrationA * m_rangeRatioA * (data - m_zeroVoltageA);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+double OscilloscopeData::calibrationVoltageB(uint8_t& data)
|
|
|
|
+{
|
|
|
|
+ return m_voltageCalibrationB * m_rangeRatioB * (data - m_zeroVoltageB);
|
|
|
|
+}
|
|
|
|
|