//获取埃德尔设备的默认配置信息 public byte[] getDefaultADSettting(String version, String devId, String pduType, String seq) { //获取版本号 String hiVer = version.Substring(0, 1); String lowVer = version.Substring(1, 1); byte btVer = (byte)((CodeUtils.String2Byte(hiVer)) * 16 + CodeUtils.String2Byte(lowVer)); //获取设备ID byte[] btDevs = new byte[4]; for (int i = 0; i < 4; i++) { btDevs[i] = CodeUtils.String2Byte(devId.Substring(2 * i, 2)); } //获取pduType byte btPduType = CodeUtils.String2Byte(pduType); byte dstPduType = (byte)(0xB0 | (0x0f & btPduType)); //获取系统时间的tag 长度为2个字节! byte[] sysTag = { 0x10, 0x00, 0x00, 0x51, 0x00, 0x06, StringUtil.YEAR, StringUtil.MON, StringUtil.DAY, StringUtil.HOR, StringUtil.MIN, StringUtil.SEC }; //获取iptag信息 String adIp = System.Configuration.ConfigurationSettings.AppSettings["AD_IP"]; String adPort = System.Configuration.ConfigurationSettings.AppSettings["AD_PORT"]; byte[] btIp = ASCIIEncoding.ASCII.GetBytes(adIp); Int16 ipLen0 = (Int16)btIp.Length; byte[] btiplens0 = BitConverter.GetBytes(ipLen0); byte[] iplens = new byte[2]; iplens[0] = btiplens0[1]; iplens[1] = btiplens0[0]; byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 }; byte[] ipTag = new byte[4 + 2 + btIp.Length]; ipOid.CopyTo(ipTag, 0); iplens.CopyTo(ipTag, 4); btIp.CopyTo(ipTag, 6); //获取porttag信息 byte[] btAdPort = ASCIIEncoding.ASCII.GetBytes(adPort); Int16 portLen = (Int16)btAdPort.Length; byte[] btportlens0 = BitConverter.GetBytes(portLen); byte[] portlens = new byte[2]; portlens[0] = btportlens0[1]; portlens[1] = btportlens0[0]; byte[] btPortOid = { 0x10, 0x00, 0x00, 0x23 }; byte[] portTag = new byte[4 + 2 + btAdPort.Length]; btPortOid.CopyTo(portTag, 0); portlens.CopyTo(portTag, 4); btAdPort.CopyTo(portTag, 6); //总长度计算 Int16 totalLen = (Int16)(4 + 1 + 1 + sysTag.Length + ipTag.Length + portTag.Length); byte[] btlens0 = BitConverter.GetBytes(totalLen); byte[] btlens = new byte[2]; btlens[0] = btlens0[1]; btlens[1] = btlens0[0]; //crc之前的byte类型数据 byte[] bfsrc = new byte[totalLen + 2 + 1 + 1]; bfsrc[0] = 0xA3; bfsrc[1] = btVer; btlens.CopyTo(bfsrc, 2); btDevs.CopyTo(bfsrc, 4); bfsrc[8] = dstPduType; bfsrc[9] = CodeUtils.String2Byte(seq); sysTag.CopyTo(bfsrc, 10); ipTag.CopyTo(bfsrc, 10 + sysTag.Length); portTag.CopyTo(bfsrc, 10 + sysTag.Length + ipTag.Length); String strCrc = String.Format("{0:X}", (int)CodeUtils.CRC16_AD(bfsrc)); byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) }; byte[] afcrc = new byte[bfsrc.Length + 2]; bfsrc.CopyTo(afcrc, 0); btcrc.CopyTo(afcrc, bfsrc.Length); return(CodeUtils.adEncode(afcrc)); }