refactor codes.

This commit is contained in:
pandx 2024-11-08 17:55:17 +08:00
parent 5a67571482
commit 4547cff99a
2 changed files with 65 additions and 223 deletions

View File

@ -182,6 +182,7 @@ public:
float Calcoe(int ran, int iChannel, std::string& product, int range); float Calcoe(int ran, int iChannel, std::string& product, int range);
void WriteDatFile(int sampleRate, std::string& strMeasurementID, int iChannel, std::vector<float>& vecData); void WriteDatFile(int sampleRate, std::string& strMeasurementID, int iChannel, std::vector<float>& vecData);
float ScaleConvert(int highbit); float ScaleConvert(int highbit);
void DataExtract(RecvData *p, int id, unsigned int &lowbit, float &n);
// command category // command category
void modify_info(unsigned short id, char* zigbee); void modify_info(unsigned short id, char* zigbee);

View File

@ -31,6 +31,15 @@ void Uart::RecordBattery(std::string &strLongAddr, DataRecvStatic &dataStatic, s
sqlite_db_ctrl::instance().InsertData(T_BATTERY_INFO(TNAME), insertSql); sqlite_db_ctrl::instance().InsertData(T_BATTERY_INFO(TNAME), insertSql);
} }
void Uart::DataExtract(RecvData *p, int id, unsigned int &lowbit, float &n) {
char buf[20] = {0};
sprintf(buf, "%02x%02x", p->Data[id+1], p->Data[id]);
int temp = (unsigned int)strtol(buf, NULL, 16);
unsigned char highbit = temp >> 14 & 0x3;
lowbit = temp & 0x3fff;
n = ScaleConvert(highbit);
}
void Uart::DealDataNodeFeature(const char *pData, int flag) { void Uart::DealDataNodeFeature(const char *pData, int flag) {
RecvData *pRecvData = (RecvData *)pData; RecvData *pRecvData = (RecvData *)pData;
char whereCon[1024] = {0}; char whereCon[1024] = {0};
@ -104,7 +113,7 @@ void Uart::DealDataNodeFeature(const char *pData, int flag) {
strTimetamp = nowTimetamp; strTimetamp = nowTimetamp;
int iTemp = 0; int iTemp = 0;
unsigned char highbit = 0; // unsigned char highbit = 0;
unsigned int lowbit = 0; unsigned int lowbit = 0;
float n = 0; float n = 0;
@ -141,21 +150,10 @@ void Uart::DealDataNodeFeature(const char *pData, int flag) {
iTemp = (int)strtol(buf, NULL, 16); iTemp = (int)strtol(buf, NULL, 16);
dataStatic.Voltage = iTemp; dataStatic.Voltage = iTemp;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 30, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[31], pRecvData->Data[30]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataStatic.nodeWorkTime = lowbit * n; dataStatic.nodeWorkTime = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 32, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[33], pRecvData->Data[32]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataStatic.nodeSendTime = lowbit * n; dataStatic.nodeSendTime = lowbit * n;
dataStatic.nodeWorkTime = dataStatic.nodeWorkTime - dataStatic.nodeSendTime; dataStatic.nodeWorkTime = dataStatic.nodeWorkTime - dataStatic.nodeSendTime;
@ -276,76 +274,32 @@ void Uart::DealDataNodeFeature(const char *pData, int flag) {
sprintf(szTableName, "t_data_%s", strLongAddr.c_str()); sprintf(szTableName, "t_data_%s", strLongAddr.c_str());
DataRecvDym dataDymX; DataRecvDym dataDymX;
memset(buf, 0, sizeof(buf));
sprintf(buf, "%02x%02x", pRecvData->Data[9], pRecvData->Data[8]); DataExtract(pRecvData, 8, lowbit, n);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymX.DiagnosisPk = lowbit * n; dataDymX.DiagnosisPk = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 10, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[11], pRecvData->Data[10]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymX.RmsValues = lowbit * n; dataDymX.RmsValues = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 12, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[13], pRecvData->Data[12]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymX.IntegratPk = lowbit * n; dataDymX.IntegratPk = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 14, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[15], pRecvData->Data[14]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymX.IntegratRMS = lowbit * n; dataDymX.IntegratRMS = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 16, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[17], pRecvData->Data[16]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymX.Amp1 = lowbit * n; dataDymX.Amp1 = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 18, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[19], pRecvData->Data[18]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymX.Amp2 = lowbit * n; dataDymX.Amp2 = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 20, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[21], pRecvData->Data[20]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymX.Amp3 = lowbit * n; dataDymX.Amp3 = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 22, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[23], pRecvData->Data[22]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymX.Amp4 = lowbit * n; dataDymX.Amp4 = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 24, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[25], pRecvData->Data[24]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymX.Amp5 = lowbit * n; dataDymX.Amp5 = lowbit * n;
memset(buf, 0, sizeof(buf)); memset(buf, 0, sizeof(buf));
@ -413,76 +367,32 @@ void Uart::DealDataNodeFeature(const char *pData, int flag) {
valNodeFeature["timeStamp"] = nowTimetamp; valNodeFeature["timeStamp"] = nowTimetamp;
valNodeData.append(valNodeFeature); valNodeData.append(valNodeFeature);
DataRecvDym dataDymY; DataRecvDym dataDymY;
memset(buf, 0, sizeof(buf));
sprintf(buf, "%02x%02x", pRecvData->Data[35], pRecvData->Data[34]); DataExtract(pRecvData, 34, lowbit, n);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymY.DiagnosisPk = lowbit * n; dataDymY.DiagnosisPk = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 36, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[37], pRecvData->Data[36]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymY.RmsValues = lowbit * n; dataDymY.RmsValues = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 38, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[39], pRecvData->Data[38]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymY.IntegratPk = lowbit * n; dataDymY.IntegratPk = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 40, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[41], pRecvData->Data[40]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymY.IntegratRMS = lowbit * n; dataDymY.IntegratRMS = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 42, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[43], pRecvData->Data[42]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymY.Amp1 = lowbit * n; dataDymY.Amp1 = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 44, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[45], pRecvData->Data[44]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymY.Amp2 = lowbit * n; dataDymY.Amp2 = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 46, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[47], pRecvData->Data[46]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymY.Amp3 = lowbit * n; dataDymY.Amp3 = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 48, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[49], pRecvData->Data[48]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymY.Amp4 = lowbit * n; dataDymY.Amp4 = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 50, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[51], pRecvData->Data[50]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymY.Amp5 = lowbit * n; dataDymY.Amp5 = lowbit * n;
memset(buf, 0, sizeof(buf)); memset(buf, 0, sizeof(buf));
@ -545,115 +455,46 @@ void Uart::DealDataNodeFeature(const char *pData, int flag) {
valNodeData.append(valNodeFeature); valNodeData.append(valNodeFeature);
DataRecvDym dataDymZ; DataRecvDym dataDymZ;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 52, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[53], pRecvData->Data[52]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymZ.DiagnosisPk = lowbit * n; dataDymZ.DiagnosisPk = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 54, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[55], pRecvData->Data[54]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymZ.RmsValues = lowbit * n; dataDymZ.RmsValues = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 56, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[57], pRecvData->Data[56]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymZ.IntegratPk = lowbit * n; dataDymZ.IntegratPk = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 58, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[59], pRecvData->Data[58]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymZ.IntegratRMS = lowbit * n; dataDymZ.IntegratRMS = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 60, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[61], pRecvData->Data[60]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymZ.Amp1 = lowbit * n; dataDymZ.Amp1 = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 62, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[63], pRecvData->Data[62]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymZ.Amp2 = lowbit * n; dataDymZ.Amp2 = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 64, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[65], pRecvData->Data[64]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymZ.Amp3 = lowbit * n; dataDymZ.Amp3 = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 66, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[67], pRecvData->Data[66]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymZ.Amp4 = lowbit * n; dataDymZ.Amp4 = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 68, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[69], pRecvData->Data[68]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymZ.Amp5 = lowbit * n; dataDymZ.Amp5 = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 70, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[71], pRecvData->Data[70]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymZ.EnvelopEnergy = lowbit * n; dataDymZ.EnvelopEnergy = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 72, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[73], pRecvData->Data[72]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymZ.Phase1 = lowbit * n; dataDymZ.Phase1 = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 74, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[75], pRecvData->Data[74]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymZ.Phase2 = lowbit * n; dataDymZ.Phase2 = lowbit * n;
memset(buf, 0, sizeof(buf)); DataExtract(pRecvData, 76, lowbit, n);
sprintf(buf, "%02x%02x", pRecvData->Data[77], pRecvData->Data[76]);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymZ.Phase3 = lowbit * n; dataDymZ.Phase3 = lowbit * n;
sprintf(buf, "%02x%02x", pRecvData->Data[79], pRecvData->Data[78]); DataExtract(pRecvData, 78, lowbit, n);
iTemp = (unsigned int)strtol(buf, NULL, 16);
highbit = iTemp >> 14 & 0x3;
lowbit = iTemp & 0x3fff;
n = ScaleConvert(highbit);
dataDymZ.Phase4 = lowbit * n; dataDymZ.Phase4 = lowbit * n;
memset(whereCon, 0, 1024); memset(whereCon, 0, 1024);
@ -887,14 +728,14 @@ std::vector<float> Uart::DealData(int iChannel, float coe, unsigned int sampleRa
deallen = j * 92; deallen = j * 92;
} }
for (size_t i = 0; i < deallen; i++) { for (size_t i = 0; i < deallen; i++) {
float fTemp = 0.0; float fTemp = 0.0f;
memset(buf, 0, 8); memset(buf, 0, 8);
sprintf(buf, "%02x%02x", dealdata[2 * i + 1], dealdata[i * 2]); sprintf(buf, "%02x%02x", dealdata[2 * i + 1], dealdata[i * 2]);
iTemp = strtol(buf, NULL, 16); iTemp = strtol(buf, NULL, 16);
if (iTemp < 0x8000) { if (iTemp < 0x8000) {
fTemp = iTemp * coe * 9.8; // convert to m/s2 fTemp = iTemp * coe * 9.8f; // convert to m/s2
} else { } else {
fTemp = (((~iTemp) & 0xffff) + 1) * -coe * 9.8; // convert to m/s2 fTemp = (((~iTemp) & 0xffff) + 1) * -coe * 9.8f; // convert to m/s2
} }
vecData.push_back(fTemp); vecData.push_back(fTemp);
if (strProduct == "01") { if (strProduct == "01") {
@ -997,32 +838,32 @@ void Uart::DealWave() {
} }
float Uart::Calcoe(int ran, int iChannel, std::string &product, int range) { float Uart::Calcoe(int ran, int iChannel, std::string &product, int range) {
float coe = 0.0; float coe = 0.0f;
if (product == "01") { if (product == "01") {
switch (ran) { switch (ran) {
case 0: { case 0: {
range = 8; range = 8;
coe = 8 * 1.0 / 32767; coe = 8 * 1.0f / 32767;
} break; } break;
case 1: { case 1: {
range = 16; range = 16;
coe = 16 * 1.0 / 32767; coe = 16 * 1.0f / 32767;
} break; } break;
case 2: { case 2: {
range = 32; range = 32;
coe = 32 * 1.0 / 32767; coe = 32 * 1.0f / 32767;
} break; } break;
case 3: { case 3: {
range = 64; range = 64;
coe = 64 * 1.0 / 32767; coe = 64 * 1.0f / 32767;
} break; } break;
} }
} else if (product == "02") { } else if (product == "02") {
if (iChannel == WAVE_X || iChannel == WAVE_Y) { if (iChannel == WAVE_X || iChannel == WAVE_Y) {
coe = 0.00048828125; coe = 0.00048828125f;
} }
if (iChannel == WAVE_Z) { if (iChannel == WAVE_Z) {
coe = 0.00172607421875; coe = 0.00172607421875f;
} }
} }
return coe; return coe;