📄 slavesimens.c
字号:
if( a != '(') { ptr = (INT8U *)strchr((char *)ptr, '('); if(*ptr== NULL) { memset(pMaxRqu, 0xff, 3); memset(pMaxRquTime, 0xff, 4); return; } ptr++; } DealWithMaxRqu(ptr, pMaxRqu, pMaxRquTime); } else { memset(pMaxRqu, 0xff, 3); memset(pMaxRquTime, 0xff, 4); }}void GetPowerFact(INT8U *pRcvData, INT8U *pCharacterStr, INT8U *pResult){ INT8U *ptr; INT8U buff[20]; int SearchStrLen; INT8U a; ptr = (INT8U *)strstr((char *)pRcvData, (char *)pCharacterStr); SearchStrLen=strlen((char *)pCharacterStr); if(ptr!= NULL) { ptr+=SearchStrLen; a = *(ptr-1); if( a != '(') { ptr = (INT8U *)strchr((char *)ptr, '('); if(*ptr== NULL) { memset(pResult, 0xff, 2); return; } ptr++; } memcpy(buff, ptr+1, 1); memcpy(buff+1, ptr+3, 2); buff[4] = '0'; mASCIIToBCD(buff, 4, pResult); } else memset(pResult, 0xff, 2);}BOOL SearchSiemens(INT8U *pRcvData, INT8U *pCharacterStr){ INT8U *ptr; int SearchStrLen; ptr=(INT8U *)strstr((char *)pRcvData, (char *)pCharacterStr); SearchStrLen=strlen((char *)pCharacterStr); if(ptr!= NULL) { return TRUE; } else return FALSE;}void GetVoltage(INT8U *pRcvData, INT8U *pCharacterStr, INT8U *pResult){ INT8U *ptr; INT8U buff[20]; int SearchStrLen; INT8U a; ptr = (INT8U *)strstr((char *)pRcvData, (char *)pCharacterStr); SearchStrLen=strlen((char *)pCharacterStr); if(ptr!= NULL) { ptr+=SearchStrLen; a = *(ptr-1); if( a != '(') { ptr = (INT8U *)strchr((char *)ptr, '('); if(ptr== NULL) { memcpy((INT8U *)pResult, 0, 2); return; } ptr++; } buff[0] = '0'; memcpy(buff+1, ptr, 3); mASCIIToBCD(buff, 4, pResult); } else memset(pResult, 0xff, 2);}void GetCurrent(INT8U *pRcvData, INT8U *pCharacterStr, INT8U *pResult){ INT8U *ptr; INT8U buff[20]; int SearchStrLen; INT8U a; ptr = (INT8U *)strstr((char *)pRcvData, (char *)pCharacterStr); SearchStrLen=strlen((char *)pCharacterStr); if(ptr!= NULL) { ptr+=SearchStrLen; a = *(ptr-1); if( a != '(') { ptr = (INT8U *)strchr((char *)ptr, '('); if(ptr== NULL) { memcpy((INT8U *)pResult, 0, 2); return; } ptr++; } memcpy(buff, ptr, 2); memcpy(buff+2, ptr+3, 2); mASCIIToBCD(buff, 4, pResult); } else memset(pResult, 0xff, 2);}void GetVoltageDeg(INT8U *pRcvData, INT8U *pCharacterStr, INT8U *pResult){ INT8U *ptr; INT8U buff[20]; int SearchStrLen; INT8U a,tbuff[5]; INT16U gti; ptr = (INT8U *)strstr((char *)pRcvData, (char *)pCharacterStr); SearchStrLen=strlen((char *)pCharacterStr); if(ptr!= NULL) { ptr+=SearchStrLen; a = *(ptr-1); if( a != '(') { ptr = (INT8U *)strchr((char *)ptr, '('); if(ptr== NULL) { memcpy((INT8U *)pResult, 0, 2); return; } ptr++; } for(gti=0;gti<5;gti++) { if(ptr[gti]=='.') break; } if(gti>=5) { memcpy(buff, ptr, 4); for(gti=0;gti<4;gti++) { tbuff[gti]=0; if(buff[gti]>='0' && buff[gti]<='9') { tbuff[gti]=buff[gti] -'0'; } } pResult[1]=((tbuff[1]<<4)|(tbuff[2])); pResult[0]=((tbuff[3]<<4)|0); } else { memcpy(buff, ptr, 5); for(gti=0;gti<5;gti++) { tbuff[gti]=0; if(buff[gti]>='0' && buff[gti]<='9') { tbuff[gti]=buff[gti] -'0'; } } pResult[1]=((tbuff[0]<<4)|(tbuff[1])); pResult[0]=((tbuff[2]<<4)|(tbuff[4])); } } else memset(pResult, 0xff, 2);}void GetCurrentDeg(INT8U *pRcvData, INT8U *pCharacterStr, INT8U *pResult){ INT8U *ptr; INT8U buff[20]; int SearchStrLen; INT8U a,tbuff[5]; INT16U gti; ptr = (INT8U *)strstr((char *)pRcvData, (char *)pCharacterStr); SearchStrLen=strlen((char *)pCharacterStr); if(ptr!= NULL) { ptr+=SearchStrLen; a = *(ptr-1); if( a != '(') { ptr = (INT8U *)strchr((char *)ptr, '('); if(ptr== NULL) { memcpy((INT8U *)pResult, 0, 2); return; } ptr++; } for(gti=0;gti<5;gti++) { if(ptr[gti]=='.') break; } if(gti>=5) { memcpy(buff, ptr, 4); for(gti=0;gti<4;gti++) { tbuff[gti]=0; if(buff[gti]>='0' && buff[gti]<='9') { tbuff[gti]=buff[gti] -'0'; } } pResult[1]=((tbuff[1]<<4)|(tbuff[2])); pResult[0]=((tbuff[3]<<4)|0); } else { memcpy(buff, ptr, 5); for(gti=0;gti<5;gti++) { tbuff[gti]=0; if(buff[gti]>='0' && buff[gti]<='9') { tbuff[gti]=buff[gti] -'0'; } } pResult[1]=((tbuff[0]<<4)|(tbuff[1])); pResult[0]=((tbuff[2]<<4)|(tbuff[4])); } } else memset(pResult, 0xff, 2);}void DealWithSiemensZFB410(INT8U *pRcvData, int len, SiemensDataType *pSiemensData,INT8U lstat){ INT8U *ptr; INT8U buff[20]; char SearchStr[10]; int SearchStrLen; *(pRcvData+len)='\0'; //正向有功总电能// GetZFBEnergy(pRcvData, (INT8U *)"20(", (INT8U *)(pSiemensData->E)); //上月正向有功总电能// GetZFBEnergy(pRcvData, (INT8U *)"\n20*", (INT8U *)(pSiemensData->LastMonthE)); //正向有功费率电能// GetZFBEnergy(pRcvData, (INT8U *)"8.1(", (INT8U *)(pSiemensData->RateE.FengE)); GetZFBEnergy(pRcvData, (INT8U *)"8.2(", (INT8U *)(pSiemensData->RateE.PingE)); GetZFBEnergy(pRcvData, (INT8U *)"8.3(", (INT8U *)(pSiemensData->RateE.GuE)); //上月正向有功费率电能// GetZFBEnergy(pRcvData, (INT8U *)"\n8.1*", (INT8U *)(pSiemensData->LastMonthRateE.FengE)); GetZFBEnergy(pRcvData, (INT8U *)"\n8.2*", (INT8U *)(pSiemensData->LastMonthRateE.PingE)); GetZFBEnergy(pRcvData, (INT8U *)"\n8.3*", (INT8U *)(pSiemensData->LastMonthRateE.GuE)); //正向无功总电能// GetZFBEnergy(pRcvData, (INT8U *)"22(", (INT8U *)(pSiemensData->NoE)); //正向无功总电能// GetZFBEnergy(pRcvData, (INT8U *)"22(", (INT8U *)(pSiemensData->NoE)); //上月正向无功总电能// GetZFBEnergy(pRcvData, (INT8U *)"\n22*", (INT8U *)(pSiemensData->LastMonthNoE)); //反向有功总电能// GetZFBEnergy(pRcvData, (INT8U *)"21(", (INT8U *)(pSiemensData->NE)); //上月反向有功总电能// GetZFBEnergy(pRcvData, (INT8U *)"\n21*", (INT8U *)(pSiemensData->LastMonthNE));#if 0 if(lstat=='4') {//printf("bbbbbbbbbbbbbbbbbbbbbbbbbbbb"); //正向无功总电能// GetZFBEnergy(pRcvData, (INT8U *)"22(", (INT8U *)(pSiemensData->NoE)); //正向无功总电能// GetZFBEnergy(pRcvData, (INT8U *)"22(", (INT8U *)(pSiemensData->NoE)); //上月正向无功总电能// GetZFBEnergy(pRcvData, (INT8U *)"\n22*", (INT8U *)(pSiemensData->LastMonthNoE)); //反向有功总电能// GetZFBEnergy(pRcvData, (INT8U *)"21(", (INT8U *)(pSiemensData->NE)); //上月反向有功总电能// GetZFBEnergy(pRcvData, (INT8U *)"\n21*", (INT8U *)(pSiemensData->LastMonthNE)); } else {//正向无功总电能// GetZFBEnergy(pRcvData, (INT8U *)"21(", (INT8U *)(pSiemensData->NoE)); //正向无功总电能// GetZFBEnergy(pRcvData, (INT8U *)"21(", (INT8U *)(pSiemensData->NoE)); //上月正向无功总电能// GetZFBEnergy(pRcvData, (INT8U *)"\n21*", (INT8U *)(pSiemensData->LastMonthNoE)); //反向有功总电能// GetZFBEnergy(pRcvData, (INT8U *)"22(", (INT8U *)(pSiemensData->NE)); //上月反向有功总电能// GetZFBEnergy(pRcvData, (INT8U *)"\n22*", (INT8U *)(pSiemensData->LastMonthNE)); }#endif //反向有功费率电能// GetZFBEnergy(pRcvData, (INT8U *)"38.1(", (INT8U *)(pSiemensData->RateNE.FengE)); GetZFBEnergy(pRcvData, (INT8U *)"38.2(", (INT8U *)(pSiemensData->RateNE.PingE)); GetZFBEnergy(pRcvData, (INT8U *)"38.3(", (INT8U *)(pSiemensData->RateNE.GuE)); //上月反向有功费率电能// GetZFBEnergy(pRcvData, (INT8U *)"\n38.1*", (INT8U *)(pSiemensData->LastMonthRateNE.FengE)); GetZFBEnergy(pRcvData, (INT8U *)"\n38.2*", (INT8U *)(pSiemensData->LastMonthRateNE.PingE)); GetZFBEnergy(pRcvData, (INT8U *)"\n38.3*", (INT8U *)(pSiemensData->LastMonthRateNE.GuE)); //反向无功总电能// GetZFBEnergy(pRcvData, (INT8U *)"23(", (INT8U *)(pSiemensData->NNoE)); //上月反向无功总电能// GetZFBEnergy(pRcvData, (INT8U *)"\n23*", (INT8U *)(pSiemensData->LastMonthNNoE)); if(SearchSiemens(pRcvData, (INT8U *)"\n10*")==TRUE) { //上月正向有功总需量 GetMaxRqu(pRcvData, (INT8U *)"\n10*", (INT8U *)(pSiemensData->LastMonthMaxRqu), (INT8U *)(pSiemensData->LastMonthMaxRquT)); } if(SearchSiemens(pRcvData, (INT8U *)"\n6.0(")==TRUE) { //正向有功总需量 GetMaxRqu(pRcvData, (INT8U *)"\n6.0(", (INT8U *)(pSiemensData->MaxRqu), (INT8U *)(pSiemensData->MaxRquT)); //上月正向有功总需量 GetMaxRqu(pRcvData, (INT8U *)"\n6.0*", (INT8U *)(pSiemensData->LastMonthMaxRqu), (INT8U *)(pSiemensData->LastMonthMaxRquT)); } else if(SearchSiemens(pRcvData, (INT8U *)"\n6(")==TRUE) { //正向有功总需量 GetMaxRqu(pRcvData, (INT8U *)"\n6(", (INT8U *)(pSiemensData->MaxRqu), (INT8U *)(pSiemensData->MaxRquT)); //上月正向有功总需量 GetMaxRqu(pRcvData, (INT8U *)"\n6*", (INT8U *)(pSiemensData->LastMonthMaxRqu), (INT8U *)(pSiemensData->LastMonthMaxRquT)); } //正向有功费率需量// GetMaxRqu(pRcvData, (INT8U *)"6.1(", (INT8U *)(pSiemensData->RateMaxRqu.feng), (INT8U *)(pSiemensData->RateMaxRquT.feng)); GetMaxRqu(pRcvData, (INT8U *)"6.2(", (INT8U *)(pSiemensData->RateMaxRqu.ping), (INT8U *)(pSiemensData->RateMaxRquT.ping)); GetMaxRqu(pRcvData, (INT8U *)"6.3(", (INT8U *)(pSiemensData->RateMaxRqu.gu), (INT8U *)(pSiemensData->RateMaxRquT.gu)); //上月正向有功费率需量// GetMaxRqu(pRcvData, (INT8U *)"\n6.1*", (INT8U *)(pSiemensData->LastMonthRateMaxRqu.feng), (INT8U *)(pSiemensData->LastMonthRateMaxRquT.feng)); GetMaxRqu(pRcvData, (INT8U *)"\n6.2*", (INT8U *)(pSiemensData->LastMonthRateMaxRqu.ping), (INT8U *)(pSiemensData->LastMonthRateMaxRquT.ping)); GetMaxRqu(pRcvData, (INT8U *)"\n6.3*", (INT8U *)(pSiemensData->LastMonthRateMaxRqu.gu), (INT8U *)(pSiemensData->LastMonthRateMaxRquT.gu)); //实时电压// if(SearchSiemens(pRcvData, (INT8U *)"\nL1(")==TRUE) { GetVoltage(pRcvData, (INT8U *)"\nL1(", (INT8U *)(pSiemensData->V.a)); GetVoltage(pRcvData, (INT8U *)"\nL2(", (INT8U *)(pSiemensData->V.b)); GetVoltage(pRcvData, (INT8U *)"\nL3(", (INT8U *)(pSiemensData->V.c)); } else { GetVoltage(pRcvData, (INT8U *)"\nL.1(", (INT8U *)(pSiemensData->V.a)); GetVoltage(pRcvData, (INT8U *)"\nL.2(", (INT8U *)(pSiemensData->V.b)); GetVoltage(pRcvData, (INT8U *)"\nL.3(", (INT8U *)(pSiemensData->V.c)); } //时间// strcpy(SearchStr, "\12("); ptr = (INT8U *)strstr((char *)pRcvData, (char *)SearchStr); SearchStrLen = strlen(SearchStr); if(ptr!= NULL) { ptr+=SearchStrLen; pSiemensData->Date[3]=((*ptr-'0')<<4)|(*(ptr+1)-'0'); buff[2]=(*ptr-'0')*10+(*(ptr+1)-'0'); ptr+=3; pSiemensData->Date[2]=((*ptr-'0')<<4)|(*(ptr+1)-'0'); buff[1]=(*ptr-'0')*10+(*(ptr+1)-'0'); ptr+=3; pSiemensData->Date[1]=((*ptr-'0')<<4)|(*(ptr+1)-'0'); buff[0]=(*ptr-'0')*10+(*(ptr+1)-'0'); // pSiemensData->Date[0]= GetWeek(buff[2],buff[1],buff[0]); } else memset((INT8U *)(pSiemensData->Date), 0xff, 4); strcpy(SearchStr, "\11("); ptr = (INT8U *)strstr((char *)pRcvData, (char *)SearchStr); SearchStrLen = strlen((char *)SearchStr); if(ptr!= NULL) { ptr+=SearchStrLen; pSiemensData->Time[2]=((*ptr-'0')<<4)|(*(ptr+1)-'0'); ptr+=3; pSiemensData->Time[1]=((*ptr-'0')<<4)|(*(ptr+1)-'0'); ptr+=3; pSiemensData->Time[0]=((*ptr-'0')<<4)|(*(ptr+1)-'0'); } else { memset((INT8U *)(pSiemensData->Time), 0xff, 3); }}void DealWithSiemensZFD405(INT8U *pRcvData, int len, SiemensDataType *pSiemensData){ INT8U *ptr;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -