You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1516 lines
63 KiB
C++
1516 lines
63 KiB
C++
#include "uart1.h"
|
|
#include <QSerialPortInfo>
|
|
#include <QSerialPort>
|
|
#include <QList>
|
|
#include <QDebug>
|
|
#include <stdio.h>
|
|
#include <QObject>
|
|
#include <QDebug>
|
|
#include "communications.h"
|
|
#include <QWidget>
|
|
#include "MCU_ARM.h"
|
|
#include <stdio.h>
|
|
#include <QFileInfo>
|
|
#include <QTime>
|
|
#include <QTimer>
|
|
#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"<<SEC.Demandhave.toHex();
|
|
sec = sec + 4;
|
|
|
|
SEC.Demandwu.clear();
|
|
memcpySerialData(sec,SEC.Demandwu,4);
|
|
qDebug()<<"SEC.Demandwu"<<SEC.Demandwu.toHex();
|
|
sec = sec + 4;
|
|
/***************************************************************/
|
|
sec = NULL;
|
|
break;
|
|
case 0x05:
|
|
DIGCOMPARE.McuState = DIG.McuState;
|
|
DIG.McuState.clear();
|
|
// SEC.McuState.clear();
|
|
// memcpySerialData(temp,SEC.McuState,1);
|
|
memcpySerialData(temp,DIG.McuState,1);
|
|
if(DIGCOMPARE.McuState != DIG.McuState)
|
|
{
|
|
DIG.McuState_flag = true;
|
|
}else{
|
|
DIG.McuState_flag = false;
|
|
}
|
|
|
|
temp = NULL;
|
|
|
|
data_war.clear();
|
|
data_war[0] = data[5];
|
|
waring_data = data_war.toHex().toInt(&ok,16);
|
|
|
|
|
|
if(waring_data & 128){
|
|
QFile file("/home/data/select_fan.txt");//文件路径
|
|
if(file.open(QFile::WriteOnly))
|
|
{
|
|
QTextStream set_wifi_connect(&file);
|
|
set_wifi_connect<<"1"<<endl;
|
|
}
|
|
file.close();
|
|
}
|
|
else{
|
|
QFile file("/home/data/select_fan.txt");//文件路径
|
|
if(file.open(QFile::WriteOnly))
|
|
{
|
|
|
|
QTextStream set_wifi_connect(&file);
|
|
set_wifi_connect<<"0"<<endl;
|
|
}
|
|
file.close();
|
|
}
|
|
|
|
emit sigSelfTestMonitor(waring_data);
|
|
|
|
break;
|
|
case 0x07:
|
|
temp = temp + 1;
|
|
SEC.Led.clear();
|
|
memcpySerialData(temp,SEC.Led,1);
|
|
//share1.write(SH.qLed,"Led",SEC.Led);
|
|
|
|
led_data=SEC.Led.toHex().toInt(&ok,16);
|
|
if(led_data%32/16)//
|
|
led_flage5=0x10;
|
|
if(led_data%16/8)//
|
|
led_flage1=0x01;
|
|
if(led_data%8/4)//
|
|
led_flage2=0x02;
|
|
if(led_data%4/2)//
|
|
led_flage4=0x08;
|
|
if(led_data%2/1)//
|
|
led_flage3=0x04;
|
|
led_flage=led_flage1|led_flage2|led_flage3|led_flage4|led_flage5;
|
|
emit sigLedControl(led_flage);
|
|
// led_set="i2cset -y 1 0x34 "+QString::number(led_flage);
|
|
// qDebug()<<"led_set :"<<led_set;
|
|
// std::system(led_set.toLatin1());
|
|
temp = NULL;
|
|
break;
|
|
case 0x11:
|
|
//ARM1->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="<<Sys_time.toLatin1()<<endl;
|
|
rtctime = NULL;
|
|
break;
|
|
|
|
case 0x18:
|
|
temp =temp+1;
|
|
wireless_checkcount = data.at(6);
|
|
SEC.WirelessT_CheckAccount.clear();
|
|
//SEC.wirelessTData_State.clear();
|
|
DIG.wirelessTData_State.clear();
|
|
memcpySerialData(temp,SEC.WirelessT_CheckAccount,1);
|
|
|
|
temp = temp+1;
|
|
DIGCOMPARE.wirelessTData_State = DIG.wirelessTData_State;
|
|
memcpySerialData(temp,DIG.wirelessTData_State,wireless_checkcount);
|
|
if(DIGCOMPARE.wirelessTData_State != DIG.wirelessTData_State)
|
|
{
|
|
DIG.wirelessTData_State_flag = true;
|
|
}else{
|
|
DIG.wirelessTData_State_flag = false;
|
|
}
|
|
//memcpySerialData(temp,SEC.wirelessTData_State,wireless_checkcount);
|
|
|
|
temp = NULL;
|
|
break;
|
|
|
|
case 0x19:
|
|
temp = temp + 1;
|
|
DIGCOMPARE.McuConnectState = DIG.McuConnectState;
|
|
DIG.McuConnectState.clear();
|
|
memcpySerialData(temp,DIG.McuConnectState,1);
|
|
if(DIGCOMPARE.McuConnectState != DIG.McuConnectState)
|
|
{
|
|
DIG.McuConnectState_flag = true;
|
|
}else{
|
|
DIG.McuConnectState_flag = false;
|
|
}
|
|
temp = NULL;
|
|
ZiJian_state.clear();
|
|
ZiJian_state[0] = data[6];
|
|
zijian = ZiJian_state.toHex().toInt(&ok,16);
|
|
|
|
if(zijian & 128){
|
|
QFile file("/home/data/select_tiexin.txt");//文件路径
|
|
if(file.open(QFile::WriteOnly))
|
|
{
|
|
QTextStream set_wifi_connect(&file);
|
|
set_wifi_connect<<"1"<<endl;
|
|
}
|
|
file.close();
|
|
}
|
|
else{
|
|
QFile file("/home/data/select_tiexin.txt");//文件路径
|
|
if(file.open(QFile::WriteOnly))
|
|
{
|
|
|
|
QTextStream set_wifi_connect(&file);
|
|
set_wifi_connect<<"0"<<endl;
|
|
}
|
|
file.close();
|
|
}
|
|
|
|
if((zijian%128/64)==0){
|
|
QFile file("/home/data/V_0_state.txt");//文件路径
|
|
if(file.open(QFile::WriteOnly))
|
|
{
|
|
QTextStream set_wifi_connect(&file);
|
|
set_wifi_connect<<"1"<<endl;
|
|
}
|
|
file.close();
|
|
}
|
|
else{
|
|
QFile file("/home/data/V_0_state.txt");//文件路径
|
|
if(file.open(QFile::WriteOnly))
|
|
{
|
|
|
|
QTextStream set_wifi_connect(&file);
|
|
set_wifi_connect<<"0"<<endl;
|
|
}
|
|
file.close();
|
|
}
|
|
if(zijian%64/32){
|
|
QFile file("/home/data/V_C_state.txt");//文件路径
|
|
if(file.open(QFile::WriteOnly))
|
|
{
|
|
QTextStream set_wifi_connect(&file);
|
|
set_wifi_connect<<"1"<<endl;
|
|
}
|
|
file.close();
|
|
}
|
|
else{
|
|
QFile file("/home/data/V_C_state.txt");//文件路径
|
|
if(file.open(QFile::WriteOnly))
|
|
{
|
|
|
|
QTextStream set_wifi_connect(&file);
|
|
set_wifi_connect<<"0"<<endl;
|
|
}
|
|
file.close();
|
|
}
|
|
if(zijian%32/16){
|
|
QFile file("/home/data/V_B_state.txt");//文件路径
|
|
if(file.open(QFile::WriteOnly))
|
|
{
|
|
QTextStream set_wifi_connect(&file);
|
|
set_wifi_connect<<"1"<<endl;
|
|
file.close();
|
|
}
|
|
|
|
}
|
|
else{
|
|
QFile file("/home/data/V_B_state.txt");//文件路径
|
|
if(file.open(QFile::WriteOnly))
|
|
{
|
|
|
|
QTextStream set_wifi_connect(&file);
|
|
set_wifi_connect<<"0"<<endl;
|
|
file.close();
|
|
}
|
|
|
|
}
|
|
if(zijian%16/8){
|
|
QFile file("/home/data/V_A_state.txt");//文件路径
|
|
if(file.open(QFile::WriteOnly))
|
|
{
|
|
QTextStream set_wifi_connect(&file);
|
|
set_wifi_connect<<"1"<<endl;
|
|
}
|
|
file.close();
|
|
}
|
|
else{
|
|
QFile file("/home/data/V_A_state.txt");//文件路径
|
|
if(file.open(QFile::WriteOnly))
|
|
{
|
|
|
|
QTextStream set_wifi_connect(&file);
|
|
set_wifi_connect<<"0"<<endl;
|
|
}
|
|
file.close();
|
|
}
|
|
if(zijian%8/4){
|
|
QFile file("/home/data/I_state.txt");//文件路径
|
|
if(file.open(QFile::WriteOnly))
|
|
{
|
|
QTextStream set_wifi_connect(&file);
|
|
set_wifi_connect<<"1"<<endl;
|
|
}
|
|
file.close();
|
|
}
|
|
else{
|
|
QFile file("/home/data/I_state.txt");//文件路径
|
|
if(file.open(QFile::WriteOnly))
|
|
{
|
|
QTextStream set_wifi_connect(&file);
|
|
set_wifi_connect<<"0"<<endl;
|
|
}
|
|
file.close();
|
|
}
|
|
if(zijian%4/2){
|
|
QFile file("/home/data/JF_state.txt");//文件路径
|
|
if(file.open(QFile::WriteOnly))
|
|
{
|
|
QTextStream set_wifi_connect(&file);
|
|
set_wifi_connect<<"1"<<endl;
|
|
}
|
|
file.close();
|
|
}
|
|
else{
|
|
QFile file("/home/data/JF_state.txt");//文件路径
|
|
if(file.open(QFile::WriteOnly))
|
|
{
|
|
QTextStream set_wifi_connect(&file);
|
|
set_wifi_connect<<"0"<<endl;
|
|
}
|
|
file.close();
|
|
}
|
|
if(zijian%2/1){
|
|
QFile file("/home/data/CW_state.txt");//文件路径
|
|
if(file.open(QFile::WriteOnly))
|
|
{
|
|
QTextStream set_wifi_connect(&file);
|
|
set_wifi_connect<<"1"<<endl;
|
|
}
|
|
file.close();
|
|
}
|
|
else{
|
|
QFile file("/home/data/CW_state.txt");//文件路径
|
|
if(file.open(QFile::WriteOnly))
|
|
{
|
|
QTextStream set_wifi_connect(&file);
|
|
set_wifi_connect<<"0"<<endl;
|
|
}
|
|
file.close();
|
|
}
|
|
break;
|
|
|
|
//热像仪温度获取指令 23.8.16
|
|
case 0x31:
|
|
bool rxy1_flag = true;
|
|
bool rxy2_flag = true;
|
|
//热像仪报警状态部分
|
|
QFileInfo file_alarm6_1("/home/data/Pop_rxy1.txt");
|
|
QFileInfo file_alarm6_2("/home/data/Pop_rxy2.txt");
|
|
|
|
if(file_alarm6_2.exists())
|
|
{
|
|
rxy2_flag = false;
|
|
}
|
|
|
|
if(file_alarm6_1.exists()) //热像仪掉线
|
|
{
|
|
rxy1_flag = false;
|
|
}
|
|
|
|
//热像仪连接状态部分
|
|
QFile file_readr2("/home/data/connect_rxy2.txt");
|
|
if(file_readr2.exists()){
|
|
if(file_readr2.open(QIODevice::ReadOnly | QIODevice::Text))
|
|
{
|
|
QTextStream in(&file_readr2);//创建一个对象让它去读文件
|
|
if(in.readLine()=="1")
|
|
{
|
|
|
|
}
|
|
else
|
|
{
|
|
rxy2_flag = false;
|
|
}
|
|
}
|
|
file_readr2.close();
|
|
}else {
|
|
QFile file_write_rxy2("/home/data/connect_rxy2.txt");//文件路径
|
|
if(file_write_rxy2.open(QFile::WriteOnly))
|
|
{
|
|
QTextStream setWIFI_data(&file_write_rxy2);
|
|
setWIFI_data<<"0"<<endl;
|
|
}
|
|
file_write_rxy2.close();
|
|
rxy2_flag = false;
|
|
}
|
|
|
|
QFile file_readr("/home/data/connect_rxy1.txt");
|
|
if(file_readr.exists()){
|
|
if(file_readr.open(QIODevice::ReadOnly | QIODevice::Text))
|
|
{
|
|
QTextStream in(&file_readr);//创建一个对象让它去读文件
|
|
if(in.readLine()=="1") //代表用户需求开启热像仪1
|
|
{
|
|
|
|
}
|
|
else
|
|
{
|
|
rxy1_flag = false;
|
|
}
|
|
}
|
|
file_readr.close();
|
|
}else{
|
|
QFile file_write_rxy1("/home/data/connect_rxy1.txt");//文件路径
|
|
if(file_write_rxy1.open(QFile::WriteOnly))
|
|
{
|
|
QTextStream setWIFI_data(&file_write_rxy1);
|
|
setWIFI_data<<"0"<<endl;
|
|
|
|
}
|
|
file_write_rxy1.close();
|
|
rxy1_flag = false;
|
|
}
|
|
|
|
temperature_order = data.at(6);
|
|
|
|
if(temperature_order == 1 || temperature_order == 3)
|
|
{
|
|
if(rxy1_flag)
|
|
{
|
|
QFile file_write1("/home/data/rxy_temperature_show1.txt");//文件路径
|
|
if(file_write1.open(QFile::WriteOnly))
|
|
{
|
|
QTextStream data1(&file_write1);
|
|
}
|
|
file_write1.close();
|
|
QFileInfo file1("/home/data/Real-TimeTemperature.txt");
|
|
for(int i =0;i<10;i++)
|
|
{
|
|
Delay_MSec_Temp(1000);
|
|
|
|
if(file1.exists())
|
|
{
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
QFile file_write1("/home/data/rxy_temperature_show1.txt");//文件路径
|
|
|
|
if(file_write1.exists())
|
|
{
|
|
}
|
|
else
|
|
{
|
|
if(file_write1.open(QFile::WriteOnly))
|
|
{
|
|
QTextStream data1(&file_write1);
|
|
}
|
|
file_write1.close();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//实时温度部分 数据正常读取,串口传输数据
|
|
QFile file_temperature("/home/data/Real-TimeTemperature.txt");
|
|
if(file_temperature.exists())
|
|
{
|
|
if(file_temperature.open(QIODevice::ReadOnly))
|
|
{
|
|
QTextStream in(&file_temperature);
|
|
QString maxTemperature = in.readLine();
|
|
QString minTemperature = in.readLine();
|
|
QString averageTemperature = in.readLine();
|
|
qDebug() << maxTemperature << endl
|
|
<<minTemperature << endl
|
|
<<averageTemperature;
|
|
|
|
int max = maxTemperature.toFloat() * 100;
|
|
int min = minTemperature.toFloat() * 100;
|
|
int ave = averageTemperature.toFloat() * 100;
|
|
ARM1->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
|
|
<<minTemperature1 << endl
|
|
<<averageTemperature1;
|
|
|
|
int max1 = maxTemperature1.toFloat() * 100;
|
|
int min1 = minTemperature1.toFloat() * 100;
|
|
int ave1 = averageTemperature1.toFloat() * 100;
|
|
ARM1->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<QSerialPortInfo> list3;
|
|
list3=QSerialPortInfo::availablePorts();
|
|
for(int i=0;i<list3.size();i++)
|
|
foreach(const QSerialPortInfo &info,QSerialPortInfo::availablePorts())
|
|
{
|
|
if(info.portName()==COM)
|
|
{
|
|
QSerialPortInfo SerialPortInfo= info;
|
|
SerialPort1.setPort(info);
|
|
setserial();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void UART1::uart_init(QString COM,uint8_t Enable)
|
|
{
|
|
openserial(COM);
|
|
//ARM1->testSerialPort(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<len; i++)
|
|
{
|
|
temp=data.at(i);
|
|
rc^=temp;
|
|
for(j=0;j<8;j++){
|
|
if(rc&0X0001){
|
|
rc>>=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"<<FrameLen;
|
|
break;
|
|
|
|
case 5:
|
|
//取帧长低8
|
|
FrameLen |= data;
|
|
//qDebug() << "get len l8";
|
|
//qDebug() << "len:" << FrameLen;
|
|
|
|
if(FrameLen <= 0){
|
|
UartFrameReset();
|
|
}else{
|
|
FrameData.push_back(data);
|
|
FrameCount++;
|
|
}
|
|
break;
|
|
|
|
case 6:
|
|
if(FrameLen + 2 > 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);
|
|
}
|
|
|
|
|