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

📄 sypbprotocol.cpp

📁 配电变压器负荷监测与控制系统数据监测传输
💻 CPP
📖 第 1 页 / 共 5 页
字号:
				break;
			case	JCCTL_VOLTAGE:                       /*电压*/
				mTreadBuf->DataBuf[count++] = 0x0D;
				mTreadBuf->DataBuf[count++] = 0x60;
				if(!(pQueueEle->devAddr[5]))
				{
					mTreadBuf->DataBuf[count++] = 0;
				}
				else
				{
					mTreadBuf->DataBuf[count++] = (int)pow(2,((pQueueEle->devAddr[5]+7) % 8));
				}
				mTreadBuf->DataBuf[count++] = (int)pow(2,((pQueueEle->devAddr[5]+7) / 8-1));
				count++;
				mTreadBuf->DataBuf[count++] = 0x0B;
                memcpy( &mTreadBuf->DataBuf[count], pQueueEle->strData, 5 );
				count+=5;
				mTreadBuf->DataBuf[count++] = 0x03;
				mTreadBuf->DataBuf[count++] = 0x18;
				switch(pQueueEle->cnCtl[2])
				{
				case	0x01:							/*A相电压*/
				    mTreadBuf->DataBuf[count-9] = 0x01;
					break;
				case	0x02:							/*B相电压*/
				    mTreadBuf->DataBuf[count-9] = 0x02;
					break;
				case	0x03:							/*C相电压*/
				    mTreadBuf->DataBuf[count-9] = 0x04;
					break;
				}/*end of (switch(pQueueEle->cnCtl[2]))*/
				break;
			case	JCCTL_ELECTRICITY:                  /*电流*/
				mTreadBuf->DataBuf[count++] = 0x0D;
				mTreadBuf->DataBuf[count++] = 0x60;
				if(!(pQueueEle->devAddr[5]))
				{
					mTreadBuf->DataBuf[count++] = 0;
				}
				else
				{
					mTreadBuf->DataBuf[count++] = (int)pow(2,((pQueueEle->devAddr[5]+7) % 8));
				}
				mTreadBuf->DataBuf[count++] = (int)pow(2,((pQueueEle->devAddr[5]+7) / 8-1));
				count++;
				mTreadBuf->DataBuf[count++] = 0x0B;
                memcpy( &mTreadBuf->DataBuf[count], pQueueEle->strData, 5 );
				count+=5;
				mTreadBuf->DataBuf[count++] = 0x03;
				mTreadBuf->DataBuf[count++] = 0x18;
				switch(pQueueEle->cnCtl[2])
				{
				case	0x01:							/*A相电流*/
				    mTreadBuf->DataBuf[count-9] = 0x08;
					break;
				case	0x02:							/*B相电流*/
				    mTreadBuf->DataBuf[count-9] = 0x10;
					break;
				case	0x03:							/*C相电流*/
				    mTreadBuf->DataBuf[count-9] = 0x20;
					break;
				}/*end of (switch(pQueueEle->cnCtl[2]))*/
				break;
			case	JCCTL_POWER:                        /*有功功率*/
				mTreadBuf->DataBuf[count++] = 0x0D;
				mTreadBuf->DataBuf[count++] = 0x60;
				if(!(pQueueEle->devAddr[5]))
				{
					mTreadBuf->DataBuf[count++] = 0;
				}
				else
				{
					mTreadBuf->DataBuf[count++] = (int)pow(2,((pQueueEle->devAddr[5]+7) % 8));
				}
				mTreadBuf->DataBuf[count++] = (int)pow(2,((pQueueEle->devAddr[5]+7) / 8-1));
				count++;
				mTreadBuf->DataBuf[count++] = 0x0A;
                memcpy( &mTreadBuf->DataBuf[count], pQueueEle->strData, 5 );
				count+=5;
				mTreadBuf->DataBuf[count++] = 0x03;
				mTreadBuf->DataBuf[count++] = 0x18;
				switch(pQueueEle->cnCtl[2])
				{
				case	0x01:							/*总有功功率*/
				    mTreadBuf->DataBuf[count-9] = 0x01;
					break;
				case	0x02:							/*A相有功功率*/
				    mTreadBuf->DataBuf[count-9] = 0x02;
					break;
				case	0x03:							/*B相有功功率*/
				    mTreadBuf->DataBuf[count-9] = 0x04;
					break;
				case	0x04:							/*C相有功功率*/
				    mTreadBuf->DataBuf[count-9] = 0x08;
					break;
				}/*end of (switch(pQueueEle->cnCtl[2]))*/
				break;
			case	JCCTL_NPOWER:                         /*无功功率*/
				mTreadBuf->DataBuf[count++] = 0x0D;
				mTreadBuf->DataBuf[count++] = 0x60;
				if(!(pQueueEle->devAddr[5]))
				{
					mTreadBuf->DataBuf[count++] = 0;
				}
				else
				{
					mTreadBuf->DataBuf[count++] = (int)pow(2,((pQueueEle->devAddr[5]+7) % 8));
				}
				mTreadBuf->DataBuf[count++] = (int)pow(2,((pQueueEle->devAddr[5]+7) / 8-1));
				count++;
				mTreadBuf->DataBuf[count++] = 0x0A;
                memcpy( &mTreadBuf->DataBuf[count], pQueueEle->strData, 5 );
				count+=5;
				mTreadBuf->DataBuf[count++] = 0x03;
				mTreadBuf->DataBuf[count++] = 0x18;
				switch(pQueueEle->cnCtl[2])
				{
				case	0x01:							/*总无功功率*/
				    mTreadBuf->DataBuf[count-9] = 0x10;
					break;
				case	0x02:							/*A相无功功率*/
				    mTreadBuf->DataBuf[count-9] = 0x20;
					break;
				case	0x03:							/*B相无功功率*/
				    mTreadBuf->DataBuf[count-9] = 0x40;
					break;
				case	0x04:							/*C相无功功率*/
				    mTreadBuf->DataBuf[count-9] = 0x80;
					break;
				}/*end of switch(pQueueEle->cnCtl[2]))*/
				break;
			case	JCCTL_POWERFACTOR:              /*功率因素*/
				mTreadBuf->DataBuf[count++] = 0x0D;
				mTreadBuf->DataBuf[count++] = 0x60;
				if(!(pQueueEle->devAddr[5]))
				{
					mTreadBuf->DataBuf[count++] = 0;
				}
				else
				{
					mTreadBuf->DataBuf[count++] = (int)pow(2,((pQueueEle->devAddr[5]+7) % 8));
				}
				mTreadBuf->DataBuf[count++] = (int)pow(2,((pQueueEle->devAddr[5]+7) / 8-1));
				count++;
				mTreadBuf->DataBuf[count++] = 0x0D;
                memcpy( &mTreadBuf->DataBuf[count], pQueueEle->strData, 5 );
				count+=5;
				mTreadBuf->DataBuf[count++] = 0x03;
				mTreadBuf->DataBuf[count++] = 0x18;
				switch(pQueueEle->cnCtl[2])
				{
				case	0x01:							/*总功率因素*/
				    mTreadBuf->DataBuf[count-9] = 0x01;
					break;
				case	0x02:							/*A相功率因数*/
				    mTreadBuf->DataBuf[count-9] = 0x02;
					break;
				case	0x03:							/*B相功率因数*/
				    mTreadBuf->DataBuf[count-9] = 0x04;
					break;
				case	0x04:							/*C相功率因数*/
				    mTreadBuf->DataBuf[count-9] = 0x08;
					break;
				}/*end of (switch(pQueueEle->cnCtl[2]))*/
				break;
			case	JCCTL_PS:                         /*视在功率和频率*/
				mTreadBuf->DataBuf[count++] = 0x0D;
				mTreadBuf->DataBuf[count++] = 0x60;
				if(!(pQueueEle->devAddr[5]))
				{
					mTreadBuf->DataBuf[count++] = 0;
				}
				else
				{
					mTreadBuf->DataBuf[count++] = (int)pow(2,((pQueueEle->devAddr[5]+7) % 8));
				}
				mTreadBuf->DataBuf[count++] = (int)pow(2,((pQueueEle->devAddr[5]+7) / 8-1));
				count++;
				count++;
                memcpy( &mTreadBuf->DataBuf[count], pQueueEle->strData, 5 );
				count+=5;
				mTreadBuf->DataBuf[count++] = 0x03;
				mTreadBuf->DataBuf[count++] = 0x18;
				switch(pQueueEle->cnCtl[2])
				{
				case	0x01:							/*总视在功率*/
				    mTreadBuf->DataBuf[count-9] = 0x20;
				    mTreadBuf->DataBuf[count-8] = 0x13;
					break;
				case	0x02:							/*A相视在功率*/
				    mTreadBuf->DataBuf[count-9] = 0x40;
				    mTreadBuf->DataBuf[count-8] = 0x13;
					break;
				case	0x03:							/*B相视在功率*/
				    mTreadBuf->DataBuf[count-9] = 0x80;
				    mTreadBuf->DataBuf[count-8] = 0x13;
					break;
				case	0x04:							/*C相视在功率*/
				    mTreadBuf->DataBuf[count-9] = 0x01;
				    mTreadBuf->DataBuf[count-8] = 0x14;
					break;
				case	0x05:                           /*频率*/
				    mTreadBuf->DataBuf[count-9] = 0x10;
				    mTreadBuf->DataBuf[count-8] = 0x13;
					break;
				}/*end of (switch(pQueueEle->cnCtl[2]))*/
				break;
			case	JCCTL_PROGRAMIMF:              /*编程信息*/
				switch(pQueueEle->cnCtl[2])
				{
				case	0x01:							/*编程信息*/
					mTreadBuf->DataBuf[count++] = 0x0C;               //AFN
					mTreadBuf->DataBuf[count++] = 0x60;                  //SEQ

					if(!(pQueueEle->devAddr[5]))
						mTreadBuf->DataBuf[count++] = 0;
					else
						mTreadBuf->DataBuf[count++] = (int)pow(2,((pQueueEle->devAddr[5]+7) % 8));
					mTreadBuf->DataBuf[count++] = (int)pow(2,((pQueueEle->devAddr[5]+7) / 8-1));

					mTreadBuf->DataBuf[count++] = 0x04;                  //DT
					mTreadBuf->DataBuf[count++] = 0x03;

					break;
				}/*end of (switch(pQueueEle->cnCtl[2]))*/
				break;
			case	JCCTL_OPENPHASE:              /*断相数据*/
				switch(pQueueEle->cnCtl[2])
				{
				case	0x01:							/*断相数据*/
				    mTreadBuf->DataBuf[count++] = 0x0D;
				    mTreadBuf->DataBuf[count++] = 0x60;
				    if(!(pQueueEle->devAddr[5]))
					{
						mTreadBuf->DataBuf[count++] = 0;
					}
					else
					{
						mTreadBuf->DataBuf[count++] = (int)pow(2,((pQueueEle->devAddr[5]+7) % 8));
					}
					mTreadBuf->DataBuf[count++] = (int)pow(2,((pQueueEle->devAddr[5]+7) / 8-1));
				    mTreadBuf->DataBuf[count++] = 0x40;
				    mTreadBuf->DataBuf[count++] = 0x03;
                    memcpy( &mTreadBuf->DataBuf[count], &pQueueEle->strData[0], 3 );
				    count+=3;
					break;
				}/*end of (switch(pQueueEle->cnCtl[2]))*/
				break;
			case	JCCTL_MECONDITION:              /*表运行状态*/
				switch(pQueueEle->cnCtl[2])
				{
				case	0x01:							/*表运行状态*/
					mTreadBuf->DataBuf[count++] = 0x0C;               //AFN
					mTreadBuf->DataBuf[count++] = 0x60;                  //SEQ

					if(!(pQueueEle->devAddr[5]))
					{
						mTreadBuf->DataBuf[count++] = 0;
					}
					else
					{
						mTreadBuf->DataBuf[count++] = (int)pow(2,((pQueueEle->devAddr[5]+7) % 8));
					}
					mTreadBuf->DataBuf[count++] = (int)pow(2,((pQueueEle->devAddr[5]+7) / 8-1));

					mTreadBuf->DataBuf[count++] = 0x04;                  //DT
					mTreadBuf->DataBuf[count++] = 0x03;
					break;
				}/*end of (switch(pQueueEle->cnCtl[2]))*/
				break;
			case	JCCTL_HCTIME:                     /*需参数*/

				break;
			case	JCCTL_LOSTU:                    /*失压数据*/
				switch(pQueueEle->cnCtl[2])
				{
				case	0x01:							/*失压数据*/
					break;
				}
				break;
			case	JCCTL_POWERCUT:                 /*来停电数据*/
				switch(pQueueEle->cnCtl[2])
				{
				case	0x01:							/*来停电数据*/
					break;
				}
				break;
			case	JCCTL_UTMOST:                  /*日统计值*/
				mTreadBuf->DataBuf[count++] = 0x0D;
				mTreadBuf->DataBuf[count++] = 0x60;
				if(!(pQueueEle->devAddr[5]))
				{
					mTreadBuf->DataBuf[count++] = 0;
				}
				else
				{
					mTreadBuf->DataBuf[count++] = (int)pow(2,((pQueueEle->devAddr[5]+7) % 8));
				}
				mTreadBuf->DataBuf[count++] = (int)pow(2,((pQueueEle->devAddr[5]+7) / 8-1));
				count++;
				count++;
                memcpy( &mTreadBuf->DataBuf[count], &pQueueEle->strData[0], 3 );
				count+=3;
				switch(pQueueEle->cnCtl[2])
				{
				case	0x01:							/*电压日限值及发生时间*/
				    mTreadBuf->DataBuf[count-5] = 0x04;
				    mTreadBuf->DataBuf[count-4] = 0x03;
					break;
				case	0x02:							/*电流日限值及发生时间*/
				    mTreadBuf->DataBuf[count-5] = 0x20;
				    mTreadBuf->DataBuf[count-4] = 0x12;
					break;
				case	0x03:							/*功率时间*/
				    mTreadBuf->DataBuf[count-5] = 0x02;
				    mTreadBuf->DataBuf[count-4] = 0x13;
					break;
				case	0x04:							/*有功时间*/
				    mTreadBuf->DataBuf[count-5] = 0x40;
				    mTreadBuf->DataBuf[count-4] = 0x12;
					break;
				case	0x05:                           /*无功功率日限值及发生时间*/
				    mTreadBuf->DataBuf[count-5] = 0x80;
				    mTreadBuf->DataBuf[count-4] = 0x12;
					break;
				}/*end of (switch(pQueueEle->cnCtl[2]))*/
				break;
			case	JCCTL_CURRENT:                        /*实时数据*/
                mTreadBuf->DataBuf[count++] = 0x0C;    //AFN
                mTreadBuf->DataBuf[count++] = 0x60;    //SEQ

				if(!(pQueueEle->devAddr[5]))
				{
					mTreadBuf->DataBuf[count++] = 0;
				}
				else
				{
					mTreadBuf->DataBuf[count++] = (int)pow(2,((pQueueEle->devAddr[5]+7) % 8));
				}
				mTreadBuf->DataBuf[count++] = (int)pow(2,((pQueueEle->devAddr[5]+7) / 8-1));

				mTreadBuf->DataBuf[count++] = 0x01;       //DT
				mTreadBuf->DataBuf[count++] = 0x10;

				break;
			case	JCCTL_SETPARA:                          /*设置终端参数*/
				switch(pQueueEle->cnCtl[2])
				{
				case	0x01:							/*主站IP地址和端口*/
					mTreadBuf->DataBuf[count++] = 0x04;    //AFN
					mTreadBuf->DataBuf[count++] = 0x60;     //SEQ


					mTreadBuf->DataBuf[count++] = 0x00;               //pn
					mTreadBuf->DataBuf[count++] = 0x00;

					mTreadBuf->DataBuf[count++] = 0x04;       //DT
					mTreadBuf->DataBuf[count++] = 0x00;
                    memcpy( &mTreadBuf->DataBuf[count], pQueueEle->strData, pQueueEle->nDataLenth );
					count+=pQueueEle->nDataLenth;
					mTreadBuf->DataBuf[count++] = 0x00;       //PW
					mTreadBuf->DataBuf[count++] = 0x00;
					break;
					
				case	0x02:							/*终端在线通信方式*/
					mTreadBuf->DataBuf[count++] = 0x04;    //AFN
					mTreadBuf->DataBuf[count++] = 0x60;     //SEQ


					mTreadBuf->DataBuf[count++] = 0x00;               //pn
					mTreadBuf->DataBuf[count++] = 0x00;

					mTreadBuf->DataBuf[count++] = 0x01;       //DT
					mTreadBuf->DataBuf[count++] = 0x0B;

                    memcpy( &mTreadBuf->DataBuf[count], pQueueEle->strData, 71 );    //终端在线数据51字节
					count+=71;
					mTreadBuf->DataBuf[count++] = 0x00;       //PW
					mTreadBuf->DataBuf[count++] = 0x00;

					break;
					

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -