modified: windowchannel.cpp

modified:   windowchannel.h
main
dplimin 2023-12-12 16:53:32 +03:00
parent fa0d4f3db9
commit ba4b85ef47
2 changed files with 203 additions and 198 deletions

View File

@ -267,123 +267,173 @@ typeCHANNEL windowChannel::getWindowsChannel()
} }
typeIKU windowChannel::VerifyGainA142(Set thisData) //сверяет гейн на допусимый прибора при установке сенс
typeIKU windowChannel::maxGain(Set Data) //сверяет гейн на допусимый прибора при установке сенс
{
typeIKU maxGain;
if(Data.SENS <= 0.0010f) //0.001
maxGain= Ku1000;
else
if(/*sens >= 0.0011f && */Data.SENS <= 10.000f) //0.002
maxGain= Ku1000;
else
if(/*sens >= 10.001f && */Data.SENS <= 20.000f) //20
maxGain= Ku500;
else
if(/*sens >= 20.001f && */Data.SENS <= 50.000f) //50
maxGain= Ku200;
else
if(/*sens >= 50.001f && */Data.SENS <= 100.00f) //100
maxGain= Ku100;
else
if(/*sens >= 100.01f && */Data.SENS <= 200.00f) //200
maxGain= Ku50;
else
if(/*sens >= 200.01f && */Data.SENS <= 500.00f) //500
maxGain= Ku20;
else
if(/*sens >= 500.01f && */Data.SENS <= 1000.0f) //1000
maxGain= Ku10;
else
if(/*sens >= 1000.01f && */Data.SENS <= 2000.0f) //2000
maxGain= Ku5;
else
if(/*sens >= 2000.01f && */Data.SENS <= 5000.0f) //5000
maxGain= Ku2;
else
if(/*sens >= 5000.01f && */Data.SENS <= 10000.0f) //10000
maxGain= Ku1;
else
if(/*sens >= 10001.0f && */Data.SENS <= 20000.0f) //20000
maxGain= Ku0_5;
else
if(/*sens >= 20001.0f && */Data.SENS <= 50000.0f) //50000
maxGain= Ku0_2;
else
if(Data.SENS < 100000.0f) //99999
maxGain= Ku0_1;
return maxGain;
}
typeIKU windowChannel::VerifyGainA142(Set Data) //сверяет гейн на допусимый прибора при установке сенс
{ {
if(thisData.SENS <= 0.0010f) //0.001 if(Data.SENS <= 0.0010f) //0.001
{ {
if(thisData.IKU > Ku1000) if(Data.IKU > Ku1000)
{ {
thisData.IKU = Ku1000; Data.IKU = Ku1000;
} }
} }
else else
if(/*sens >= 0.0011f && */thisData.SENS <= 10.000f) //0.002 if(/*sens >= 0.0011f && */Data.SENS <= 10.000f) //0.002
{ {
if(thisData.IKU > Ku1000) if(Data.IKU > Ku1000)
{ {
thisData.IKU = Ku1000; Data.IKU = Ku1000;
} }
} }
else else
if(/*sens >= 10.001f && */thisData.SENS <= 20.000f) //20 if(/*sens >= 10.001f && */Data.SENS <= 20.000f) //20
{ {
if(thisData.IKU > Ku500) if(Data.IKU > Ku500)
{ {
thisData.IKU = Ku500; Data.IKU = Ku500;
} }
} }
else else
if(/*sens >= 20.001f && */thisData.SENS <= 50.000f) //50 if(/*sens >= 20.001f && */Data.SENS <= 50.000f) //50
{ {
if(thisData.IKU > Ku200) if(Data.IKU > Ku200)
{ {
thisData.IKU = Ku200; Data.IKU = Ku200;
} }
} }
else else
if(/*sens >= 50.001f && */thisData.SENS <= 100.00f) //100 if(/*sens >= 50.001f && */Data.SENS <= 100.00f) //100
{ {
if(thisData.IKU > Ku100) if(Data.IKU > Ku100)
{ {
thisData.IKU = Ku100; Data.IKU = Ku100;
} }
} }
else else
if(/*sens >= 100.01f && */thisData.SENS <= 200.00f) //200 if(/*sens >= 100.01f && */Data.SENS <= 200.00f) //200
{ {
if(thisData.IKU > Ku50) if(Data.IKU > Ku50)
{ {
thisData.IKU = Ku50; Data.IKU = Ku50;
} }
} }
else else
if(/*sens >= 200.01f && */thisData.SENS <= 500.00f) //500 if(/*sens >= 200.01f && */Data.SENS <= 500.00f) //500
{ {
if(thisData.IKU > Ku20) if(Data.IKU > Ku20)
{ {
thisData.IKU = Ku20; Data.IKU = Ku20;
} }
} }
else else
if(/*sens >= 500.01f && */thisData.SENS <= 1000.0f) //1000 if(/*sens >= 500.01f && */Data.SENS <= 1000.0f) //1000
{ {
if(thisData.IKU > Ku10) if(Data.IKU > Ku10)
{ {
thisData.IKU = Ku10; Data.IKU = Ku10;
} }
} }
else else
if(/*sens >= 1000.01f && */thisData.SENS <= 2000.0f) //2000 if(/*sens >= 1000.01f && */Data.SENS <= 2000.0f) //2000
{ {
if(thisData.IKU > Ku5) if(Data.IKU > Ku5)
{ {
thisData.IKU = Ku5; Data.IKU = Ku5;
} }
} }
else else
if(/*sens >= 2000.01f && */thisData.SENS <= 5000.0f) //5000 if(/*sens >= 2000.01f && */Data.SENS <= 5000.0f) //5000
{ {
if(thisData.IKU > Ku2) if(Data.IKU > Ku2)
{ {
thisData.IKU = Ku2; Data.IKU = Ku2;
} }
} }
else else
if(/*sens >= 5000.01f && */thisData.SENS <= 10000.0f) //10000 if(/*sens >= 5000.01f && */Data.SENS <= 10000.0f) //10000
{ {
if(thisData.IKU > Ku1) if(Data.IKU > Ku1)
{ {
thisData.IKU = Ku1; Data.IKU = Ku1;
} }
} }
else else
if(/*sens >= 10001.0f && */thisData.SENS <= 20000.0f) //20000 if(/*sens >= 10001.0f && */Data.SENS <= 20000.0f) //20000
{ {
if(thisData.IKU > Ku0_5) if(Data.IKU > Ku0_5)
{ {
thisData.IKU = Ku0_5; Data.IKU = Ku0_5;
} }
} }
else else
if(/*sens >= 20001.0f && */thisData.SENS <= 50000.0f) //50000 if(/*sens >= 20001.0f && */Data.SENS <= 50000.0f) //50000
{ {
if(thisData.IKU > Ku0_2) if(Data.IKU > Ku0_2)
{ {
thisData.IKU = Ku0_2; Data.IKU = Ku0_2;
} }
} }
else else
if(thisData.SENS < 100000.0f) //99999 if(Data.SENS < 100000.0f) //99999
{ {
if(thisData.IKU > Ku0_1) if(Data.IKU > Ku0_1)
{ {
thisData.IKU = Ku0_1; Data.IKU = Ku0_1;
} }
} }
return thisData.IKU; return Data.IKU;
} }
QString windowChannel::DisplayIKUA142(float sens, typeIKU iku ,typeVALUE value) QString windowChannel::DisplayIKUA142(float sens, typeIKU iku ,typeVALUE value)
@ -392,7 +442,7 @@ QString windowChannel::DisplayIKUA142(float sens, typeIKU iku ,typeVALUE value)
uint offset; uint offset;
//вбычку обьявлю тут //вбычку обьявлю тут
const char *pOUT[3][25] = const char *pOUT[3][35] =
{ {
{ {
"0.0001 мВ/м/c2", "0.0001 мВ/м/c2",
@ -419,7 +469,17 @@ QString windowChannel::DisplayIKUA142(float sens, typeIKU iku ,typeVALUE value)
"1 В/м/c2", "1 В/м/c2",
"2 В/м/c2", "2 В/м/c2",
"5 В/м/c2", "5 В/м/c2",
"10 В/м/c2" "10 В/м/c2",
"20В/м/c2",
"50В/м/c2",
"100В/м/c2",
"200В/м/c2",
"500В/м/c2",
"1000В/м/c2",
"2000В/м/c2",
"5000В/м/c2",
"10000В/м/c2",
}, },
{ {
"0.0001 мВ/Па", "0.0001 мВ/Па",
@ -446,7 +506,16 @@ QString windowChannel::DisplayIKUA142(float sens, typeIKU iku ,typeVALUE value)
"1 В/Па", "1 В/Па",
"2 В/Па", "2 В/Па",
"5 В/Па", "5 В/Па",
"10 В/Па" "10 В/Па",
"20В/Па",
"50В/Па",
"100В/Па",//27
"200В/Па",
"500В/Па",
"1000В/Па", //30
"2000В/Па",
"5000В/Па",
"10000В/Па", //33
}, },
{ {
"0.0001 мВ/Н", "0.0001 мВ/Н",
@ -473,174 +542,109 @@ QString windowChannel::DisplayIKUA142(float sens, typeIKU iku ,typeVALUE value)
"1 В/Н", "1 В/Н",
"2 В/Н", "2 В/Н",
"5 В/Н", "5 В/Н",
"10 В/Н" "10 В/Н",
"20В/Н",
"50В/Н",
"100В/Н",//27
"200В/Н",
"500В/Н",
"1000В/Н", //30
"2000В/Н",
"5000В/Н",
"10000В/Н", //33
} }
}; };
if(sens <= 0.0010f) //0.001 if((sens>=0.0001f)&&(sens<0.001f)) //0.001
{
out = iku;
offset=0;
}
else
if((sens >= 0.0010f)&&(sens < 0.010f)) //0.01
{
out = iku;
offset=0;
}
else
if((sens>=0.01f)&&(sens<0.1f)) //0.01
{
out = iku + 3;
offset=3;
}
else
if((sens>=0.1f)&&(sens<1.0f)) //0.1
{
out = iku + 6;
offset=6;
}
else
if((sens>=1.0f)&&(sens<10.0f)) //1
{
out = iku + 9;
offset=9;
}
else
if((sens>=10.0f)&&(sens<100.0f)) //10
{
out = iku + 12;
offset=12;
}
else
if((sens>=100.0f)&&(sens<1000.0f)) //100
{
out = iku + 15;
offset=15;
}
else
if((sens >= 1000.0f)&&(sens<10000.0f)) //1000
{
out = iku + 18;
offset=18;
}
if((sens >= 10000.0f)&&(sens < 100000.0f)) //1000
{ {
out = iku; out = iku + 21;
offset=0;
}
else
if(/*sens >= 0.0011f && */sens <= 0.0020f) //0.002
{
out = (uint16_t)iku + 1;
offset=1;
}
else
if(/*sens >= 0.0021f && */sens <= 0.0050f) //0.005
{
out = (uint16_t)iku + 2;
offset=2;
}
else
if(/*sens >= 0.0051f && */sens <= 0.0100f) //0.01
{
out = (uint16_t)iku + 3;
offset=3;
}
else
if(/*sens >= 0.0101f && */sens <= 0.0200f) //0.02
{
out = (uint16_t)iku + 4;
offset=4;
}
else
if(/*sens >= 0.0201f && */sens <= 0.0500f) //0.05
{
out = (uint16_t)iku + 5;
offset=5;
}
else
if(/*sens >= 0.0501f && */sens <= 0.1000f) //0.1
{
out = (uint16_t)iku + 6;
offset=6;
}
else
if(/*sens >= 0.1001f && */sens <= 0.2000f) //0.2
{
out = (uint16_t)iku + 7;
offset=7;
}
else
if(/*sens >= 0.2001f && */sens <= 0.5000f) //0.5
{
out = (uint16_t)iku + 8;
offset=8;
}
else
if(/*sens >= 0.5001f && */sens <= 1.0000f) //1
{
out = (uint16_t)iku + 9;
offset=9;
}
else
if(/*sens >= 1.0001f && */sens <= 2.0000f) //2
{
out = (uint16_t)iku + 10;
offset=10;
}
else
if(/*sens >= 2.0001f && */sens <= 5.0000f) //5
{
out = (uint16_t)iku + 11;
offset=11;
}
else
if(/*sens >= 5.0001f && */sens <= 10.000f) //10
{
out = (uint16_t)iku + 12;
offset=12;
}
else
if(/*sens >= 10.001f && */sens <= 20.000f) //20
{
out = (uint16_t)iku + 13;
offset=13;
}
else
if(/*sens >= 20.001f && */sens <= 50.000f) //50
{
out = (uint16_t)iku + 14;
offset=14;
}
else
if(/*sens >= 50.001f && */sens <= 100.00f) //100
{
out = (uint16_t)iku + 15;
offset=15;
}
else
if(/*sens >= 100.01f && */sens <= 200.00f) //200
{
out = (uint16_t)iku + 16;
offset=16;
}
else
if(/*sens >= 200.01f && */sens <= 500.00f) //500
{
out = (uint16_t)iku + 17;
offset=17;
}
else
if(/*sens >= 500.01f && */sens <= 1000.0f) //1000
{
out = (uint16_t)iku + 18;
offset=18;
}
else
if(/*sens >= 1000.1f && */sens <= 2000.0f) //2000
{
out = (uint16_t)iku + 19;
offset=19;
}
else
if(/*sens >= 2000.1f && */sens <= 5000.0f) //2000
{
out = (uint16_t)iku + 20;
offset=20;
}
else
if(/*sens >= 5000.1f && */sens <= 10000.0f) //10000
{
out = (uint16_t)iku + 21;
offset=21; offset=21;
} }
else
if(/*sens >= 10001 && */sens <= 20000.0f) //20000
{
out = (uint16_t)iku + 22;
offset=22;
}
else
if(/*sens >= 20001 && */sens <= 50000.0f) //50000
{
out = (uint16_t)iku + 23;
offset=23;
}
else
if(/*sens >= 50001 && */sens <= 100000) //100000
{
out = (uint16_t)iku + 24;
offset=24;
}
// qDebug()<<"текущяя строка Ку по списку"<<out; // qDebug()<<"текущяя строка Ку по списку"<<out;
//qDebug()<<"смещение"<<offset; //qDebug()<<"смещение"<<offset;
//этот кусочек смотрит на чувствительность и //этот кусочек смотрит на чувствительность и
//пытается заполнить комбобобокс значениями строк соответствующим индексам КУ //пытается заполнить комбобобокс значениями строк соответствующим индексам КУ
//todo: добавить проверку verify Gain!!!!
ui->comboBoxOUT->clear(); ui->comboBoxOUT->clear();
uint16_t maxPlannedOut = offset+13; uint16_t maxPlannedOut = offset+13;
for (uint offsetToWork=offset;((offsetToWork<25)&&(offsetToWork<maxPlannedOut));offsetToWork++) { qDebug()<< "max gain"<< thisData.channel<< maxGain(thisData);
ui->comboBoxOUT->addItem(pOUT[(uint16_t)value][offsetToWork]); for (uint offsetToWork=offset;((offsetToWork<34)&&
(offsetToWork<maxPlannedOut)&&
((maxGain(thisData)+offset)>=offsetToWork)); //проверяем на максиимально возможный для данного сенса
offsetToWork++) {
ui->comboBoxOUT->addItem(pOUT[(uint16_t)value][offsetToWork]);
ui->comboBoxOUT->setCurrentIndex(iku); ui->comboBoxOUT->setCurrentIndex(iku);
//qDebug()<<"добавлено смещние"<<offsetToWork; //qDebug()<<"добавлено смещние"<<offsetToWork;
} }
//давай попробуем влоб запретить индексы 0-2 для IEPE
// Get the index of the value to disable
if(thisData.IIN==ICP){
//todo: сделать функцию для отключения пунктов меню
QModelIndex index0 = ui->comboBoxOUT->model()->index(0,0);
QVariant v0(0);
ui->comboBoxOUT->model()->setData( index0, v0, Qt::UserRole -1);
QModelIndex index1 = ui->comboBoxOUT->model()->index(1,0);
QVariant v1(0);
ui->comboBoxOUT->model()->setData( index1, v1, Qt::UserRole -1);
QModelIndex index2 = ui->comboBoxOUT->model()->index(2,0);
QVariant v2(0);
ui->comboBoxOUT->model()->setData( index2, v2, Qt::UserRole -1);
}
return QString::fromStdString(pOUT[(uint16_t)value][out]); return QString::fromStdString(pOUT[(uint16_t)value][out]);

View File

@ -24,6 +24,7 @@ public:
typeCHANNEL getWindowsChannel(); typeCHANNEL getWindowsChannel();
typeIKU VerifyGainA142(Set thisData); typeIKU VerifyGainA142(Set thisData);
QString DisplayIKUA142(float sens,typeIKU iku, typeVALUE value); QString DisplayIKUA142(float sens,typeIKU iku, typeVALUE value);
typeIKU maxGain(Set Data);
explicit windowChannel(QWidget *parent = nullptr); explicit windowChannel(QWidget *parent = nullptr);
~windowChannel(); ~windowChannel();