#include "windowchannel.h" #include "ui_windowchannel.h" #include "customlabel.h" //#include "customcombobox.h" windowChannel::windowChannel(QWidget *parent) : QWidget(parent), ui(new Ui::windowChannel) { ui->setupUi(this); //ДЕЛАЕМ ФОН ЧЕРНЫМ QPalette Pal(palette()); Pal.setColor(QPalette::Background, Qt::black); this->setAutoFillBackground(true); this->setPalette(Pal); this->show(); ui->comboBoxIIN->addItem("Заряд"); //индекс 0 ui->comboBoxIIN->addItem("IEPE");//индекс 1 ui->comboBoxVCH->addItem("0.2Гц"); //индекс 0 ui->comboBoxVCH->addItem("0.3Гц");//индекс 1 ui->comboBoxVCH->addItem("1Гц"); //индекс 2 ui->comboBoxVCH->addItem("2Гц");//индекс 3 ui->comboBoxVCH->addItem("10Гц"); //индекс 4 ui->comboBoxNCH->addItem("200Гц"); //индекс 0 ui->comboBoxNCH->addItem("500Гц");//индекс 1 ui->comboBoxNCH->addItem("1кГц"); //индекс 2 ui->comboBoxNCH->addItem("5кГц");//индекс 3 ui->comboBoxNCH->addItem("10кГц"); //индекс 4 ui->comboBoxNCH->addItem("20кГц");//индекс 5 ui->comboBoxNCH->addItem("50кГц"); //индекс 6 ui->comboBoxNCH->addItem("100кГц");//индекс 7 // QStringList stringList; // ui->comboBoxOUT->addItems(stringList); // ui->comboBoxOUT->insertItems(1,stringList); thisData.IFN=Lp200; //инициализирую по умолчанию, что бы когда прилетит первый сэнс не было вылета из за расчетов портированных с прибора thisData.IFV=Hp1; thisData.IIN=ICP; thisData.IKU=Ku1; thisData.SENS=1.0; thisData.VALUE=Accel; connect(ui->labelSENS,SIGNAL(clicked()),this,SLOT(sendSens()));//подключаю сигнал от кастом лэйбла для вызова процедуры смены чувствительности } windowChannel::~windowChannel() { delete ui; } void windowChannel::sendSens() { Set dataToSend=thisData; bool ok; dataToSend.SENS = QInputDialog::getDouble(this, tr("Введите значение"), tr("Введите значение чувствительности датчика"), thisData.SENS, 0.0001, 99999, 4, &ok, Qt::WindowFlags(), 1); if (ok){emit ReadyToSend(dataToSend, SENS);} if(thisData.IKU!=VerifyGainA142(thisData)){ thisData.IKU=VerifyGainA142(thisData); emit ReadyToSend(thisData, IKU); }; } void windowChannel::setSens(Set data) { if(data.channel==this->channel){ thisData.SENS=data.SENS; reDraw(); } } void windowChannel::setState(Set data) { if(data.channel==this->channel){ thisData.IKU=data.IKU; thisData.IIN=data.IIN; thisData.IFV=data.IFV; thisData.IFN=data.IFN; thisData.VALUE=data.VALUE; reDraw(); } } void windowChannel::reDraw() { if(thisData.SENS<100000&&thisData.SENS>=10000) { ui->labelSENS->setText(QString::number(thisData.SENS,'f', 0));} else if(thisData.SENS<10000&&thisData.SENS>=1000) { ui->labelSENS->setText(QString::number(thisData.SENS,'f', 1));} else if(thisData.SENS<1000&&thisData.SENS>=100) {ui->labelSENS->setText(QString::number(thisData.SENS,'f', 2));} else if(thisData.SENS<100&&thisData.SENS>=10){ui->labelSENS->setText(QString::number(thisData.SENS,'f', 3));} else {ui->labelSENS->setText(QString::number(thisData.SENS,'f', 4));} //выставляем значение комбобоксов switch (thisData.IIN) { case ICP:{ ui->comboBoxIIN->setCurrentIndex(1); break; } case CHARGE:{ ui->comboBoxIIN->setCurrentIndex(0); break; } }//end switch switch (thisData.IFV) { case Hp0_2:{ ui->comboBoxVCH->setCurrentIndex(0); break; } case Hp0_3:{ ui->comboBoxVCH->setCurrentIndex(1); break; } case Hp1:{ ui->comboBoxVCH->setCurrentIndex(2); break; } case Hp2:{ ui->comboBoxVCH->setCurrentIndex(3); break; } case Hp10:{ ui->comboBoxVCH->setCurrentIndex(4); break; } }//end switch switch (thisData.IFN) { case Lp200:{ ui->comboBoxNCH->setCurrentIndex(0); break; } case Lp500:{ ui->comboBoxNCH->setCurrentIndex(1); break; } case Lp1000:{ ui->comboBoxNCH->setCurrentIndex(2); break; } case Lp5000:{ ui->comboBoxNCH->setCurrentIndex(3); break; } case Lp10000:{ ui->comboBoxNCH->setCurrentIndex(4); break; } case Lp20000:{ ui->comboBoxNCH->setCurrentIndex(5); break; } case Lp50000:{ ui->comboBoxNCH->setCurrentIndex(6); break; } case Lp100000:{ ui->comboBoxNCH->setCurrentIndex(7); break; } }//end switch switch (thisData.VALUE) { case Accel:{ ui->comboBoxUNIT->setCurrentIndex(0); break; } case Nython:{ ui->comboBoxUNIT->setCurrentIndex(1); break; } case Pascal:{ ui->comboBoxUNIT->setCurrentIndex(2); break; } }//end switch ui->labelOUT->setText(DisplayIKUA142(thisData.SENS, thisData.IKU, thisData.VALUE)); showValue(); } void windowChannel::hideValue() { ui->comboBoxIIN->hide(); ui->comboBoxNCH->hide(); ui->comboBoxOUT->hide(); ui->comboBoxVCH->hide(); ui->comboBoxIIN->hide(); ui->comboBoxUNIT->hide(); ui->labelSENS->hide(); } void windowChannel::showValue() { ui->comboBoxIIN->show(); ui->comboBoxNCH->show(); ui->comboBoxOUT->show(); ui->comboBoxVCH->show(); ui->comboBoxIIN->show(); ui->comboBoxUNIT->show(); ui->labelSENS->show(); } void windowChannel::setWindowsChannel(typeCHANNEL channel) { this->channel = channel; thisData.channel=channel; ui->labelChanel->setNum((int)(channel+1)); //потому что енам с 0 } typeCHANNEL windowChannel::getWindowsChannel() { return channel; } typeIKU windowChannel::VerifyGainA142(Set thisData) //сверяет гейн на допусимый прибора при установке сенс { if(thisData.SENS <= 0.0010f) //0.001 { if(thisData.IKU > Ku1000) { thisData.IKU = Ku1000; } } else if(/*sens >= 0.0011f && */thisData.SENS <= 10.000f) //0.002 { if(thisData.IKU > Ku1000) { thisData.IKU = Ku1000; } } else if(/*sens >= 10.001f && */thisData.SENS <= 20.000f) //20 { if(thisData.IKU > Ku500) { thisData.IKU = Ku500; } } else if(/*sens >= 20.001f && */thisData.SENS <= 50.000f) //50 { if(thisData.IKU > Ku200) { thisData.IKU = Ku200; } } else if(/*sens >= 50.001f && */thisData.SENS <= 100.00f) //100 { if(thisData.IKU > Ku100) { thisData.IKU = Ku100; } } else if(/*sens >= 100.01f && */thisData.SENS <= 200.00f) //200 { if(thisData.IKU > Ku50) { thisData.IKU = Ku50; } } else if(/*sens >= 200.01f && */thisData.SENS <= 500.00f) //500 { if(thisData.IKU > Ku20) { thisData.IKU = Ku20; } } else if(/*sens >= 500.01f && */thisData.SENS <= 1000.0f) //1000 { if(thisData.IKU > Ku10) { thisData.IKU = Ku10; } } else if(/*sens >= 1000.01f && */thisData.SENS <= 2000.0f) //2000 { if(thisData.IKU > Ku5) { thisData.IKU = Ku5; } } else if(/*sens >= 2000.01f && */thisData.SENS <= 5000.0f) //5000 { if(thisData.IKU > Ku2) { thisData.IKU = Ku2; } } else if(/*sens >= 5000.01f && */thisData.SENS <= 10000.0f) //10000 { if(thisData.IKU > Ku1) { thisData.IKU = Ku1; } } else if(/*sens >= 10001.0f && */thisData.SENS <= 20000.0f) //20000 { if(thisData.IKU > Ku0_5) { thisData.IKU = Ku0_5; } } else if(/*sens >= 20001.0f && */thisData.SENS <= 50000.0f) //50000 { if(thisData.IKU > Ku0_2) { thisData.IKU = Ku0_2; } } else if(thisData.SENS < 100000.0f) //99999 { if(thisData.IKU > Ku0_1) { thisData.IKU = Ku0_1; } } return thisData.IKU; } QString windowChannel::DisplayIKUA142(float sens, typeIKU iku ,typeVALUE value) {uint out; uint offset; //вбычку обьявлю тут const char *pOUT[3][25] = { { "0.0001 мВ/м/c2", "0.0002 мВ/м/c2", "0.0005 мВ/м/c2", "0.001 мВ/м/c2", "0.002 мВ/м/c2", "0.005 мВ/м/c2", "0.01 мВ/м/c2", "0.02 мВ/м/c2", "0.05 мВ/м/c2", "0.1 мВ/м/c2", "0.2 мВ/м/c2", "0.5 мВ/м/c2", "1 мВ/м/c2", "2 мВ/м/c2", "5 мВ/м/c2", "10 мВ/м/c2", "20 мВ/м/c2", "50 мВ/м/c2", "100 мВ/м/c2", "200 мВ/м/c2", "500 мВ/м/c2", "1 В/м/c2", "2 В/м/c2", "5 В/м/c2", "10 В/м/c2" }, { "0.0001 мВ/Па", "0.0002 мВ/Па", "0.0005 мВ/Па", "0.001 мВ/Па", "0.002 мВ/Па", "0.005 мВ/Па", "0.01 мВ/Па", "0.02 мВ/Па", "0.05 мВ/Па", "0.1 мВ/Па", "0.2 мВ/Па", "0.5 мВ/Па", "1 мВ/Па", "2 мВ/Па", "5 мВ/Па", "10 мВ/Па", "20 мВ/Па", "50 мВ/Па", "100 мВ/Па", "200 мВ/Па", "500 мВ/Па", "1 В/Па", "2 В/Па", "5 В/Па", "10 В/Па" }, { "0.0001 мВ/Н", "0.0002 мВ/Н", "0.0005 мВ/Н", "0.001 мВ/Н", "0.002 мВ/Н", "0.005 мВ/Н", "0.01 мВ/Н", "0.02 мВ/Н", "0.05 мВ/Н", "0.1 мВ/Н", "0.2 мВ/Н", "0.5 мВ/Н", "1 мВ/Н", "2 мВ/Н", "5 мВ/Н", "10 мВ/Н", "20 мВ/Н", "50 мВ/Н", "100 мВ/Н", "200 мВ/Н", "500 мВ/Н", "1 В/Н", "2 В/Н", "5 В/Н", "10 В/Н" } }; if(sens <= 0.0010f) //0.001 { out = iku; 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; } 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()<<"текущяя строка Ку по списку"<comboBoxOUT->clear(); uint16_t maxPlannedOut = offset+13; for (uint offsetToWork=offset;((offsetToWork<25)&&(offsetToWorkcomboBoxOUT->addItem(pOUT[(uint16_t)value][offsetToWork]); ui->comboBoxOUT->setCurrentIndex(iku); //qDebug()<<"добавлено смещние"<comboBoxUNIT->currentIndex(); ui->comboBoxUNIT->clear(); if(index==0) {thisData.IIN=CHARGE; ui->comboBoxUNIT->addItem("пКл/м/с2"); ui->comboBoxUNIT->addItem("пКл/Н"); ui->comboBoxUNIT->addItem("пКл/Па"); //ui->comboBoxUNIT->setCurrentIndex(currentIndex); } else {thisData.IIN=ICP; ui->comboBoxUNIT->addItem("мВ/м/c2"); ui->comboBoxUNIT->addItem("мВ/Н"); ui->comboBoxUNIT->addItem("мВ/Па"); // ui->comboBoxUNIT->setCurrentIndex(currentIndex); } emit ReadyToSend(thisData, IIN); } void windowChannel::on_comboBoxVCH_activated(int index) { if(index==0) thisData.IFV=Hp0_2; else if(index==1) thisData.IFV=Hp0_3; else if(index==2) thisData.IFV=Hp1; else if(index==3) thisData.IFV=Hp2; else if(index==4) thisData.IFV=Hp10; emit ReadyToSend(thisData, IFV); } void windowChannel::on_comboBoxNCH_activated(int index) { if(index==0) thisData.IFN=Lp200; else if(index==1) thisData.IFN=Lp500; else if(index==2) thisData.IFN=Lp1000; else if(index==3) thisData.IFN=Lp5000; else if(index==4) thisData.IFN=Lp10000; else if(index==5) thisData.IFN=Lp20000; else if(index==6) thisData.IFN=Lp50000; else if(index==7) thisData.IFN=Lp100000; emit ReadyToSend(thisData, IFN); } void windowChannel::on_comboBoxUNIT_currentIndexChanged(int index) { } void windowChannel::on_comboBoxUNIT_activated(int index) { if(index==0) thisData.VALUE=Accel; else if(index==1) thisData.VALUE=Nython; else if(index==2) thisData.VALUE=Pascal; emit ReadyToSend(thisData, VAL); } void windowChannel::on_comboBoxIIN_activated(int index) { } QStringList windowChannel::avalibleKuList(Set thisData) { QStringList result; uint startIndex; //вбычку обьявлю тут const char *pOUT[3][25] = { { "0.0001 мВ/м/c2", "0.0002 мВ/м/c2", "0.0005 мВ/м/c2", "0.001 мВ/м/c2", "0.002 мВ/м/c2", "0.005 мВ/м/c2", "0.01 мВ/м/c2", "0.02 мВ/м/c2", "0.05 мВ/м/c2", "0.1 мВ/м/c2", "0.2 мВ/м/c2", "0.5 мВ/м/c2", "1 мВ/м/c2", "2 мВ/м/c2", "5 мВ/м/c2", "10 мВ/м/c2", "20 мВ/м/c2", "50 мВ/м/c2", "100 мВ/м/c2", "200 мВ/м/c2", "500 мВ/м/c2", "1 В/м/c2", "2 В/м/c2", "5 В/м/c2", "10 В/м/c2" }, { "0.0001 мВ/Па", "0.0002 мВ/Па", "0.0005 мВ/Па", "0.001 мВ/Па", "0.002 мВ/Па", "0.005 мВ/Па", "0.01 мВ/Па", "0.02 мВ/Па", "0.05 мВ/Па", "0.1 мВ/Па", "0.2 мВ/Па", "0.5 мВ/Па", "1 мВ/Па", "2 мВ/Па", "5 мВ/Па", "10 мВ/Па", "20 мВ/Па", "50 мВ/Па", "100 мВ/Па", "200 мВ/Па", "500 мВ/Па", "1 В/Па", "2 В/Па", "5 В/Па", "10 В/Па" }, { "0.0001 мВ/Н", "0.0002 мВ/Н", "0.0005 мВ/Н", "0.001 мВ/Н", "0.002 мВ/Н", "0.005 мВ/Н", "0.01 мВ/Н", "0.02 мВ/Н", "0.05 мВ/Н", "0.1 мВ/Н", "0.2 мВ/Н", "0.5 мВ/Н", "1 мВ/Н", "2 мВ/Н", "5 мВ/Н", "10 мВ/Н", "20 мВ/Н", "50 мВ/Н", "100 мВ/Н", "200 мВ/Н", "500 мВ/Н", "1 В/Н", "2 В/Н", "5 В/Н", "10 В/Н" } }; if(thisData.SENS <= 0.0010f) //0.001 { startIndex = thisData.IKU; } else if(/*thisData.SENS >= 0.0011f && */thisData.SENS <= 0.0020f) //0.002 { startIndex = (uint16_t)thisData.IKU + 1; } else if(/*thisData.SENS >= 0.0021f && */thisData.SENS <= 0.0050f) //0.005 { startIndex = (uint16_t)thisData.IKU + 2; } else if(/*thisData.SENS >= 0.0051f && */thisData.SENS <= 0.0100f) //0.01 { startIndex = (uint16_t)thisData.IKU + 3; } else if(/*thisData.SENS >= 0.0101f && */thisData.SENS <= 0.0200f) //0.02 { startIndex = (uint16_t)thisData.IKU + 4; } else if(/*thisData.SENS >= 0.0201f && */thisData.SENS <= 0.0500f) //0.05 { startIndex = (uint16_t)thisData.IKU + 5; } else if(/*thisData.SENS >= 0.0501f && */thisData.SENS <= 0.1000f) //0.1 { startIndex = (uint16_t)thisData.IKU + 6; } else if(/*thisData.SENS >= 0.1001f && */thisData.SENS <= 0.2000f) //0.2 { startIndex = (uint16_t)thisData.IKU + 7; } else if(/*thisData.SENS >= 0.2001f && */thisData.SENS <= 0.5000f) //0.5 { startIndex = (uint16_t)thisData.IKU + 8; } else if(/*thisData.SENS >= 0.5001f && */thisData.SENS <= 1.0000f) //1 { startIndex = (uint16_t)thisData.IKU + 9; } else if(/*thisData.SENS >= 1.0001f && */thisData.SENS <= 2.0000f) //2 { startIndex = (uint16_t)thisData.IKU + 10; } else if(/*thisData.SENS >= 2.0001f && */thisData.SENS <= 5.0000f) //5 { startIndex = (uint16_t)thisData.IKU + 11; } else if(/*thisData.SENS >= 5.0001f && */thisData.SENS <= 10.000f) //10 { startIndex = (uint16_t)thisData.IKU + 12; } else if(/*thisData.SENS >= 10.001f && */thisData.SENS <= 20.000f) //20 { startIndex = (uint16_t)thisData.IKU + 13; } else if(/*thisData.SENS >= 20.001f && */thisData.SENS <= 50.000f) //50 { startIndex = (uint16_t)thisData.IKU + 14; } else if(/*thisData.SENS >= 50.001f && */thisData.SENS <= 100.00f) //100 { startIndex = (uint16_t)thisData.IKU + 15; } else if(/*thisData.SENS >= 100.01f && */thisData.SENS <= 200.00f) //200 { startIndex = (uint16_t)thisData.IKU + 16; } else if(/*thisData.SENS >= 200.01f && */thisData.SENS <= 500.00f) //500 { startIndex = (uint16_t)thisData.IKU + 17; } else if(/*thisData.SENS >= 500.01f && */thisData.SENS <= 1000.0f) //1000 { startIndex = (uint16_t)thisData.IKU + 18; } else if(/*thisData.SENS >= 1000.1f && */thisData.SENS <= 2000.0f) //2000 { startIndex = (uint16_t)thisData.IKU + 19; } else if(/*thisData.SENS >= 2000.1f && */thisData.SENS <= 5000.0f) //2000 { startIndex = (uint16_t)thisData.IKU + 20; } else if(/*thisData.SENS >= 5000.1f && */thisData.SENS <= 10000.0f) //10000 { startIndex = (uint16_t)thisData.IKU + 21; } else if(/*thisData.SENS >= 10001 && */thisData.SENS <= 20000.0f) //20000 { startIndex = (uint16_t)thisData.IKU + 22; } else if(/*thisData.SENS >= 20001 && */thisData.SENS <= 50000.0f) //50000 { startIndex = (uint16_t)thisData.IKU + 23; } else if(/*thisData.SENS >= 50001 && */thisData.SENS <= 100000) //100000 { startIndex = (uint16_t)thisData.IKU + 24; } qDebug()<<"стартовый индекс для расчета "<