|
|
@ -4617,7 +4617,7 @@ void ProvBuban104SendAIwithFloat(int commid, RTUMSG *rtumsg, int iGroupNo)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
char commandbuf[MAX_POLLCMD_BUF_LEN];
|
|
|
|
char commandbuf[MAX_POLLCMD_BUF_LEN];
|
|
|
|
//DWORD dwStartAddr;
|
|
|
|
//DWORD dwStartAddr;
|
|
|
|
int iLenth, iSendCount=1, iaddr0=1, iaddr1=1;
|
|
|
|
int iLenth, iSendCount = 1, iaddr0 = 1, iaddr1 = 1, ibyid = 11827;
|
|
|
|
int i, j, iAllDataCount, iSendNum, flag;
|
|
|
|
int i, j, iAllDataCount, iSendNum, flag;
|
|
|
|
int iNo, iCmdType, igno, iItemNo;
|
|
|
|
int iNo, iCmdType, igno, iItemNo;
|
|
|
|
float *pfValue;
|
|
|
|
float *pfValue;
|
|
|
@ -4660,7 +4660,7 @@ void ProvBuban104SendAIwithFloat(int commid, RTUMSG *rtumsg, int iGroupNo)
|
|
|
|
if (iAllDataCount - i > MAX_FLOATAINUM)
|
|
|
|
if (iAllDataCount - i > MAX_FLOATAINUM)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
iSendNum = MAX_FLOATAINUM;
|
|
|
|
iSendNum = MAX_FLOATAINUM;
|
|
|
|
commandbuf[14] = (iSendNum & 0x80); // 通用分类数据集数目NGD
|
|
|
|
commandbuf[14] = (iSendNum | 0x80); // 通用分类数据集数目NGD
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -4672,23 +4672,34 @@ void ProvBuban104SendAIwithFloat(int commid, RTUMSG *rtumsg, int iGroupNo)
|
|
|
|
iLenth = 15;
|
|
|
|
iLenth = 15;
|
|
|
|
for (j = 0; j < iSendNum; j++)
|
|
|
|
for (j = 0; j < iSendNum; j++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
pfValue = (float *)&commandbuf[iLenth+14];
|
|
|
|
pfValue = (float *)&commandbuf[iLenth + 13];
|
|
|
|
flag = GetAIPntMsg(j + iNo, (unsigned int*)&igno, (unsigned int*)&iItemNo, &sCurTime, pfValue, (unsigned int*)&iaddr1);
|
|
|
|
flag = GetAIPntMsg(j + iNo, (unsigned int*)&igno, (unsigned int*)&iItemNo, &sCurTime, pfValue, (unsigned int*)&iaddr1);
|
|
|
|
if (0 == flag)
|
|
|
|
if (0 == flag)
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
if (-1 == flag)
|
|
|
|
if (-1 == flag)
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
|
|
|
|
if (0 == j)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
commandbuf[9] = (u_char)iaddr1; //
|
|
|
|
|
|
|
|
commandbuf[10] = (u_char)(iaddr1 >> 8); // 应用服务数据单元公共地址
|
|
|
|
|
|
|
|
}
|
|
|
|
if (iaddr1 == iaddr0)
|
|
|
|
if (iaddr1 == iaddr0)
|
|
|
|
;
|
|
|
|
{
|
|
|
|
|
|
|
|
; //commandbuf[9] = (u_char)iaddr0; //
|
|
|
|
|
|
|
|
//commandbuf[10] = (u_char)(iaddr0 >> 8); // 应用服务数据单元公共地址
|
|
|
|
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
iaddr0 = iaddr1;
|
|
|
|
iaddr0 = iaddr1;
|
|
|
|
if (15 == iLenth)
|
|
|
|
if (15 == iLenth)
|
|
|
|
;
|
|
|
|
{
|
|
|
|
|
|
|
|
; //commandbuf[9] = (u_char)iaddr0; //
|
|
|
|
|
|
|
|
//commandbuf[10] = (u_char)(iaddr0 >> 8); // 应用服务数据单元公共地址
|
|
|
|
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
commandbuf[iLenth] = igno;
|
|
|
|
commandbuf[iLenth++] = igno;
|
|
|
|
commandbuf[iLenth++] = iItemNo;
|
|
|
|
commandbuf[iLenth++] = iItemNo;
|
|
|
|
commandbuf[iLenth++] = 1; // 描述类别KOD(实际值)
|
|
|
|
commandbuf[iLenth++] = 1; // 描述类别KOD(实际值)
|
|
|
|
commandbuf[iLenth++] = 7; // 数据类型
|
|
|
|
commandbuf[iLenth++] = 7; // 数据类型
|
|
|
@ -4701,20 +4712,22 @@ void ProvBuban104SendAIwithFloat(int commid, RTUMSG *rtumsg, int iGroupNo)
|
|
|
|
commandbuf[iLenth++] = (u_char)sCurTime.Day;
|
|
|
|
commandbuf[iLenth++] = (u_char)sCurTime.Day;
|
|
|
|
commandbuf[iLenth++] = (u_char)sCurTime.Month;
|
|
|
|
commandbuf[iLenth++] = (u_char)sCurTime.Month;
|
|
|
|
commandbuf[iLenth++] = (u_char)(sCurTime.Year % 100);
|
|
|
|
commandbuf[iLenth++] = (u_char)(sCurTime.Year % 100);
|
|
|
|
iLenth += 12;
|
|
|
|
iLenth += 8;
|
|
|
|
//*pfValue = SequenceHostToRtufloat((float)((int)pntmsg.RawValue));
|
|
|
|
//*pfValue = SequenceHostToRtufloat((float)((int)pntmsg.RawValue));
|
|
|
|
|
|
|
|
|
|
|
|
//iLenth += sizeof(float);
|
|
|
|
//iLenth += sizeof(float);
|
|
|
|
//commandbuf[iLenth++] = 0;
|
|
|
|
commandbuf[iLenth++] = (u_char)ibyid;
|
|
|
|
|
|
|
|
commandbuf[iLenth++] = (u_char)(ibyid >> 8);
|
|
|
|
|
|
|
|
commandbuf[iLenth++] = (u_char)(ibyid >> 16);
|
|
|
|
|
|
|
|
commandbuf[iLenth++] = (u_char)(ibyid >> 24);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (15 == iLenth)
|
|
|
|
if (15 == iLenth)
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
commandbuf[9] = (u_char)iaddr0; //
|
|
|
|
|
|
|
|
commandbuf[10] = (u_char)(iaddr0 >> 8); // 应用服务数据单元公共地址
|
|
|
|
|
|
|
|
i += j;
|
|
|
|
i += j;
|
|
|
|
|
|
|
|
|
|
|
|
if (flag == 0)
|
|
|
|
if (flag == 0)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
printf("get total %d item!\n", i);
|
|
|
|
i = iAllDataCount;
|
|
|
|
i = iAllDataCount;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (i >= iAllDataCount)
|
|
|
|
if (i >= iAllDataCount)
|
|
|
@ -4722,12 +4735,13 @@ void ProvBuban104SendAIwithFloat(int commid, RTUMSG *rtumsg, int iGroupNo)
|
|
|
|
commandbuf[14] = j; // 通用分类数据集数目NGD
|
|
|
|
commandbuf[14] = j; // 通用分类数据集数目NGD
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
commandbuf[14] = (j & 0x80); // 通用分类数据集数目NGD
|
|
|
|
commandbuf[14] = (j | 0x80); // 通用分类数据集数目NGD
|
|
|
|
|
|
|
|
|
|
|
|
commandbuf[1] = (char)(iLenth - 2);
|
|
|
|
commandbuf[1] = (char)(iLenth - 2);
|
|
|
|
|
|
|
|
|
|
|
|
PutPollCmdToBuf(commid, iCmdType, 0, (char *)commandbuf, iLenth);
|
|
|
|
PutPollCmdToBuf(commid, iCmdType, 0, (char *)commandbuf, iLenth);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//printf("get total %d item!\n", i);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*void ProvBuban104SendAIwithFloat(int commid, RTUMSG *rtumsg, int iGroupNo)
|
|
|
|
/*void ProvBuban104SendAIwithFloat(int commid, RTUMSG *rtumsg, int iGroupNo)
|
|
|
|