⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 builddata.cpp

📁 串口收发工具
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		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 + -