📄 slavesimens.c
字号:
{
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;
INT8U buff[20];
char SearchStr[10];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -