📄 builddata.cpp
字号:
case PARA_DOWNLOAD_MSU://MSU参数下装
len = 11+sizeof(MSU_PARA);
buf[1] = (BYTE)nGroupNo;
buf[2] = (BYTE)nAddrNo;
buf[3] = LOBYTE(2+sizeof(MSU_PARA));
buf[4] = HIBYTE(2+sizeof(MSU_PARA));
buf[5] = 0x20;
buf[6] = 0x00;
buf[7] = 0x00;
buf[8] = 0x00;
buf[9] = pMsu.Head;
buf[10] = HIBYTE(pMsu.V_Over);
buf[11] = LOBYTE(pMsu.V_Over);
buf[12] = HIBYTE(pMsu.V_Out);
buf[13] = LOBYTE(pMsu.V_Out);
buf[14] = HIBYTE(pMsu.I_Over);
buf[15] = LOBYTE(pMsu.I_Over);
buf[16] = HIBYTE(pMsu.I_Out);
buf[17] = LOBYTE(pMsu.I_Out);
buf[18] = HIBYTE(pMsu.TO_Over_V);
buf[19] = LOBYTE(pMsu.TO_Over_V);
buf[20] = HIBYTE(pMsu.HY_time);
buf[21] = LOBYTE(pMsu.HY_time);
buf[22] = HIBYTE(pMsu.FD_To_Over);
buf[23] = LOBYTE(pMsu.FD_To_Over);
buf[24] = HIBYTE(pMsu.Charge_Period);
buf[25] = LOBYTE(pMsu.Charge_Period);
buf[26] = HIBYTE(pMsu.FLQ1Rate);
buf[27] = LOBYTE(pMsu.FLQ1Rate);
buf[28] = HIBYTE(pMsu.FLQ2Rate);
buf[29] = LOBYTE(pMsu.FLQ2Rate);
buf[30] = pMsu.MKI_rate;
buf[31] = pMsu.MK_Type;
buf[32] = pMsu.DCP_To_FLQ;
buf[33] = pMsu.Center_Temp;
buf[34] = pMsu.Temp_width;
buf[35] = HIBYTE(pMsu.Slope);
buf[36] = LOBYTE(pMsu.Slope);
buf[37] = HIBYTE(pMsu.Battery_Cap);
buf[38] = LOBYTE(pMsu.Battery_Cap);
buf[39] = HIBYTE(pMsu.Battery_cut);
buf[40] = LOBYTE(pMsu.Battery_cut);
buf[41] = HIBYTE(pMsu.Load_cut);
buf[42] = LOBYTE(pMsu.Load_cut);
buf[43] = HIBYTE(pMsu.Battery_connect);
buf[44] = LOBYTE(pMsu.Battery_connect);
buf[45] = HIBYTE(pMsu.Load_connect);
buf[46] = LOBYTE(pMsu.Load_connect);
buf[47] = pMsu.YXANot;
buf[48] = pMsu.YXBNot;
buf[49] = pMsu.MK_Num;
buf[50] = pMsu.MKIS_Min;
buf[51] = pMsu.MKI_Min;
for(i=0;i<8;i++)//备用
buf[52+i] = 0;
buf[50+10] = HIBYTE(pMsu.CheckSum);
buf[51+10] = LOBYTE(pMsu.CheckSum);
buf[9+sizeof(MSU_PARA)] = LOBYTE(CManager::Crc16Parity(&buf[1],len-3));
buf[10+sizeof(MSU_PARA)] = HIBYTE(CManager::Crc16Parity(&buf[1],len-3));
break;
case PARA_DOWNLOAD_DCU://DCU参数下装
len = 11+sizeof(DCU_PARA);
buf[1] = (BYTE)nGroupNo;
buf[2] = (BYTE)nAddrNo;
buf[3] = LOBYTE(2+sizeof(DCU_PARA));
buf[4] = HIBYTE(2+sizeof(DCU_PARA));
buf[5] = 0x20;
buf[6] = 0x00;
buf[7] = 0x00;
buf[8] = 0x00;
buf[9] = pDcu.Head;
buf[10] = HIBYTE(pDcu.ACV_High);
buf[11] = LOBYTE(pDcu.ACV_High);
buf[12] = HIBYTE(pDcu.ACV_Low);
buf[13] = LOBYTE(pDcu.ACV_Low);
buf[14] = HIBYTE(pDcu.DCV_High[0]);
buf[15] = LOBYTE(pDcu.DCV_High[0]);
buf[16] = HIBYTE(pDcu.DCV_High[1]);
buf[17] = LOBYTE(pDcu.DCV_High[1]);
buf[18] = HIBYTE(pDcu.DCV_High[2]);
buf[19] = LOBYTE(pDcu.DCV_High[2]);
buf[20] = HIBYTE(pDcu.DCV_Low[0]);
buf[21] = LOBYTE(pDcu.DCV_Low[0]);
buf[22] = HIBYTE(pDcu.DCV_Low[1]);
buf[23] = LOBYTE(pDcu.DCV_Low[1]);
buf[24] = HIBYTE(pDcu.DCV_Low[2]);
buf[25] = LOBYTE(pDcu.DCV_Low[2]);
buf[26] = HIBYTE(pDcu.ACI_High);
buf[27] = LOBYTE(pDcu.ACI_High);
buf[28] = HIBYTE(pDcu.ACI_Rate);
buf[29] = LOBYTE(pDcu.ACI_Rate);
buf[30] = pDcu.YXANot;
buf[31] = pDcu.YXBNot;
for(i=0;i<8;i++)//备用
buf[32+i] = 0;
buf[30+10] = HIBYTE(pDcu.CheckSum);
buf[31+10] = LOBYTE(pDcu.CheckSum);
buf[9+sizeof(DCU_PARA)] = LOBYTE(CManager::Crc16Parity(&buf[1],len-3));
buf[10+sizeof(DCU_PARA)] = HIBYTE(CManager::Crc16Parity(&buf[1],len-3));
break;
case PARA_DOWNLOAD_ACU://ACU参数下装
len = 11+sizeof(ACU_PARA);
buf[1] = (BYTE)nGroupNo;
buf[2] = (BYTE)nAddrNo;
buf[3] = LOBYTE(2+sizeof(ACU_PARA));
buf[4] = HIBYTE(2+sizeof(ACU_PARA));
buf[5] = 0x20;
buf[6] = 0x00;
buf[7] = 0x00;
buf[8] = 0x00;
buf[9] = pAcu.Head;
buf[10] = HIBYTE(pAcu.ACV_High[0]);
buf[11] = LOBYTE(pAcu.ACV_High[0]);
buf[12] = HIBYTE(pAcu.ACV_High[1]);
buf[13] = LOBYTE(pAcu.ACV_High[1]);
buf[14] = HIBYTE(pAcu.ACV_Low[0]);
buf[15] = LOBYTE(pAcu.ACV_Low[0]);
buf[16] = HIBYTE(pAcu.ACV_Low[1]);
buf[17] = LOBYTE(pAcu.ACV_Low[1]);
buf[18] = HIBYTE(pAcu.ACI_High[0]);
buf[19] = LOBYTE(pAcu.ACI_High[0]);
buf[20] = HIBYTE(pAcu.ACI_High[1]);
buf[21] = LOBYTE(pAcu.ACI_High[1]);
buf[22] = HIBYTE(pAcu.ACI_Rate[0]);
buf[23] = LOBYTE(pAcu.ACI_Rate[0]);
buf[24] = HIBYTE(pAcu.ACI_Rate[1]);
buf[25] = LOBYTE(pAcu.ACI_Rate[1]);
buf[26] = pAcu.YXANot;
buf[27] = pAcu.YXBNot;
for(i=0;i<8;i++)//备用
buf[28+i] = 0;
buf[26+10] = HIBYTE(pAcu.CheckSum);
buf[27+10] = LOBYTE(pAcu.CheckSum);
buf[9+sizeof(ACU_PARA)] = LOBYTE(CManager::Crc16Parity(&buf[1],len-3));
buf[10+sizeof(ACU_PARA)] = HIBYTE(CManager::Crc16Parity(&buf[1],len-3));
break;
case PARA_DOWNLOAD_ALARMER://报警控制器参数下装
len = 11+sizeof(GROUPSTATION);
buf[1] = 8;//模块号
buf[2] = 1;
buf[3] = LOBYTE(2+sizeof(GROUPSTATION));
buf[4] = HIBYTE(2+sizeof(GROUPSTATION));
buf[5] = 0x20;
buf[6] = 0x00;
buf[7] = 0x00;
buf[8] = 0x00;
memcpy(&buf[9],(BYTE*)&pGroupStation,sizeof(GROUPSTATION));
buf[9+sizeof(GROUPSTATION)] = LOBYTE(CManager::Crc16Parity(&buf[1],len-3));
buf[10+sizeof(GROUPSTATION)] = HIBYTE(CManager::Crc16Parity(&buf[1],len-3));
break;
case QUERY_CLOCK://对钟
len = 18;
buf[1] = (BYTE)nGroupNo;
buf[2] = 0xFF;
buf[3] = 0x09;
buf[4] = 0x00;
buf[5] = 0x10;
buf[6] = 0x00;//基站状态
t = CTime::GetCurrentTime();
buf[7] = LOBYTE(t.GetYear());
buf[8] = HIBYTE(t.GetYear());
buf[9] = t.GetMonth();
buf[10] = t.GetDay();
buf[11] = t.GetHour();
buf[12] = t.GetMinute();
buf[13] = t.GetSecond();
buf[14] = 0x00;
buf[15] = 0x00;
buf[16] = LOBYTE(CManager::Crc16Parity(&buf[1],15));
buf[17] = HIBYTE(CManager::Crc16Parity(&buf[1],15));
break;
case QUERY_YK_SELECT://yk执行
len = 11;
buf[1] = (BYTE)nGroupNo;
buf[2] = (BYTE)nAddrNo;
buf[3] = 0x02;
buf[4] = 0x00;
buf[5] = 0x40;
buf[6] = 0x00;
buf[7] = BYTE(ykno);
buf[8] = (BYTE)ykaction;
buf[9] = LOBYTE(CManager::Crc16Parity(&buf[1],8));
buf[10] =HIBYTE(CManager::Crc16Parity(&buf[1],8));
break;
case QUERY_YT://yt
len = 12;
buf[1] = (BYTE)nGroupNo;
buf[2] = (BYTE)nAddrNo;
buf[3] = 0x03;
buf[4] = 0x00;
buf[5] = 0x48;
buf[6] = 0x00;
buf[7] = (BYTE)ytno;
buf[8] = LOBYTE(ytvalue);
buf[9] = HIBYTE(ytvalue);
buf[10] = LOBYTE(CManager::Crc16Parity(&buf[1],9));
buf[11] = HIBYTE(CManager::Crc16Parity(&buf[1],9));
break;
case QUERY_YCYXSOE://DF0420 YC YX SOE
switch(nRequest0420)
{
case 1://YC yx
len = 9;
buf[1] = (BYTE)nGroupNo;
buf[2] = (BYTE)nAddrNo;
buf[3] = 0x00;
buf[4] = 0x00;
buf[5] = 0x30;
buf[6] = 0x00;
buf[7] = LOBYTE(CManager::Crc16Parity(&buf[1],6));
buf[8] = HIBYTE(CManager::Crc16Parity(&buf[1],6));
nRequest0420 = 2;
break;
case 2://SOE
len = 9;
buf[1] = (BYTE)nGroupNo;
buf[2] = (BYTE)nAddrNo;
buf[3] = 0x00;
buf[4] = 0x00;
buf[5] = 0x50;
buf[6] = 0x00;
buf[7] = LOBYTE(CManager::Crc16Parity(&buf[1],6));
buf[8] = HIBYTE(CManager::Crc16Parity(&buf[1],6));
nRequest0420 = 1;
break;
default:
break;
}
break;
default:
break;
}
}
if (nGuiyueType == GY_MODBUS)//modbus
{
buf[0] = (BYTE)nAddrNo;
switch(nIndex)
{
case QUERY_YK_SELECT://yk执行
len = 8;
buf[1] = 0x05;
buf[2] = HIBYTE(ykno);
buf[3] = LOBYTE(ykno);
buf[4] = ((BYTE)ykaction)?0x00:0xff;
buf[5] = 0x00;
buf[6] = LOBYTE(CManager::CRC16_Modbus(&buf[0],len-2));
buf[7] = HIBYTE(CManager::CRC16_Modbus(&buf[0],len-2));
break;
case QUERY_YT://yt
len = 8;
buf[1] = 0x06;
buf[2] = HIBYTE(ytno);
buf[3] = LOBYTE(ytno);
buf[4] = HIBYTE(ytvalue);
buf[5] = LOBYTE(ytvalue);
buf[6] = LOBYTE(CManager::CRC16_Modbus(&buf[0],len-2));
buf[7] = HIBYTE(CManager::CRC16_Modbus(&buf[0],len-2));
break;
case QUERY_YCYXSOE://modbus -- YC YX
switch(nRequestModbus)
{
case 1://YC
len = 8;
buf[1] = 0x04;
buf[2] = HIBYTE(modbus.start_addr);
buf[3] = LOBYTE(modbus.start_addr);
buf[4] = HIBYTE(modbus.yccount);
buf[5] = LOBYTE(modbus.yccount);
buf[6] = LOBYTE(CManager::CRC16_Modbus(&buf[0],len-2));
buf[7] = HIBYTE(CManager::CRC16_Modbus(&buf[0],len-2));
nRequestModbus = 2;
break;
case 2://YX
len = 8;
buf[1] = 0x02;
buf[2] = HIBYTE(modbus.start_addr);
buf[3] = LOBYTE(modbus.start_addr);
buf[4] = HIBYTE(modbus.yxcount);
buf[5] = LOBYTE(modbus.yxcount);
buf[6] = LOBYTE(CManager::CRC16_Modbus(&buf[0],len-2));
buf[7] = HIBYTE(CManager::CRC16_Modbus(&buf[0],len-2));
nRequestModbus = 1;
break;
default:
break;
}
break;
default:
break;
}
}
if(nGuiyueType == GY_JDXJ)//接地巡检仪规约
{
buf[0] = 0xEB;
buf[1] = 0x90;
buf[2] = 0xEB;
buf[3] = 0x90;
switch(nIndex)
{
case QUERY_YCYXSOE://接地巡检仪 -- 母线数据和支路数据
switch(nRequestJdxj)
{
case 1://母线数据
len = 12;
buf[4] = (BYTE)nAddrNo;//目的站号范围为50H-5FH
buf[5] = 0x01;//源站
buf[6] = 0x00;
buf[7] = 0x02;
buf[8] = 0xC1;//命令码 C1为取母线数据
buf[9] = 0x00;
buf[10] = 0x90;
buf[11] = 0xEB;
nRequestJdxj = 2;
break;
case 2://支路电阻
len = 12;
buf[4] = (BYTE)nAddrNo;//目的站号范围为50H-5FH
buf[5] = 0x01;//源站
buf[6] = 0x00;
buf[7] = 0x02;
buf[8] = 0xC3;//命令码 C3为取支路数据
buf[9] = 0x00;
buf[10] = 0x90;
buf[11] = 0xEB;
nRequestJdxj = 1;
break;
default:
break;
}
break;
default:
break;
}
}
return len;
}
//设置规约类型
void CBuildData::SetGuiyueType(int nType)
{
nGuiyueType = nType;
}
//设置遥控号和遥控动作
void CBuildData::SetYkPara(int nYkNo, int nYkAction)
{
ykno = nYkNo;
ykaction = nYkAction;
}
//设置遥调值和遥调号
void CBuildData::SetYtPara(int nYtNo,WORD nYtValue)
{
ytvalue = nYtValue;
ytno = nYtNo;
}
//设置组号站号
void CBuildData::SetGroupAddrNo(int nGroup,int nAddr)
{
nGroupNo = nGroup;
nAddrNo = nAddr;
}
void CBuildData::SetModbusPara(MODBUS_PARA p)
{ modbus = p; }
//void CBuildData::SetModuleInfo(int nModType,int nModNo)
//{
// m_modType = nModType;
// m_modNo = nModNo;
// }
void CBuildData::SetMsuPara(MSU_PARA p)
{
pMsu = p;
}
void CBuildData::SetDcuPara(DCU_PARA p)
{
pDcu = p;
}
void CBuildData::SetAcuPara(ACU_PARA p)
{
pAcu = p;
}
void CBuildData::SetSmsPara(SMS_SETUP p)
{ pSms = p;}
void CBuildData::SetAlarmerPara(GROUPSTATION p)
{ pGroupStation = p;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -