#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 = QPalette(); // set black background // Qt::black / "#000000" / "black" pal.setColor(QPalette::Window, Qt::black); this->setAutoFillBackground(true); this->setPalette(pal); this->show(); //прменяю цвета так, потому что когда окно не активно цвета становятся черным ui->label_2->setStyleSheet("QLabel { color : white;} "); ui->label_3->setStyleSheet("QLabel { color : white;} "); ui->label_4->setStyleSheet("QLabel { color : white;} "); ui->label_6->setStyleSheet("QLabel { color : white;} "); ui->labelSENS->setStyleSheet("QLabel { color : #ffff00;} "); ui->labelUNITS->setStyleSheet("QLabel { color : #ffff00;} "); ui->labelIIN->setStyleSheet("QLabel { color : #55ffff;} "); 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; hideValue(); } 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));} if(thisData.IIN==CHARGE&&thisData.VALUE==Accel) ui->labelUNITS->setText("пКл/м/с2"); if(thisData.IIN==1&&thisData.VALUE==Accel) ui->labelUNITS->setText("мВ/м/с2"); if(thisData.IIN==CHARGE&thisData.VALUE==Velocity) ui->labelUNITS->setText("пКл/мм/с"); if(thisData.IIN==ICP&&thisData.VALUE==Velocity) ui->labelUNITS->setText("мВ/мм/с"); if(thisData.IIN==CHARGE&&thisData.VALUE==Pascal) ui->labelUNITS->setText("пКл/Па"); if(thisData.IIN==ICP&&thisData.VALUE==Pascal) ui->labelUNITS->setText("мВ/Па"); if(thisData.IIN==CHARGE&&thisData.VALUE==k_Pascal) ui->labelUNITS->setText("пКл/кПа"); if(thisData.IIN==ICP&&thisData.VALUE==k_Pascal) ui->labelUNITS->setText("мВ/кПа"); if(thisData.IIN==CHARGE&&thisData.VALUE==M_Pascal) ui->labelUNITS->setText("пКл/МПа"); if(thisData.IIN==ICP&&thisData.VALUE==M_Pascal) ui->labelUNITS->setText("мВ/МПа"); if(thisData.IIN==CHARGE&&thisData.VALUE==Nython) ui->labelUNITS->setText("пКл/Н"); if(thisData.IIN==ICP&&thisData.VALUE==Nython) ui->labelUNITS->setText("мВ/Н"); if(thisData.IIN==CHARGE&&thisData.VALUE==k_Nuthon) ui->labelUNITS->setText("пКл/кН"); if(thisData.IIN==ICP&&thisData.VALUE==k_Nuthon) ui->labelUNITS->setText("мВ/кН"); if(thisData.IIN==CHARGE&&thisData.VALUE==pQ_mV) ui->labelUNITS->setText("пКл/мВ"); if(thisData.IIN==ICP&&thisData.VALUE==pQ_mV) ui->labelUNITS->setText("мВ/мВ"); //выставляем значение комбобоксов switch (thisData.IIN) { case ICP:{ ui->labelIIN->setText("IEPE"); break; } case CHARGE:{ ui->labelIIN->setText("PE"); 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 ui->comboBoxOUT->setCurrentText(DisplayIKUA142(thisData.SENS, thisData.IKU, thisData.VALUE)); showValue(); } void windowChannel::hideValue() { ui->comboBoxNCH->hide(); ui->comboBoxOUT->hide(); ui->comboBoxVCH->hide(); ui->labelSENS->hide(); ui->labelIIN->hide(); ui->labelUNITS->hide(); } void windowChannel::showValue() { ui->comboBoxNCH->show(); ui->comboBoxOUT->show(); ui->comboBoxVCH->show(); ui->labelSENS->show(); ui->labelIIN->show(); ui->labelUNITS->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::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(Data.SENS <= 0.0010f) //0.001 { if(Data.IKU > Ku1000) { Data.IKU = Ku1000; } } else if(Data.SENS <= 10.000f) //0.002 { if(Data.IKU > Ku1000) { Data.IKU = Ku1000; } } /* else if(Data.SENS <= 20.000f) //20 { if(Data.IKU > Ku500) { Data.IKU = Ku500; } } else if(Data.SENS <= 50.000f) //50 { if(Data.IKU > Ku200) { Data.IKU = Ku200; } } */ else if(Data.SENS <= 100.00f) //100 { if(Data.IKU > Ku100) { Data.IKU = Ku100; } } /* else if(Data.SENS <= 200.00f) //200 { if(Data.IKU > Ku50) { Data.IKU = Ku50; } } else if(Data.SENS <= 500.00f) //500 { if(Data.IKU > Ku20) { Data.IKU = Ku20; } } */ else if(Data.SENS <= 1000.0f) //1000 { if(Data.IKU > Ku10) { Data.IKU = Ku10; } } /* else if(Data.SENS <= 2000.0f) //2000 { if(Data.IKU > Ku5) { Data.IKU = Ku5; } } else if(Data.SENS <= 5000.0f) //5000 { if(Data.IKU > Ku2) { Data.IKU = Ku2; } } */ else if(Data.SENS <= 10000.0f) //10000 { if(Data.IKU > Ku1) { Data.IKU = Ku1; } } /* else if(Data.SENS <= 20000.0f) //20000 { if(Data.IKU > Ku0_5) { Data.IKU = Ku0_5; } } else if(Data.SENS <= 50000.0f) //50000 { if(Data.IKU > Ku0_2) { Data.IKU = Ku0_2; } } */ else if(Data.SENS < 100000.0f) //99999 { if(Data.IKU > Ku0_1) { Data.IKU = Ku0_1; } } return Data.IKU; } QString windowChannel::DisplayIKUA142(float sens, typeIKU iku ,typeVALUE value) {uint out; uint offset; //вбычку обьявлю тут const char *pOUTUNITS[20]={ "В/м/c2", "В/мм/с", "В/Па", "В/кПа", "В/МПа", "В/Н", "В/кН", "В/мВ", "В/пКл", }; const char *pOUT[35] = { "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 ", "20 ", "50 ", "100 ", "200 ", "500 ", "1000 ", "2000 ", "5000 ", "10000 ", }; 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 + 21; offset=21; } // qDebug()<<"текущяя строка Ку по списку"<comboBoxOUT->clear(); uint16_t maxPlannedOut = offset+13; //qDebug()<< "max gain"<< thisData.channel<< maxGain(thisData); for (uint offsetToWork=offset;((offsetToWork<34) &&(offsetToWork=offsetToWork)) ); //проверяем на максиимально возможный для данного сенса offsetToWork++) { QString stringToComboBox; stringToComboBox.append(pOUT[offsetToWork]); stringToComboBox.append(pOUTUNITS[thisData.VALUE]); ui->comboBoxOUT->addItem(stringToComboBox); // ui->comboBoxOUT->addItem(pOUT[(uint16_t)value][offsetToWork]); ui->comboBoxOUT->setCurrentIndex(iku); //qDebug()<<"добавлено смещние"<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[out]); } 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); } 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()<<"стартовый индекс для расчета "<