#include #include "mguangyingpinwidget.h" #include "ui_mguangyingpinwidget.h" #include #include "globaldefine.h" mGuangYingPinWidget::mGuangYingPinWidget(QWidget *parent) : QWidget(parent), ui(new Ui::mGuangYingPinWidget) { setAutoFillBackground(true); QPalette pal; pal.setBrush(QPalette::Window, QColor(0xeeeeee)); setPalette(pal); ui->setupUi(this); ui->pushButton1->setProperty("ssType", "progManageTool"); ui->pushButton2->setProperty("ssType", "progManageTool"); ui->pushButton3->setProperty("ssType", "progManageTool"); ui->pushButton4->setProperty("ssType", "progManageTool"); ui->pushButton5->setProperty("ssType", "progManageTool"); ui->pushButton6->setProperty("ssType", "progManageTool"); ui->pushButton7->setProperty("ssType", "progManageTool"); ui->pushButton8->setProperty("ssType", "progManageTool"); ui->pushButton9->setProperty("ssType", "progManageTool"); ui->pushButton10->setProperty("ssType", "progManageTool"); ui->pushButton11->setProperty("ssType", "progManageTool"); ui->pushButton12->setProperty("ssType", "progManageTool"); ui->pushButton13->setProperty("ssType", "progManageTool"); ui->pushButton14->setProperty("ssType", "progManageTool"); ui->pushButton15->setProperty("ssType", "progManageTool"); ui->pushButton16->setProperty("ssType", "progManageTool"); ui->pushButton17->setProperty("ssType", "progManageTool"); ui->pushButton18->setProperty("ssType", "progManageTool"); ui->pushButton19->setProperty("ssType", "progManageTool"); ui->pushButton20->setProperty("ssType", "progManageTool"); ui->pushButtonSend->setProperty("ssType", "progManageTool"); ui->pushButtonPrevious->setProperty("ssType", "progManageTool"); ui->pushButtonPrevious->setIcon(QIcon(":/res/previous.png")); ui->pushButtonNext->setProperty("ssType", "progManageTool"); ui->pushButtonNext->setIcon(QIcon(":/res/next.png")); ui->pushButtonLoop->setProperty("ssType", "progManageTool"); ui->pushButtonLoop->setIcon(QIcon(":/res/loop.png")); ui->pushButtonMainOpen->setProperty("ssType", "progManageTool"); ui->pushButtonAuxOpen->setProperty("ssType", "progManageTool"); ui->pushButtonBrightnessSet->setProperty("ssType", "progManageTool"); ui->pushButtonScreenOn->setProperty("ssType", "progManageTool"); ui->pushButtonScreenOff->setProperty("ssType", "progManageTool"); ui->pushButtonRefresh->setProperty("ssType", "progManageTool"); ui->pushButtonClearLog->setProperty("ssType", "progManageTool"); m_recvNum = 0; m_sendNum = 0; sPortThread = new TA_SerialThread; sPortThread->SearchPort(); for(uint8_t i = 0;i < sPortThread->portCnt;i++) { ui->comboBox_SPortName->addItem(sPortThread->m_arrSerial[i].portName()); ui->comboBox_SPortNameAux->addItem(sPortThread->m_arrSerial[i].portName()); } //0:1200 1:2400 2:4800 3:9600 4:19200 5:38400 6:57600 7:115200 if(ui->comboBox_SPortName->count()>=1) { ui->comboBox_SPortBaud->setCurrentIndex(3); //0:5 1:6 2:7 3:8 ui->comboBox_SPortDataBit->setCurrentIndex(3); //0:no p 2:e p 3:o p 4:s p 5:m p ui->comboBox_SPortOEBit->setCurrentIndex(0); //0:1 1:2 2:1.5 ui->comboBox_SPortStopBit->setCurrentIndex(0); ui->graphicsView_ComStatus->setStyleSheet("background-color: rgb(255, 0, 0);"); ui->label_ComStatus->setText(tr("State:Off")); ui->comboBox_SPortBaudAux->setCurrentIndex(3); ui->comboBox_SPortDataBitAux->setCurrentIndex(3); ui->comboBox_SPortOEBitAux->setCurrentIndex(0); ui->comboBox_SPortStopBitAux->setCurrentIndex(0); ui->graphicsView_ComStatusAux->setStyleSheet("background-color: rgb(255, 0, 0);"); ui->label_ComStatusAux->setText(tr("State:Off")); if(ui->comboBox_SPortName->count()>1) { ui->comboBox_SPortNameAux->setCurrentIndex(1); } } ui->lineEdit_ResendTimes->setValidator(new QIntValidator(1,1000,this)); ui->lineEdit_DelayMill->setValidator(new QIntValidator(1,1000,this)); connect(ui->pushButtonMainOpen, SIGNAL(clicked(bool)), this, SLOT(MWOnoffPort())); connect(ui->pushButtonAuxOpen, SIGNAL(clicked(bool)), this, SLOT(MWOnoffPortAux())); connect(ui->pushButton1, SIGNAL(clicked()), this, SLOT(OnAnsyProgram1())); connect(ui->pushButton2, SIGNAL(clicked()), this, SLOT(OnAnsyProgram2())); connect(ui->pushButton3, SIGNAL(clicked()), this, SLOT(OnAnsyProgram3())); connect(ui->pushButton4, SIGNAL(clicked()), this, SLOT(OnAnsyProgram4())); connect(ui->pushButton5, SIGNAL(clicked()), this, SLOT(OnAnsyProgram5())); connect(ui->pushButton6, SIGNAL(clicked()), this, SLOT(OnAnsyProgram6())); connect(ui->pushButton7, SIGNAL(clicked()), this, SLOT(OnAnsyProgram7())); connect(ui->pushButton8, SIGNAL(clicked()), this, SLOT(OnAnsyProgram8())); connect(ui->pushButton9, SIGNAL(clicked()), this, SLOT(OnAnsyProgram9())); connect(ui->pushButton10, SIGNAL(clicked()), this, SLOT(OnAnsyProgram10())); connect(ui->pushButton11, SIGNAL(clicked()), this, SLOT(OnAnsyProgram11())); connect(ui->pushButton12, SIGNAL(clicked()), this, SLOT(OnAnsyProgram12())); connect(ui->pushButton13, SIGNAL(clicked()), this, SLOT(OnAnsyProgram13())); connect(ui->pushButton14, SIGNAL(clicked()), this, SLOT(OnAnsyProgram14())); connect(ui->pushButton15, SIGNAL(clicked()), this, SLOT(OnAnsyProgram15())); connect(ui->pushButton16, SIGNAL(clicked()), this, SLOT(OnAnsyProgram16())); connect(ui->pushButton17, SIGNAL(clicked()), this, SLOT(OnAnsyProgram17())); connect(ui->pushButton18, SIGNAL(clicked()), this, SLOT(OnAnsyProgram18())); connect(ui->pushButton19, SIGNAL(clicked()), this, SLOT(OnAnsyProgram19())); connect(ui->pushButton20, SIGNAL(clicked()), this, SLOT(OnAnsyProgram20())); connect(ui->pushButtonClearLog, SIGNAL(clicked()), this, SLOT(OnClearLog())); connect(ui->pushButtonSend, SIGNAL(clicked()), this, SLOT(OnAnsyProgramCustom())); connect(ui->pushButtonNext, SIGNAL(clicked()), this, SLOT(OnAnsyProgramNext())); connect(ui->pushButtonPrevious, SIGNAL(clicked()), this, SLOT(OnAnsyProgramPrevious())); connect(ui->pushButtonLoop, SIGNAL(clicked()), this, SLOT(OnAnsyProgramLoop())); connect(ui->pushButtonBrightnessSet, SIGNAL(clicked()), this, SLOT(OnBrightnessSet())); connect(ui->pushButtonScreenOn, SIGNAL(clicked()), this, SLOT(OnScreenOn())); connect(ui->pushButtonScreenOff, SIGNAL(clicked()), this, SLOT(OnScreenOff())); connect(ui->spinBox_ProgramIndex, SIGNAL(valueChanged(int)), this, SLOT(OnAnsyProgramCustomByChanged(int))); connect(ui->spinBox_BrightnessValue, SIGNAL(valueChanged(int)), this, SLOT(OnBrightnessSetByChanged(int))); connect(ui->pushButtonRefresh, SIGNAL(clicked()), this, SLOT(OnRefresh())); } mGuangYingPinWidget::~mGuangYingPinWidget(){ delete ui; } void mGuangYingPinWidget::changeEvent(QEvent *event) { QWidget::changeEvent(event); if(event->type() == QEvent::LanguageChange) transUi(); } void mGuangYingPinWidget::transUi() { ui->pushButtonSend->setText(tr("Send")); ui->pushButtonMainOpen->setText(tr("Open")); ui->pushButtonAuxOpen->setText(tr("Open")); ui->pushButtonBrightnessSet->setText(tr("Set")); ui->pushButtonScreenOn->setText(tr("Screen On")); ui->pushButtonScreenOff->setText(tr("Screen Off")); ui->pushButtonRefresh->setText(tr("Refresh")); ui->groupBoxMain->setTitle(tr("Main")); ui->groupBoxAux->setTitle(tr("Auxiliary")); ui->groupBoxParam->setTitle(tr("Param configuration")); ui->label_PortName->setText(tr("PortName")); ui->label_BaudRate->setText(tr("BaudRate")); ui->label_DataBit->setText(tr("DataBit")); ui->label_OEBit->setText(tr("OEBit")); ui->label_StopBit->setText(tr("StopBit")); ui->label_PortNameAux->setText(tr("PortName")); ui->label_BaudRateAux->setText(tr("BaudRate")); ui->label_DataBitAux->setText(tr("DataBit")); ui->label_OEBitAux->setText(tr("OEBit")); ui->label_StopBitAux->setText(tr("StopBit")); ui->label_ResendTimes->setText(tr("Resend times")); ui->label_DelayMill->setText(tr("Delay millsecond")); ui->label_ProgramNum->setText(tr("Program number")); ui->label_BrightNess->setText(tr("Brightness")); ui->label_ComStatus->setText(tr("State:Off")); ui->label_ComStatusAux->setText(tr("State:Off")); ui->pushButtonClearLog->setText(tr("Clear")); ui->checkBoxDebug->setText(tr("Debug")); ui->groupBox_Network->setTitle(tr("Network")); ui->groupBox_com->setTitle(tr("Com")); } void mGuangYingPinWidget::OnAnsyProgram1(void) { MACRO_ANSY_PROGRAM(1) } void mGuangYingPinWidget::OnAnsyProgram2(void) { MACRO_ANSY_PROGRAM(2) }void mGuangYingPinWidget::OnAnsyProgram3(void) { MACRO_ANSY_PROGRAM(3) }void mGuangYingPinWidget::OnAnsyProgram4(void) { MACRO_ANSY_PROGRAM(4) }void mGuangYingPinWidget::OnAnsyProgram5(void) { MACRO_ANSY_PROGRAM(5) }void mGuangYingPinWidget::OnAnsyProgram6(void) { MACRO_ANSY_PROGRAM(6) }void mGuangYingPinWidget::OnAnsyProgram7(void) { MACRO_ANSY_PROGRAM(7) }void mGuangYingPinWidget::OnAnsyProgram8(void) { MACRO_ANSY_PROGRAM(8) }void mGuangYingPinWidget::OnAnsyProgram9(void) { MACRO_ANSY_PROGRAM(9) }void mGuangYingPinWidget::OnAnsyProgram10(void) { MACRO_ANSY_PROGRAM(10) }void mGuangYingPinWidget::OnAnsyProgram11(void) { MACRO_ANSY_PROGRAM(11) }void mGuangYingPinWidget::OnAnsyProgram12(void) { MACRO_ANSY_PROGRAM(12) }void mGuangYingPinWidget::OnAnsyProgram13(void) { MACRO_ANSY_PROGRAM(13) }void mGuangYingPinWidget::OnAnsyProgram14(void) { MACRO_ANSY_PROGRAM(14) }void mGuangYingPinWidget::OnAnsyProgram15(void) { MACRO_ANSY_PROGRAM(15) }void mGuangYingPinWidget::OnAnsyProgram16(void) { MACRO_ANSY_PROGRAM(16) }void mGuangYingPinWidget::OnAnsyProgram17(void) { MACRO_ANSY_PROGRAM(17) }void mGuangYingPinWidget::OnAnsyProgram18(void) { MACRO_ANSY_PROGRAM(18) }void mGuangYingPinWidget::OnAnsyProgram19(void) { MACRO_ANSY_PROGRAM(19) } void mGuangYingPinWidget::OnAnsyProgram20(void) { MACRO_ANSY_PROGRAM(20) } void mGuangYingPinWidget::OnClearLog(void) { ui->textEditReadBuf->clear(); } void mGuangYingPinWidget::OnAnsyProgramCustom(void) { int itemp=ui->spinBox_ProgramIndex->value(); MACRO_ANSY_PROGRAM(itemp) if(ui->checkBoxDebug->isChecked()) { ui->textEditReadBuf->append("OnAnsyProgramCustom"); } } void mGuangYingPinWidget::OnAnsyProgramCustomByChanged(int icurIndex) { MACRO_ANSY_PROGRAM(icurIndex) } void mGuangYingPinWidget::OnBrightnessSetByChanged(int icurValue) { if(ui->pushButtonMainOpen->text()==tr("Close")) Set_Brightness_buf_and_send(ui->comboBox_SPortName->currentIndex(),icurValue); if(ui->pushButtonAuxOpen->text()==tr("Close")) Set_Brightness_buf_and_send(ui->comboBox_SPortNameAux->currentIndex(),icurValue); } void mGuangYingPinWidget::OnAnsyProgramNext(void) { ui->spinBox_ProgramIndex->setValue(ui->spinBox_ProgramIndex->value()+1); OnAnsyProgramCustom(); // int itemp=ui->spinBox_ProgramIndex->value(); // MACRO_ANSY_PROGRAM(itemp) // if(ui->pushButtonMainOpen->text()==tr("Close")) // NextProgram_buf_and_send(ui->comboBox_SPortName->currentIndex()); // if(ui->pushButtonAuxOpen->text()==tr("Close")) // NextProgram_buf_and_send(ui->comboBox_SPortNameAux->currentIndex()); } void mGuangYingPinWidget::OnAnsyProgramPrevious(void) { ui->spinBox_ProgramIndex->setValue(ui->spinBox_ProgramIndex->value()-1); OnAnsyProgramCustom(); // int itemp=ui->spinBox_ProgramIndex->value(); // MACRO_ANSY_PROGRAM(itemp) } void mGuangYingPinWidget::OnAnsyProgramLoop(void) { MACRO_ANSY_PROGRAM(0) } void mGuangYingPinWidget::OnBrightnessSet(void) { if(ui->groupBox_com->isChecked()) { if(ui->pushButtonMainOpen->text()==tr("Close")) Set_Brightness_buf_and_send(ui->comboBox_SPortName->currentIndex(),ui->spinBox_BrightnessValue->value()); if(ui->pushButtonAuxOpen->text()==tr("Close")) Set_Brightness_buf_and_send(ui->comboBox_SPortNameAux->currentIndex(),ui->spinBox_BrightnessValue->value()); } if(ui->groupBox_Network->isChecked()) { Set_Brightness_buf_and_send_by_udp(ui->spinBox_BrightnessValue->value()); } } void mGuangYingPinWidget::OnScreenOn(void) { if(ui->groupBox_com->isChecked()) { if(ui->pushButtonMainOpen->text()==tr("Close")) Screen_OnOff_buf_and_send(ui->comboBox_SPortName->currentIndex(),0x11); if(ui->pushButtonAuxOpen->text()==tr("Close")) Screen_OnOff_buf_and_send(ui->comboBox_SPortNameAux->currentIndex(),0x11); } if(ui->groupBox_Network->isChecked()) { Screen_OnOff_buf_and_send_by_udp(0x11); } } void mGuangYingPinWidget::OnScreenOff(void) { if(ui->groupBox_com->isChecked()) { if(ui->pushButtonMainOpen->text()==tr("Close")) Screen_OnOff_buf_and_send(ui->comboBox_SPortName->currentIndex(),0x10); if(ui->pushButtonAuxOpen->text()==tr("Close")) Screen_OnOff_buf_and_send(ui->comboBox_SPortNameAux->currentIndex(),0x10); } if(ui->groupBox_Network->isChecked()) { Screen_OnOff_buf_and_send_by_udp(0x10); } } void mGuangYingPinWidget::OnRefresh() { bool resetAllComboxFlag=true; if(ui->comboBox_SPortName->count()>0) resetAllComboxFlag=false; // ui->comboBox_SPortName->clear(); // ui->comboBox_SPortNameAux->clear(); sPortThread->SearchPort(); // for (int m=0;mportCnt;m++) { // } for(uint8_t i = 0;i < sPortThread->portCnt;i++) { bool iHaveFlag=false; for(int j=0;jcomboBox_SPortName->count();j++) { if(ui->comboBox_SPortName->itemText(j)==sPortThread->m_arrSerial[i].portName()) { iHaveFlag=true; break; } } if(iHaveFlag==false) { ui->comboBox_SPortName->addItem(sPortThread->m_arrSerial[i].portName()); } bool iHaveAuxFlag=false; for(int jj=0;jjcomboBox_SPortNameAux->count();jj++) { if(ui->comboBox_SPortNameAux->itemText(jj)==sPortThread->m_arrSerial[i].portName()) { iHaveAuxFlag=true; break; } } if(iHaveAuxFlag==false) { ui->comboBox_SPortNameAux->addItem(sPortThread->m_arrSerial[i].portName()); if(ui->comboBox_SPortNameAux->count()>1&&ui->pushButtonAuxOpen->text()==tr("Open")) { ui->comboBox_SPortNameAux->setCurrentIndex(i); } } // ui->comboBox_SPortName->addItem(sPortThread->m_arrSerial[i].portName()); // ui->comboBox_SPortNameAux->addItem(sPortThread->m_arrSerial[i].portName()); } if(resetAllComboxFlag) { //0:1200 1:2400 2:4800 3:9600 4:19200 5:38400 6:57600 7:115200 if(ui->comboBox_SPortName->count()>=1) { ui->comboBox_SPortBaud->setCurrentIndex(3); //0:5 1:6 2:7 3:8 ui->comboBox_SPortDataBit->setCurrentIndex(3); //0:no p 2:e p 3:o p 4:s p 5:m p ui->comboBox_SPortOEBit->setCurrentIndex(0); //0:1 1:2 2:1.5 ui->comboBox_SPortStopBit->setCurrentIndex(0); ui->graphicsView_ComStatus->setStyleSheet("background-color: rgb(255, 0, 0);"); ui->label_ComStatus->setText(tr("State:Off")); ui->comboBox_SPortBaudAux->setCurrentIndex(3); ui->comboBox_SPortDataBitAux->setCurrentIndex(3); ui->comboBox_SPortOEBitAux->setCurrentIndex(0); ui->comboBox_SPortStopBitAux->setCurrentIndex(0); ui->graphicsView_ComStatusAux->setStyleSheet("background-color: rgb(255, 0, 0);"); ui->label_ComStatusAux->setText(tr("State:Off")); if(ui->comboBox_SPortName->count()>1) { ui->comboBox_SPortNameAux->setCurrentIndex(1); } } } } void mGuangYingPinWidget::MWOnoffPort(void) { uint8_t comIndex = ui->comboBox_SPortName->currentIndex(); if(ui->pushButtonMainOpen->text()==tr("Open")) { sPortThread->InitPortName(comIndex,ui->comboBox_SPortName->currentText()); sPortThread->InitPortBaudRate(comIndex,ui->comboBox_SPortBaud->currentText().toInt()); //qDebug()<comboBox_SPortDataBit->currentIndex(); switch(ui->comboBox_SPortDataBit->currentIndex()) { case 0: sPortThread->InitPortDataBits(comIndex,QSerialPort::Data5); break;//0:5 case 1: sPortThread->InitPortDataBits(comIndex,QSerialPort::Data6); break;//1:6 case 2: sPortThread->InitPortDataBits(comIndex,QSerialPort::Data7); break;//2:7 case 3: sPortThread->InitPortDataBits(comIndex,QSerialPort::Data8); break;//3:8 default: break; } switch(ui->comboBox_SPortStopBit->currentIndex()) { case 0:sPortThread->InitPortStopBits(comIndex,QSerialPort::OneStop);break; case 1:sPortThread->InitPortStopBits(comIndex,QSerialPort::TwoStop);break; case 2:sPortThread->InitPortStopBits(comIndex,QSerialPort::OneAndHalfStop);break; default: break; } switch(ui->comboBox_SPortOEBit->currentIndex()) { case 0:sPortThread->InitPortParity(comIndex,QSerialPort::NoParity);break; case 1:sPortThread->InitPortParity(comIndex,QSerialPort::EvenParity);break; case 2:sPortThread->InitPortParity(comIndex,QSerialPort::OddParity);break; case 3:sPortThread->InitPortParity(comIndex,QSerialPort::SpaceParity);break; case 4:sPortThread->InitPortParity(comIndex,QSerialPort::MarkParity);break; default: break; } if(sPortThread->OpenPort(comIndex)) { connect(&(sPortThread->m_arrSerial[comIndex]), SIGNAL(readyRead()), this, SLOT(MWReadData())); //参数设置禁止 ui->comboBox_SPortName->setEnabled(false); ui->comboBox_SPortBaud->setEnabled(false); ui->comboBox_SPortDataBit->setEnabled(false); ui->comboBox_SPortOEBit->setEnabled(false); ui->comboBox_SPortStopBit->setEnabled(false); ui->pushButtonMainOpen->setText(tr("Close")); //发送设置使能 ui->graphicsView_ComStatus->setStyleSheet("background-color: rgb(0, 255, 0);"); ui->label_ComStatus->setText(tr("State:On")); } else { X_UIMsgBoxOk *pDlg=new X_UIMsgBoxOk(tr("Tip"),tr("OpenPort COM failed"),this,1); pDlg->exec(); } } else { sPortThread->ClosePort(comIndex); //参数设置使能 ui->comboBox_SPortName->setEnabled(true); ui->comboBox_SPortBaud->setEnabled(true); ui->comboBox_SPortDataBit->setEnabled(true); ui->comboBox_SPortOEBit->setEnabled(true); ui->comboBox_SPortStopBit->setEnabled(true); ui->pushButtonMainOpen->setText(tr("Open")); //发送设置禁止 ui->graphicsView_ComStatus->setStyleSheet("background-color: rgb(255, 0, 0);"); ui->label_ComStatus->setText(tr("State:Off")); } } void mGuangYingPinWidget::MWOnoffPortAux(void) { uint8_t comIndex = ui->comboBox_SPortNameAux->currentIndex(); if(ui->pushButtonAuxOpen->text()==tr("Open")) { sPortThread->InitPortName(comIndex,ui->comboBox_SPortNameAux->currentText()); sPortThread->InitPortBaudRate(comIndex,ui->comboBox_SPortBaudAux->currentText().toInt()); //qDebug()<comboBox_SPortDataBit->currentIndex(); switch(ui->comboBox_SPortDataBitAux->currentIndex()) { case 0: sPortThread->InitPortDataBits(comIndex,QSerialPort::Data5); break;//0:5 case 1: sPortThread->InitPortDataBits(comIndex,QSerialPort::Data6); break;//1:6 case 2: sPortThread->InitPortDataBits(comIndex,QSerialPort::Data7); break;//2:7 case 3: sPortThread->InitPortDataBits(comIndex,QSerialPort::Data8); break;//3:8 default: break; } switch(ui->comboBox_SPortStopBitAux->currentIndex()) { case 0:sPortThread->InitPortStopBits(comIndex,QSerialPort::OneStop);break; case 1:sPortThread->InitPortStopBits(comIndex,QSerialPort::TwoStop);break; case 2:sPortThread->InitPortStopBits(comIndex,QSerialPort::OneAndHalfStop);break; default: break; } switch(ui->comboBox_SPortOEBitAux->currentIndex()) { case 0:sPortThread->InitPortParity(comIndex,QSerialPort::NoParity);break; case 1:sPortThread->InitPortParity(comIndex,QSerialPort::EvenParity);break; case 2:sPortThread->InitPortParity(comIndex,QSerialPort::OddParity);break; case 3:sPortThread->InitPortParity(comIndex,QSerialPort::SpaceParity);break; case 4:sPortThread->InitPortParity(comIndex,QSerialPort::MarkParity);break; default: break; } if(sPortThread->OpenPort(comIndex)) { connect(&(sPortThread->m_arrSerial[comIndex]), SIGNAL(readyRead()), this, SLOT(MWReadDataAux())); //参数设置禁止 ui->comboBox_SPortNameAux->setEnabled(false); ui->comboBox_SPortBaudAux->setEnabled(false); ui->comboBox_SPortDataBitAux->setEnabled(false); ui->comboBox_SPortOEBitAux->setEnabled(false); ui->comboBox_SPortStopBitAux->setEnabled(false); ui->pushButtonAuxOpen->setText(tr("Close")); //发送设置使能 ui->graphicsView_ComStatusAux->setStyleSheet("background-color: rgb(0, 255, 0);"); ui->label_ComStatusAux->setText(tr("State:On")); } else { X_UIMsgBoxOk *pDlg=new X_UIMsgBoxOk(tr("Tip"),tr("OpenPort COM failed"),this,1); pDlg->exec(); } } else { sPortThread->ClosePort(comIndex); //参数设置使能 ui->comboBox_SPortNameAux->setEnabled(true); ui->comboBox_SPortBaudAux->setEnabled(true); ui->comboBox_SPortDataBitAux->setEnabled(true); ui->comboBox_SPortOEBitAux->setEnabled(true); ui->comboBox_SPortStopBitAux->setEnabled(true); ui->pushButtonAuxOpen->setText(tr("Open")); //发送设置禁止 ui->graphicsView_ComStatusAux->setStyleSheet("background-color: rgb(255, 0, 0);"); ui->label_ComStatusAux->setText(tr("State:Off")); } } void mGuangYingPinWidget::Set_program_buf_and_send(int iComIndex,int iProgramIndex) { unsigned char uctemp[3]={0}; uctemp[0]=0x30+iProgramIndex; int m_uiResendTimes=ui->lineEdit_ResendTimes->text().toInt(); int m_uimillisecond=ui->lineEdit_DelayMill->text().toInt(); unsigned short iDelayTimes=m_uiResendTimes*m_uimillisecond; qint64 dwStart; qint64 dwStop; dwStart = QDateTime::currentMSecsSinceEpoch(); dwStop=dwStart; for(int i=0;i<(int)m_uiResendTimes;i++) { int itiaozheng=dwStop-dwStart-m_uimillisecond;//时间发送间隔和参数发送间隔的差异 if(itiaozheng<0) itiaozheng=0; unsigned short itemp=(iDelayTimes-i*m_uimillisecond)-itiaozheng;//补充差异,比如实际用了110毫秒,参数100毫秒,则发送过去的协议数据应该是让控制卡减少延时,所以在延时值上再减去补差 if(itemp<0) itemp=0; dwStart=dwStop; memcpy(&uctemp[1],(unsigned char *)&itemp,2*sizeof(unsigned char)); MWSendCmd(iComIndex,0x42,uctemp,3,g_iCountCmd); int itempDelay=0; if(itiaozheng>0) itempDelay=m_uimillisecond-itiaozheng; else itempDelay=m_uimillisecond; mymidelay(itempDelay); dwStop = QDateTime::currentMSecsSinceEpoch(); if(ui->checkBoxDebug->isChecked()) { ui->textEditReadBuf->append("dwStart="+QString::number(dwStart)+",dwStop="+QString::number(dwStop)+",dwStop-dwStart="+QString::number(dwStop-dwStart)+",Delay="+QString::number(itempDelay)+",buf delay value="+QString::number(itemp)+"\r\n"); } } g_iCountCmd++; } void mGuangYingPinWidget::Set_program_buf_and_send_by_udp(int iProgramIndex) { unsigned char uctemp[3]={0}; uctemp[0]=0x30+iProgramIndex; int m_uiResendTimes=ui->lineEdit_ResendTimes->text().toInt(); int m_uimillisecond=ui->lineEdit_DelayMill->text().toInt(); unsigned short iDelayTimes=m_uiResendTimes*m_uimillisecond; qint64 dwStart; qint64 dwStop; dwStart = QDateTime::currentMSecsSinceEpoch(); dwStop=dwStart; for(int i=0;i<(int)m_uiResendTimes;i++) { int itiaozheng=dwStop-dwStart-m_uimillisecond;//时间发送间隔和参数发送间隔的差异 if(itiaozheng<0) itiaozheng=0; unsigned short itemp=(iDelayTimes-i*m_uimillisecond)-itiaozheng;//补充差异,比如实际用了110毫秒,参数100毫秒,则发送过去的协议数据应该是让控制卡减少延时,所以在延时值上再减去补差 if(itemp<0) itemp=0; dwStart=dwStop; memcpy(&uctemp[1],(unsigned char *)&itemp,2*sizeof(unsigned char)); MWSendCmdByUdp(0x42,uctemp,3,g_iCountCmd); int itempDelay=0; if(itiaozheng>0) itempDelay=m_uimillisecond-itiaozheng; else itempDelay=m_uimillisecond; mymidelay(itempDelay); dwStop = QDateTime::currentMSecsSinceEpoch(); if(ui->checkBoxDebug->isChecked()) { ui->textEditReadBuf->append("dwStart="+QString::number(dwStart)+",dwStop="+QString::number(dwStop)+",dwStop-dwStart="+QString::number(dwStop-dwStart)+",Delay="+QString::number(itempDelay)+",buf delay value="+QString::number(itemp)+"\r\n"); } } g_iCountCmd++; } void mGuangYingPinWidget::Set_Brightness_buf_and_send(int iComIndex,int iBrightnessValue) { unsigned char uctemp[2]={0}; uctemp[0]=0xF1; uctemp[1]=iBrightnessValue; int m_uiResendTimes=ui->lineEdit_ResendTimes->text().toInt(); int m_uimillisecond=ui->lineEdit_DelayMill->text().toInt(); for(int i=0;i<(int)m_uiResendTimes;i++) { MWSendCmd(iComIndex,0x42,uctemp,2,g_iCountCmd); if(ui->checkBoxDebug->isChecked()) { ui->textEditReadBuf->append("SetBrightNess="+QString::number(iBrightnessValue)); } mymidelay(m_uimillisecond); } } void mGuangYingPinWidget::Set_Brightness_buf_and_send_by_udp(int iBrightnessValue) { unsigned char uctemp[2]={0}; uctemp[0]=0xF1; uctemp[1]=iBrightnessValue; int m_uiResendTimes=ui->lineEdit_ResendTimes->text().toInt(); int m_uimillisecond=ui->lineEdit_DelayMill->text().toInt(); for(int i=0;i<(int)m_uiResendTimes;i++) { MWSendCmdByUdp(0x42,uctemp,2,g_iCountCmd); if(ui->checkBoxDebug->isChecked()) { ui->textEditReadBuf->append("SetBrightNess="+QString::number(iBrightnessValue)); } mymidelay(m_uimillisecond); } } void mGuangYingPinWidget::Screen_OnOff_buf_and_send(int iComIndex,int iScreenOnOff) { unsigned char uctemp[3]={0}; uctemp[0]=iScreenOnOff; uctemp[1]=0; uctemp[2]=0; int m_uiResendTimes=ui->lineEdit_ResendTimes->text().toInt(); int m_uimillisecond=ui->lineEdit_DelayMill->text().toInt(); for(int i=0;i<(int)m_uiResendTimes;i++) { MWSendCmd(iComIndex,0x42,uctemp,3,g_iCountCmd); if(ui->checkBoxDebug->isChecked()) { if(iScreenOnOff==0x11) ui->textEditReadBuf->append("Screen On"); else ui->textEditReadBuf->append("Screen Off"); } mymidelay(m_uimillisecond); } } void mGuangYingPinWidget::Screen_OnOff_buf_and_send_by_udp(int iScreenOnOff) { unsigned char uctemp[3]={0}; uctemp[0]=iScreenOnOff; uctemp[1]=0; uctemp[2]=0; int m_uiResendTimes=ui->lineEdit_ResendTimes->text().toInt(); int m_uimillisecond=ui->lineEdit_DelayMill->text().toInt(); for(int i=0;i<(int)m_uiResendTimes;i++) { MWSendCmdByUdp(0x42,uctemp,3,g_iCountCmd); if(ui->checkBoxDebug->isChecked()) { if(iScreenOnOff==0x11) ui->textEditReadBuf->append("Screen On"); else ui->textEditReadBuf->append("Screen Off"); } mymidelay(m_uimillisecond); } } void mGuangYingPinWidget::NextProgram_buf_and_send(int iComIndex) { unsigned char uctemp[1]={0}; uctemp[0]=0xF3; int m_uiResendTimes=ui->lineEdit_ResendTimes->text().toInt(); int m_uimillisecond=ui->lineEdit_DelayMill->text().toInt(); for(int i=0;i<(int)m_uiResendTimes;i++) { MWSendCmd(iComIndex,0x42,uctemp,1,g_iCountCmd); if(ui->checkBoxDebug->isChecked()) { ui->textEditReadBuf->append("Next Program"); } mymidelay(m_uimillisecond); } } void mGuangYingPinWidget::NextProgram_buf_and_send_by_udp() { unsigned char uctemp[1]={0}; uctemp[0]=0xF3; int m_uiResendTimes=ui->lineEdit_ResendTimes->text().toInt(); int m_uimillisecond=ui->lineEdit_DelayMill->text().toInt(); for(int i=0;i<(int)m_uiResendTimes;i++) { MWSendCmdByUdp(0x42,uctemp,1,g_iCountCmd); if(ui->checkBoxDebug->isChecked()) { ui->textEditReadBuf->append("Next Program"); } mymidelay(m_uimillisecond); } } void mGuangYingPinWidget::mymidelay(int imlsec) { qint64 dwStart, dwStop; dwStart = QDateTime::currentMSecsSinceEpoch(); do{ dwStop = QDateTime::currentMSecsSinceEpoch(); } while(dwStop-imlsec(&tempStreadPakcet), iLenPacket); //sPortThread->SendDataBuf(iComIndex,databuf); QList networkinterfaces = QNetworkInterface::allInterfaces(); foreach (QNetworkInterface interfaces, networkinterfaces) //networkinterfaces负责提供主机的IP地址和网络接口的列表 { foreach (QNetworkAddressEntry entry, interfaces.addressEntries())//QNetworkAddressEntry存储了一个IP地址,子网掩码和广播地址 { QHostAddress broadcastAddress("255.255.255.255"); { entry.setBroadcast(QHostAddress::Broadcast); QUdpSocket *tempUdpSocket= new QUdpSocket(this); if(!tempUdpSocket->bind(entry.ip())) break; int iSendLength=tempUdpSocket->writeDatagram((char *)&tempStreadPakcet,iLenPacket,broadcastAddress,31296); if( iSendLength != iLenPacket) { // qDebug() << "error" << "RestoreLedCardIpByUdpCmd error!send restore led card ip by udp cmd"; // // return; char *aa=reinterpret_cast(&tempStreadPakcet); tempUdpSocket->writeDatagram(&aa[iSendLength],iLenPacket-iSendLength,broadcastAddress,31296); } else { // strIpAddress =entry.ip().toString();// broadcastAddress.toString(); // qDebug() << strIpAddress << "send restore led card ip by udp cmd" ; } delete tempUdpSocket; } } } if(ui->checkBoxDebug->isChecked()) { ui->textEditReadBuf->append("udp:"+tr(databuf.toHex())); } } void mGuangYingPinWidget::MWSendCmd(uint8_t iComIndex,unsigned char cmd,unsigned char *pUcValue,unsigned int iLength,int iCountCmd) { ST_ANSY_PROGRAM_PACKET tempStreadPakcet; tempStreadPakcet.SyncHead[0]=0x7e; tempStreadPakcet.SyncHead[1]=0x7e; tempStreadPakcet.SyncHead[2]=0x55; tempStreadPakcet.ucCommType=cmd; tempStreadPakcet.iBaoLiu=iCountCmd; tempStreadPakcet.iLength=iLength; memcpy(tempStreadPakcet.pDataBuffer,pUcValue,iLength); tempStreadPakcet.pDataBuffer[tempStreadPakcet.iLength]=GetCheckCodeIn8(&tempStreadPakcet.ucCommType,tempStreadPakcet.iLength+sizeof(tempStreadPakcet.iBaoLiu)+sizeof(tempStreadPakcet.ucCommType)+sizeof(tempStreadPakcet.iLength)); int iLenPacket=3*sizeof(unsigned char)+sizeof(char)+sizeof(int)+sizeof(int)+tempStreadPakcet.iLength+sizeof(char);/////除正文外的协议结构大小; QByteArray databuf = QByteArray(reinterpret_cast(&tempStreadPakcet), iLenPacket); sPortThread->SendDataBuf(iComIndex,databuf); if(ui->checkBoxDebug->isChecked()) { ui->textEditReadBuf->append("com:"+tr(databuf.toHex())); } //sPortThread->SendDataBuf(ui->comboBox_SPortName->currentIndex(),ui->textEdit->toPlainText().toLatin1()); // m_sendNum += (ui->textEdit->toPlainText().toLatin1()).length(); // MWRSNumDisplay(); } void mGuangYingPinWidget::MWReadData(void) { QByteArray buf; buf = sPortThread->GetDataBuf(ui->comboBox_SPortName->currentIndex()); if(!buf.isEmpty()) { QString str = tr(buf.toHex()); if(ui->checkBoxDebug->isChecked()) { ui->textEditReadBuf->moveCursor(QTextCursor::End); ui->textEditReadBuf->insertPlainText(str); } MWRSNumDisplay(); } buf.clear(); } void mGuangYingPinWidget::MWReadDataAux(void) { QByteArray buf; buf = sPortThread->GetDataBuf(ui->comboBox_SPortNameAux->currentIndex()); if(!buf.isEmpty()) { QString str = tr(buf.toHex()); if(ui->checkBoxDebug->isChecked()) { ui->textEditReadBuf->moveCursor(QTextCursor::End); ui->textEditReadBuf->insertPlainText(str); } MWRSNumDisplay(); } buf.clear(); } QString mGuangYingPinWidget::ByteArrayToHexString(QByteArray &ba) { QDataStream out(&ba,QIODevice::ReadWrite); //将str的数据 读到out里面去 QString buf; while(!out.atEnd()) { qint8 outChar = 0; out >> outChar; //每次一个字节的填充到 outchar QString str = QString("%1").arg(outChar&0xFF,2,16,QLatin1Char('0')).toUpper() + QString(" "); //2 字符宽度 buf += str; } return buf; } void mGuangYingPinWidget::MWClearRecv(void) { // ui->textBrowser->clear(); // m_recvNum = 0; // m_sendNum = 0; // MWRSNumDisplay(); } void mGuangYingPinWidget::MWRSNumDisplay(void) { // ui->label_RecvNum->setText(tr("已接收:") + QString::number(m_recvNum,10)); // ui->label_SendNum->setText(tr("已发送:") + QString::number(m_sendNum,10)); }