#include "uart1.h" #include #include #include #include #include #include #include #include "communications.h" #include #include "MCU_ARM.h" #include #include #include #include #include "mcu_arm1.h" uint16_t CRC1; QSerialPortInfo *SerialPortInfo1; QSerialPort SerialPort1; QByteArray UART1_READ_DATA; mcu_arm1 *ARM1; uint16_t UART0_ini = 0; uint16_t UART1_ini = 0; uint8_t UART1_Enable = 0; QByteArray abc = "TEST SUCESS"; struct UU_data1 SEC; struct UU_dataana ANA; struct UU_dataacc ACC; struct UU_datadig DIG = {"48","48","48","48","48",0,0,0,0,0,"0","0",false,false, false,false,false}; struct UU_datadig_compare DIGCOMPARE; UART1::UART1(QWidget *parent) : QWidget(parent) { UartFrameReset(); } UART1::~UART1() { } void Delay_MSec_Temp(unsigned int msec) { QEventLoop eventloop; QTimer::singleShot((int)msec, &eventloop, SLOT(quit())); eventloop.exec(); } void UART1::Delay_MSec(unsigned int msec) { QEventLoop eventloop; QTimer::singleShot((int)msec, &eventloop, SLOT(quit())); eventloop.exec(); } void UART1::UartFrameProcess(QByteArray & data) { qDebug() <<"UartFrameProcess:"<< data.toHex(); if(data.toStdString()!="") { QByteArray ba; QByteArray test; QByteArray data1; QByteArray data_war; QByteArray ZiJian_state; QString ttest; data1[0]=0xAA; data1[1]=0x55; QByteArray data_police; uint32_t dataLen = 0; uint32_t result = 0; uint32_t wireless_count = 0; uint32_t wireless_adress_count = 0; uint32_t wireless_data_count = 0; uint32_t concentrator_count = 0; uint32_t concentrator_adress_count = 0; uint32_t concentrator_data_count = 0; uint8_t lower_CRC = 0; uint32_t wireless_checkcount = 0; uint8_t temperature_order = 0; //温度获取指令 23.8.16 int year,month,day,hour,minute,seconds; QString ass_year,ass_month,ass_day,ass_hour,ass_minute,ass_seconds; QString Sys_time; char Check[2] = {0}; int led_flage=0,led_flage1=0,led_flage2=0,led_flage3=0,led_flage4=0,led_flage5=0; int led_data; uint32_t waring_data; int zijian; bool ok; QString aaa = ","; QString led_set; QByteArray CrcCheck = data.left(data.size()-2); if((data[0] == data1[0])&&(data[1]==data1[1])) { ModBusCRC16(CrcCheck); lower_CRC = CRC1; CRC1 = CRC1>>8; Check[0] = lower_CRC; Check[1] = CRC1; if((Check[0] == data[data.size()-2])&&(Check[1] == data[data.size()-1])&&(data.data()!=NULL)) { if(data.at(2) >= 0x20 && data.at(2) <=0x30) { dataLen = data.size(); result = data.at(dataLen - 3); if(result == 0) { printf("success...\n"); } else { happenInfoError(data); } } else { char *temp = data.data(); temp = temp + 5; char *Sec = data.data(); Sec = Sec + 4; char *adress = data.data(); adress = adress + 6; char *sec = data.data(); sec = sec + 6; char *rtctime = data.data(); rtctime = rtctime + 6; char *wireless_data = data.data(); char *concentrator_data = data.data(); switch (data.at(2)) { case 0x01: wireless_count = data.at(6); wireless_adress_count = wireless_count*4; wireless_data_count = wireless_count*2; wireless_data =wireless_data + 6 +wireless_adress_count ; SEC.wirelessTData_account.clear(); memcpySerialData(temp+1,SEC.wirelessTData_account,1); SEC.wirelessTData_adress.clear(); memcpySerialData(adress+1,SEC.wirelessTData_adress,wireless_adress_count); SEC.wirelessTData_data.clear(); memcpySerialData(wireless_data+1,SEC.wirelessTData_data,wireless_data_count); wireless_data = NULL; adress = NULL; temp = NULL; break; case 0x02: concentrator_count = data.at(5); concentrator_adress_count = concentrator_count; concentrator_data_count = concentrator_count*2; concentrator_data =concentrator_data + 6 +concentrator_adress_count ; SEC.concentratorTData_adress.clear(); memcpySerialData(adress,SEC.concentratorTData_adress,concentrator_adress_count); SEC.concentratorTData_data.clear(); memcpySerialData(concentrator_data,SEC.concentratorTData_data,concentrator_data_count); concentrator_data = NULL; adress = NULL; temp = NULL; break; case 0x03: temp = temp+1; dataLen = (data.at(4)) << 8 | data.at(5); if(data.at(3) == 0x01) { /***************************************************************/ DIGCOMPARE.policeDataDig = DIG.policeDataDig; DIG.policeDataDig.clear(); // SEC.policeData.clear(); // memcpySerialData(temp,SEC.policeData,1); memcpySerialData(temp,DIG.policeDataDig,1); if(DIGCOMPARE.policeDataDig != DIG.policeDataDig) { DIG.policeDataDig_flag = true; }else{ DIG.policeDataDig_flag = false; } temp = temp +1; data_police.clear(); data_police[0] = data[6]; if((data_police.toHex().toInt(&ok,16))%4/2){ QFile file("/home/data/Pop_ult.txt"); if(file.open(QFile::WriteOnly)) { QTextStream set_wifi_connect(&file); } file.close(); } else { QFile file("/home/data/Pop_ult.txt"); file.remove(); } if((data_police.toHex().toInt(&ok,16))%2/1){ QFile file("/home/data/Pop_tev.txt"); if(file.open(QFile::WriteOnly)) { QTextStream set_wifi_connect(&file); } file.close(); } else { QFile file("/home/data/Pop_tev.txt"); file.remove(); } /***************************************************************/ SEC.TevTop.clear(); memcpySerialData(temp,SEC.TevTop,2); temp = temp +2; /***************************************************************/ SEC.TevFreq.clear(); memcpySerialData(temp,SEC.TevFreq,2); temp = temp +2; /***************************************************************/ SEC.TevLevel.clear(); memcpySerialData(temp,SEC.TevLevel,2); temp = temp +2; /***************************************************************/ SEC.TevAve.clear(); memcpySerialData(temp,SEC.TevAve,2); temp = temp +2; /***************************************************************/ SEC.Tevperiodicity.clear(); memcpySerialData(temp,SEC.Tevperiodicity,2); temp = temp +2; /***************************************************************/ SEC.UltTop.clear(); memcpySerialData(temp,SEC.UltTop,2); temp = temp +2; /***************************************************************/ SEC.UltFreq.clear(); memcpySerialData(temp,SEC.UltFreq,2); temp = temp + 2; /***************************************************************/ SEC.UltLevel.clear(); memcpySerialData(temp,SEC.UltLevel,2); temp = temp +2; /***************************************************************/ SEC.UltAve.clear(); memcpySerialData(temp,SEC.UltAve,2); temp = temp +2; /***************************************************************/ SEC.UltEffective.clear(); memcpySerialData(temp,SEC.UltEffective,2); temp = temp +2; } else if(data.at(3) == 0x02) { SEC.tevData.clear(); memcpySerialData(temp+1,SEC.tevData,dataLen); } else if(data.at(3) == 0x03) { SEC.ultData.clear(); memcpySerialData(temp+1,SEC.ultData,dataLen); } temp = NULL; break; case 0x04: /***************************************************************/ SEC.SecFanStartTemperature.clear(); memcpySerialData(sec,SEC.SecFanStartTemperature,4); sec = sec + 4; /***************************************************************/ SEC.SecTripTemperature.clear(); memcpySerialData(sec,SEC.SecTripTemperature,4); sec = sec + 4; /***************************************************************/ SEC.SecAlarmTemperature.clear(); memcpySerialData(sec,SEC.SecAlarmTemperature,4); sec = sec + 4; /***************************************************************/ SEC.SecReturnTemperature.clear(); memcpySerialData(sec,SEC.SecReturnTemperature,4); sec = sec + 4; /***************************************************************/ SEC.SecFanStartTempeture.clear(); memcpySerialData(sec,SEC.SecFanStartTempeture,12); sec = sec + 12; /***************************************************************/ // SEC.SecWheelVol.clear(); // memcpySerialData(sec,SEC.SecWheelVol,12); // sec = sec + 12; SEC.SecWheelVolAA.clear(); memcpySerialData(sec,SEC.SecWheelVolAA,4); sec = sec + 4; SEC.SecWheelVolBB.clear(); memcpySerialData(sec,SEC.SecWheelVolBB,4); sec = sec + 4; SEC.SecWheelVolCC.clear(); memcpySerialData(sec,SEC.SecWheelVolCC,4); sec = sec + 4; /***************************************************************/ SEC.SecZeroSequenceVol.clear(); memcpySerialData(sec,SEC.SecZeroSequenceVol,4); sec = sec + 4; /***************************************************************/ // SEC.SecActivePower.clear(); // memcpySerialData(sec,SEC.SecActivePower,12); // sec = sec + 12; SEC.SecActivePowerAA.clear(); memcpySerialData(sec,SEC.SecActivePowerAA,4); sec = sec + 4; SEC.SecActivePowerBB.clear(); memcpySerialData(sec,SEC.SecActivePowerBB,4); sec = sec + 4; SEC.SecActivePowerCC.clear(); memcpySerialData(sec,SEC.SecActivePowerCC,4); sec = sec + 4; /***************************************************************/ SEC.SecActivePowerCom.clear(); memcpySerialData(sec,SEC.SecActivePowerCom,4); sec = sec + 4; /***************************************************************/ // SEC.SecReactivePower.clear(); // memcpySerialData(sec,SEC.SecReactivePower,12); // sec = sec + 12; SEC.SecReactivePowerAA.clear(); memcpySerialData(sec,SEC.SecReactivePowerAA,4); sec = sec + 4; SEC.SecReactivePowerBB.clear(); memcpySerialData(sec,SEC.SecReactivePowerBB,4); sec = sec + 4; SEC.SecReactivePowerCC.clear(); memcpySerialData(sec,SEC.SecReactivePowerCC,4); sec = sec + 4; /***************************************************************/ SEC.SecReactivePowerCom.clear(); memcpySerialData(sec,SEC.SecReactivePowerCom,4); sec = sec + 4; /***************************************************************/ SEC.SecWheelPowerFactor.clear(); memcpySerialData(sec,SEC.SecWheelPowerFactor,12); // sec = sec + 12; SEC.SecWheelPowerFactorAA.clear(); memcpySerialData(sec,SEC.SecWheelPowerFactorAA,4); sec = sec + 4; SEC.SecWheelPowerFactorBB.clear(); memcpySerialData(sec,SEC.SecWheelPowerFactorBB,4); sec = sec + 4; SEC.SecWheelPowerFactorCC.clear(); memcpySerialData(sec,SEC.SecWheelPowerFactorCC,4); sec = sec + 4; /***************************************************************/ SEC.SecWheelPowerFactorCom.clear(); memcpySerialData(sec,SEC.SecWheelPowerFactorCom,4); sec = sec + 4; /***************************************************************/ SEC.SecWheelFrequency.clear(); memcpySerialData(sec,SEC.SecWheelFrequency,4); sec = sec + 4; /***************************************************************/ SEC.SecWheelATemperature.clear(); memcpySerialData(sec,SEC.SecWheelATemperature,4); sec = sec + 4; /***************************************************************/ SEC.SecWheelBTemperature.clear(); memcpySerialData(sec,SEC.SecWheelBTemperature,4); sec = sec + 4; /***************************************************************/ SEC.SecWheelCTemperature.clear(); memcpySerialData(sec,SEC.SecWheelCTemperature,4); sec = sec + 4; /***************************************************************/ SEC.SecWheelTTemperature.clear(); memcpySerialData(sec,SEC.SecWheelTTemperature,4); sec = sec + 4; /***************************************************************/ // SEC.SecWheelPositiveElectricEnergy.clear(); // memcpySerialData(sec,SEC.SecWheelPositiveElectricEnergy,20); // sec = sec + 20; SEC.SecWheelPositiveElectricEnergyzong.clear(); memcpySerialData(sec,SEC.SecWheelPositiveElectricEnergyzong,4); sec = sec + 4; SEC.SecWheelPositiveElectricEnergyjian.clear(); memcpySerialData(sec,SEC.SecWheelPositiveElectricEnergyjian,4); sec = sec + 4; SEC.SecWheelPositiveElectricEnergyfeng.clear(); memcpySerialData(sec,SEC.SecWheelPositiveElectricEnergyfeng,4); sec = sec + 4; SEC.SecWheelPositiveElectricEnergyping.clear(); memcpySerialData(sec,SEC.SecWheelPositiveElectricEnergyping,4); sec = sec + 4; SEC.SecWheelPositiveElectricEnergygu.clear(); memcpySerialData(sec,SEC.SecWheelPositiveElectricEnergygu,4); sec = sec + 4; /***************************************************************/ // SEC.SecWheelNegativeElectricEnergy.clear(); // memcpySerialData(sec,SEC.SecWheelNegativeElectricEnergy,20); // sec = sec + 20; SEC.SecWheelNegativeElectricEnergyzong.clear(); memcpySerialData(sec,SEC.SecWheelNegativeElectricEnergyzong,4); sec = sec + 4; SEC.SecWheelNegativeElectricEnergyjian.clear(); memcpySerialData(sec,SEC.SecWheelNegativeElectricEnergyjian,4); sec = sec + 4; SEC.SecWheelNegativeElectricEnergyfeng.clear(); memcpySerialData(sec,SEC.SecWheelNegativeElectricEnergyfeng,4); sec = sec + 4; SEC.SecWheelNegativeElectricEnergyping.clear(); memcpySerialData(sec,SEC.SecWheelNegativeElectricEnergyping,4); sec = sec + 4; SEC.SecWheelNegativeElectricEnergygu.clear(); memcpySerialData(sec,SEC.SecWheelNegativeElectricEnergygu,4); sec = sec + 4; /***************************************************************/ SEC.SecWheelActivePowerCom.clear(); memcpySerialData(sec,SEC.SecWheelActivePowerCom,20); sec = sec + 20; /***************************************************************/ SEC.SecFirstReactivePower.clear(); memcpySerialData(sec,SEC.SecFirstReactivePower,16); sec = sec + 20; /***************************************************************/ SEC.SecSecondReactivePower.clear(); memcpySerialData(sec,SEC.SecSecondReactivePower,16); sec = sec + 20; /***************************************************************/ SEC.SecThirdReactivePower.clear(); memcpySerialData(sec,SEC.SecThirdReactivePower,16); sec = sec + 20; /***************************************************************/ SEC.SecFourthReactivePower.clear(); memcpySerialData(sec,SEC.SecFourthReactivePower,16); sec = sec + 20; /***************************************************************/ SEC.SecCT.clear(); memcpySerialData(sec,SEC.SecCT,2); sec = sec + 2; /***************************************************************/ SEC.SecCT_U.clear(); memcpySerialData(sec,SEC.SecCT_U,4); sec = sec + 4; /***************************************************************/ // SEC.WheelLineV.clear(); // memcpySerialData(sec,SEC.WheelLineV,12); // sec = sec + 12; SEC.WheelLineVAB.clear(); memcpySerialData(sec,SEC.WheelLineVAB,4); sec = sec + 4; SEC.WheelLineVBC.clear(); memcpySerialData(sec,SEC.WheelLineVBC,4); sec = sec + 4; SEC.WheelLineVCA.clear(); memcpySerialData(sec,SEC.WheelLineVCA,4); sec = sec + 4; /***************************************************************/ // SEC.UnstableVandI.clear(); // memcpySerialData(sec,SEC.UnstableVandI,8); // sec = sec + 8; SEC.UnstableVandIV.clear(); memcpySerialData(sec,SEC.UnstableVandIV,4); sec = sec + 4; SEC.UnstableVandIA.clear(); memcpySerialData(sec,SEC.UnstableVandIA,4); sec = sec + 4; /***************************************************************/ // SEC.WheelVam.clear(); // memcpySerialData(sec,SEC.WheelVam,12); // sec = sec + 12; SEC.WheelVamA.clear(); memcpySerialData(sec,SEC.WheelVamA,4); sec = sec + 4; SEC.WheelVamB.clear(); memcpySerialData(sec,SEC.WheelVamB,4); sec = sec + 4; SEC.WheelVamC.clear(); memcpySerialData(sec,SEC.WheelVamC,4); sec = sec + 4; /***************************************************************/ // SEC.PhaseAngle.clear(); // memcpySerialData(sec,SEC.PhaseAngle,12); // sec = sec + 12; SEC.PhaseAngleAA.clear(); memcpySerialData(sec,SEC.PhaseAngleAA,2); sec = sec + 2; SEC.PhaseAngleAB.clear(); memcpySerialData(sec,SEC.PhaseAngleAB,2); sec = sec + 2; SEC.PhaseAngleAC.clear(); memcpySerialData(sec,SEC.PhaseAngleAC,2); sec = sec + 2; SEC.PhaseAngleVA.clear(); memcpySerialData(sec,SEC.PhaseAngleVA,2); sec = sec + 2; SEC.PhaseAngleVB.clear(); memcpySerialData(sec,SEC.PhaseAngleVB,2); sec = sec + 2; SEC.PhaseAngleVC.clear(); memcpySerialData(sec,SEC.PhaseAngleVC,2); sec = sec + 2; /***************************************************************/ // SEC.AberrationRate.clear(); // memcpySerialData(sec,SEC.AberrationRate,12); // sec = sec + 12; SEC.AberrationRateVA.clear(); memcpySerialData(sec,SEC.AberrationRateVA,2); sec = sec + 2; SEC.AberrationRateVB.clear(); memcpySerialData(sec,SEC.AberrationRateVB,2); sec = sec + 2; SEC.AberrationRateVC.clear(); memcpySerialData(sec,SEC.AberrationRateVC,2); sec = sec + 2; SEC.AberrationRateAA.clear(); memcpySerialData(sec,SEC.AberrationRateAA,2); sec = sec + 2; SEC.AberrationRateAB.clear(); memcpySerialData(sec,SEC.AberrationRateAB,2); sec = sec + 2; SEC.AberrationRateAC.clear(); memcpySerialData(sec,SEC.AberrationRateAC,2); sec = sec + 2; /***************************************************************/ // SEC.HarmonicKFactor.clear(); // memcpySerialData(sec,SEC.HarmonicKFactor,24); // sec = sec + 24; SEC.HarmonicKFactorVA.clear(); memcpySerialData(sec,SEC.HarmonicKFactorVA,4); sec = sec + 4; SEC.HarmonicKFactorVB.clear(); memcpySerialData(sec,SEC.HarmonicKFactorVB,4); sec = sec + 4; SEC.HarmonicKFactorVC.clear(); memcpySerialData(sec,SEC.HarmonicKFactorVC,4); sec = sec + 4; SEC.HarmonicKFactorAA.clear(); memcpySerialData(sec,SEC.HarmonicKFactorAA,4); sec = sec + 4; SEC.HarmonicKFactorAB.clear(); memcpySerialData(sec,SEC.HarmonicKFactorAB,4); sec = sec + 4; SEC.HarmonicKFactorAC.clear(); memcpySerialData(sec,SEC.HarmonicKFactorAC,4); sec = sec + 4; /***************************************************************/ // SEC.HarmonicWavePeakFactor.clear(); // memcpySerialData(sec,SEC.HarmonicWavePeakFactor,24); // sec = sec + 24; SEC.HarmonicWavePeakFactorVA.clear(); memcpySerialData(sec,SEC.HarmonicWavePeakFactorVA,4); sec = sec + 4; SEC.HarmonicWavePeakFactorVB.clear(); memcpySerialData(sec,SEC.HarmonicWavePeakFactorVB,4); sec = sec + 4; SEC.HarmonicWavePeakFactorVC.clear(); memcpySerialData(sec,SEC.HarmonicWavePeakFactorVC,4); sec = sec + 4; SEC.HarmonicWavePeakFactorAA.clear(); memcpySerialData(sec,SEC.HarmonicWavePeakFactorAA,4); sec = sec + 4; SEC.HarmonicWavePeakFactorAB.clear(); memcpySerialData(sec,SEC.HarmonicWavePeakFactorAB,4); sec = sec + 4; SEC.HarmonicWavePeakFactorAC.clear(); memcpySerialData(sec,SEC.HarmonicWavePeakFactorAC,4); sec = sec + 4; /***************************************************************/ // SEC.PositiveReactivePower.clear(); // memcpySerialData(sec,SEC.PositiveReactivePower,40); // sec = sec + 40; SEC.PositiveReactivePowerzong.clear(); memcpySerialData(sec,SEC.PositiveReactivePowerzong,8); sec = sec + 8; SEC.PositiveReactivePowerjian.clear(); memcpySerialData(sec,SEC.PositiveReactivePowerjian,8); sec = sec + 8; SEC.PositiveReactivePowerfeng.clear(); memcpySerialData(sec,SEC.PositiveReactivePowerfeng,8); sec = sec + 8; SEC.PositiveReactivePowerping.clear(); memcpySerialData(sec,SEC.PositiveReactivePowerping,8); sec = sec + 8; SEC.PositiveReactivePowergu.clear(); memcpySerialData(sec,SEC.PositiveReactivePowergu,8); sec = sec + 8; /***************************************************************/ // SEC.ReverseReactivePower.clear(); // memcpySerialData(sec,SEC.ReverseReactivePower,40); // sec = sec + 40; SEC.ReverseReactivePowerzong.clear(); memcpySerialData(sec,SEC.ReverseReactivePowerzong,8); sec = sec + 8; SEC.ReverseReactivePowerjian.clear(); memcpySerialData(sec,SEC.ReverseReactivePowerjian,8); sec = sec + 8; SEC.ReverseReactivePowerfeng.clear(); memcpySerialData(sec,SEC.ReverseReactivePowerfeng,8); sec = sec + 8; SEC.ReverseReactivePowerping.clear(); memcpySerialData(sec,SEC.ReverseReactivePowerping,8); sec = sec + 8; SEC.ReverseReactivePowergu.clear(); memcpySerialData(sec,SEC.ReverseReactivePowergu,8); sec = sec + 8; /***************************************************************/ // SEC.Demand.clear(); // memcpySerialData(sec,SEC.Demand,8); // sec = sec + 8; SEC.Demandhave.clear(); memcpySerialData(sec,SEC.Demandhave,4); qDebug()<<"SEC.Demandhave"<testSerialPort(2); UART1_ini = 1; //Delay_MSec(1000); ARM1->Set_Init(); ARM1->setEnable(UART1_Enable); qDebug()<<"111111111111222222222222222222222222"; break; case 0x15: DIGCOMPARE.McuAlarmState = DIG.McuAlarmState; DIG.McuAlarmState.clear(); memcpySerialData(temp,DIG.McuAlarmState,1); if(DIGCOMPARE.McuAlarmState != DIG.McuAlarmState) { DIG.McuAlarmState_flag = true; }else { DIG.McuAlarmState_flag = false; } temp = NULL; data_war.clear(); data_war[0] = data[6]; waring_data = data_war.toHex().toInt(&ok,16); emit sigAlarmMonitor(waring_data); break; case 0x17: SEC.Rtc_time.clear(); Sys_time.clear(); memcpySerialData(rtctime,SEC.Rtc_time,7); year=SEC.Rtc_time.toHex().mid(0,4).toInt(&ok,16); month=SEC.Rtc_time.toHex().mid(4,2).toInt(&ok,16); day=SEC.Rtc_time.toHex().mid(6,2).toInt(&ok,16); hour=SEC.Rtc_time.toHex().mid(8,2).toInt(&ok,16); minute=SEC.Rtc_time.toHex().mid(10,2).toInt(&ok,16); seconds=SEC.Rtc_time.toHex().mid(12,2).toInt(&ok,16); ass_year = QString::number(year); if(month<10) { ass_month = "0"+QString::number(month); } else { ass_month =QString::number(month); } if(day<10) { ass_day = "0"+QString::number(day); } else { ass_day =QString::number(day); } if(hour<10) { ass_hour = "0"+QString::number(hour); } else { ass_hour =QString::number(hour); } if(minute<10) { ass_minute = "0"+QString::number(minute); } else { ass_minute =QString::number(minute); } if(seconds<10) { ass_seconds = "0"+QString::number(seconds); } else { ass_seconds =QString::number(seconds); } Sys_time = ass_year+"-"+ass_month+"-"+ass_day+" "+ass_hour+":"+ass_minute+":"+ass_seconds; ba = Sys_time.toLatin1(); SetSystemTime(ba.data()); //Sys_time = "date -s \""+Sys_time+"\""; //std::system(Sys_time.toLatin1()); //qDebug()<<"set_RTC="<Realtime_temperature(max,min,ave); } file_temperature.close(); } QFile file_temperature_temp("/home/data/Real-TimeTemperature.txt");//删除温度存储部分 file_temperature_temp.remove(); } else { ARM1->rxy_state(); } } if(temperature_order == 2 || temperature_order == 3) { if(rxy2_flag) { QFile file_write2("/home/data/rxy_temperature_show2.txt");//文件路径 if(file_write2.open(QFile::WriteOnly)) { QTextStream data2(&file_write2); } file_write2.close(); QFileInfo file2("/home/data/Real-TimeTemperature1.txt"); for(int i =0;i<10;i++) { Delay_MSec_Temp(1000); if(file2.exists()) { break; } else { QFile file_write2("/home/data/rxy_temperature_show2.txt");//文件路径 if(file_write2.exists()) { } else { if(file_write2.open(QFile::WriteOnly)) { QTextStream data2(&file_write2); } file_write2.close(); } } } //实时温度部分 数据正常读取,串口传输数据 QFile file_temperature1("/home/data/Real-TimeTemperature1.txt"); if(file_temperature1.exists()) { if(file_temperature1.open(QIODevice::ReadOnly)) { QTextStream in1(&file_temperature1); QString maxTemperature1 = in1.readLine(); QString minTemperature1 = in1.readLine(); QString averageTemperature1 = in1.readLine(); qDebug() << maxTemperature1 << endl <Realtime_temperature1(max1,min1,ave1); } file_temperature1.close(); } QFile file_temperature_temp1("/home/data/Real-TimeTemperature1.txt");//删除温度存储部分 file_temperature_temp1.remove(); } else { ARM1->rxy_state(); } } break; } } } } } data = 0; } void UART1::UartFrameReset() { FrameData.clear(); FrameCount = 0; FrameLen = 0; qDebug() << "UartFrameReset"; } void UART1::openserial(QString COM) { QList list3; list3=QSerialPortInfo::availablePorts(); for(int i=0;itestSerialPort(2); UART1_Enable = Enable; #if 0 //ARM1->testSerialPort(2); UART1_ini = 1; Delay_MSec(1000); ARM1->Set_Init(); ARM1->setEnable(UART1_Enable); #endif } void UART1::ShuJu_Read() { if(SerialPort1.isOpen()) { UART1_READ_DATA = SerialPort1.readAll(); } else { } } void UART1:: ShuJu_Write(QByteArray data) { SerialPort1.write(data); } void UART1::setserial() { SerialPort1.open(QIODevice::ReadWrite); SerialPort1.setBaudRate(QSerialPort::Baud115200); SerialPort1.setDataBits(QSerialPort::Data8); SerialPort1.setParity(QSerialPort::NoParity); SerialPort1.setStopBits(QSerialPort::OneStop); SerialPort1.setFlowControl(QSerialPort::NoFlowControl); if(SerialPort1.isOpen()) qDebug()<<"串口已经打开"; connect(&SerialPort1,SIGNAL(readyRead()),this,SLOT(receverDataFromSerialPort())); } void UART1::serial_close() { SerialPort1.close(); } void UART1::ModBusCRC16(QByteArray data) { CRC1 = 0; uint16_t len = data.size(); uint16_t rc=0xffff; int i, j; uint8_t temp; for(i=0; i>=1; rc^=0XA001; } else rc>>=1; } } CRC1 = rc; len = 0;rc = 0;i = 0;j = 0;temp = 0; } int UART1::SetSystemTime(char *dt) { struct tm rtc_time; struct tm _tm; struct timeval tv; time_t timep; sscanf(dt, "%d-%d-%d %d:%d:%d", &rtc_time.tm_year, &rtc_time.tm_mon, &rtc_time.tm_mday,&rtc_time.tm_hour, &rtc_time.tm_min, &rtc_time.tm_sec); _tm.tm_sec = rtc_time.tm_sec; _tm.tm_min = rtc_time.tm_min; _tm.tm_hour = rtc_time.tm_hour; _tm.tm_mday = rtc_time.tm_mday; _tm.tm_mon = rtc_time.tm_mon - 1; _tm.tm_year = rtc_time.tm_year - 1900; timep = mktime(&_tm); tv.tv_sec = timep; tv.tv_usec = 0; if(settimeofday (&tv, (struct timezone *) 0) < 0) { printf("Set system datatime error!/n"); return -1; } return 0; } void UART1::memcpySerialData(char *data,QByteArray &A,uint16_t len) { if(A.isEmpty() != 0) { A = 0; } A = QByteArray(data,len); } void UART1::happenInfoError(QByteArray data){ switch (data.at(2)) { case 0x20: printf("Concentrator set fail...\n"); break; case 0x21: printf("this function unable to use, now...%d\n"); break; case 0x22: printf("fan start T set fail...\n"); break; case 0x23: printf("fan state set fail...\n"); break; case 0x24: printf("fan timing set fail...\n"); break; case 0x25: printf("buzzer state set fail...\n"); break; } } bool UART1::UartFrameParseByte(uint8_t data) { uint8_t data_type; switch(FrameCount){ case 0: if (data == 0xAA) { FrameData.push_back(data); FrameCount++; //qDebug() << "get 0xAA"; } break; case 1: if (data == 0x55) { FrameData.push_back(data); FrameCount++; //qDebug() << "get 0x55"; } else { UartFrameReset(); } break; case 2: //类型码 data_type = data; if(data_type == 0x05) { FrameData.push_back(data); FrameCount = FrameCount + 2; //qDebug() << "get data_type 0x05"; break; }else{ FrameData.push_back(data); FrameCount++; break; } case 3: //子类型 FrameData.push_back(data); FrameCount++; break; case 4: //取帧长高8 FrameLen = data<<8; FrameData.push_back(data); FrameCount++; //qDebug() << "get len h8"< 0){ FrameData.push_back(data); FrameLen--; } if(FrameLen + 2 <= 0){ qDebug() << "recv over"; return true; } default:break; } return false; } void UART1::UartFrameParse(QByteArray & from) { for(int i=0; i< from.size(); i++){ if(UartFrameParseByte(from.at(i))){ UartFrameProcess(FrameData); UartFrameReset(); } } } void UART1::receverDataFromSerialPort(){ //m_pPlaneAirline->blockSignals(true); QByteArray data1 = SerialPort1.readAll(); UartFrameParse(data1); }