protected override void OnAsyncExternProcessing(NCASBIZ.NCasType.NCasObject param) { if (param is OrderBizData) { try { OrderBizData orderBizData = param as OrderBizData; if (orderBizData.IsLocal == false) { return; } byte[] buff = NCasProtocolFactory.MakeUdpFrame(orderBizData.BrdProtocol); if (buff == null) { NCasLoggingMng.ILogging.WriteLog("PBrdScreenBiz", "발령이 정상적으로 처리되지 않았습니다.", "TC " + orderBizData.BrdProtocol.TcCode.ToString() + " - " + NCasUtilityMng.INCasEtcUtility.Bytes2HexString(orderBizData.BrdProtocol.GetDatas())); return; } if (orderBizData.BrdProtocol.Sector == NCasDefineSectionCode.SectionBroadShare) //광역시 전체 발령 { NCasProtocolBase baseProto = NCasProtocolFactory.ParseFrame(buff); NCasProtocolTc4 tc4 = baseProto as NCasProtocolTc4; tc4.Sector = NCasDefineSectionCode.SectionProv; NCasProtocolFactory.MakeUdpFrame(tc4); this.mainForm.MmfMng.WriteOrder(tc4); this.udpSoc.SendTo(this.IP_LOOPBACK, (int)NCasPipes.PipePcbRgnPBrdMan, tc4.GetDatas()); this.udpSoc.SendTo(this.IP_LOOPBACK, (int)NCasPipes.PipePcbProvMain, tc4.GetDatas()); string teleServerIpAddr = NCasUtilityMng.INCasCommUtility.AddIpAddr(NCasUtilityMng.INCasCommUtility.MakeNetIdByAnyIp(this.provInfo.NetIdToString), 0, 0, 1, 111); udpSoc.SendTo(teleServerIpAddr, (int)NCasPortID.PortIdExtCallPgServer, tc4.GetDatas()); udpSoc.SendTo(NCasUtilityMng.INCasEtcUtility.GetIPv4(), (int)NCasPortID.PortIdExtCallPgMan, tc4.GetDatas()); } else //시도전체 또는 시도개별 발령 { if (orderBizData.BrdProtocol.Media == NCasDefineOrderMedia.MediaAll || orderBizData.BrdProtocol.Media == NCasDefineOrderMedia.MediaLine) { udpSoc.SendTo(orderBizData.BrdProtocol.BroadNetIdOrIpByString, (int)NCasPortID.PortIdAlarm, buff); } this.mainForm.MmfMng.WriteOrder(orderBizData.BrdProtocol); string teleServerIpAddr = NCasUtilityMng.INCasCommUtility.AddIpAddr(NCasUtilityMng.INCasCommUtility.MakeNetIdByAnyIp(this.provInfo.NetIdToString), 0, 0, 1, 111); udpSoc.SendTo(teleServerIpAddr, (int)NCasPortID.PortIdExtCallPgServer, buff); udpSoc.SendTo(NCasUtilityMng.INCasEtcUtility.GetIPv4(), (int)NCasPortID.PortIdExtCallPgMan, buff); this.udpSoc.SendTo(this.IP_LOOPBACK, (int)NCasPipes.PipePcbCentCBrd, buff); this.udpSoc.SendTo(this.IP_LOOPBACK, (int)NCasPipes.PipePcbProvMain, buff); if (orderBizData.BrdProtocol.Media == NCasDefineOrderMedia.MediaAll || orderBizData.BrdProtocol.Media == NCasDefineOrderMedia.MediaSate) { this.udpSoc.SendTo(this.IP_LOOPBACK, (int)NCasPipes.PipePcbCentSate, buff); } if ((orderBizData.BrdProtocol.BroadNetIdOrIp & 0x0000ffff) == 0x0000ffff) //x.x.255.255 { this.udpSoc.SendTo(this.IP_LOOPBACK, (int)NCasPipes.PipePcbTermBroad, buff); this.udpSoc.SendTo(this.IP_LOOPBACK, (int)NCasPipes.PipePcbTermDept, buff); } else if ((orderBizData.BrdProtocol.BroadNetIdOrIp & 0x0000ff00) == 0x0000fe00) //x.x.254.x { this.udpSoc.SendTo(this.IP_LOOPBACK, (int)NCasPipes.PipePcbTermBroad, buff); } else if ((orderBizData.BrdProtocol.BroadNetIdOrIp & 0x0000ff00) == 0x0000fd00) //x.x.253.x { this.udpSoc.SendTo(this.IP_LOOPBACK, (int)NCasPipes.PipePcbTermDept, buff); } this.udpSoc.SendTo(this.IP_LOOPBACK, (int)NCasPipes.PipePcbRgnPBrdCom, buff); udpSoc.SendTo("127.0.0.1", (int)NCasPortID.PortIdExtCasMonitor, buff); if (orderBizData.BrdProtocol.Media == NCasDefineOrderMedia.MediaAll || orderBizData.BrdProtocol.Media == NCasDefineOrderMedia.MediaLine) { for (int i = 0; i < this.SendUnicastOrderCount; i++) { udpSoc.SendTo(orderBizData.BrdProtocol.BroadNetIdOrIpByString, (int)NCasPortID.PortIdAlarm, buff); } } } } catch (Exception ex) { NCasLoggingMng.ILoggingException.WriteException("PBrdScreenBiz", "PBrdScreenBiz.OnAsyncExternProcessing Method - OrderBizData", ex); } } else if (param is KeyBizData) { try { KeyBizData keyBizData = param as KeyBizData; if (keyBizData.IsLocal == false) { return; } this.mainForm.SendKeyDataToDual(keyBizData.KeyData); } catch (Exception ex) { NCasLoggingMng.ILoggingException.WriteException("PBrdScreenBiz", "PBrdScreenBiz.OnAsyncExternProcessing Method - KeyBizData", ex); } } else if (param is NCasPlcProtocolBase) { try { NCasPlcProtocolBase nCasPlcProtocolBase = param as NCasPlcProtocolBase; byte[] buff = NCasPlcProtocolFactory.MakeFrame(nCasPlcProtocolBase); if (nCasPlcProtocolBase.GetDatas() == null) { NCasLoggingMng.ILogging.WriteLog("PBrdScreenBiz", "NCasPlcProtocolFactory.MakeFrame is null"); return; } if (buff == null) { NCasLoggingMng.ILogging.WriteLog("PBrdScreenBiz", "buff is null"); return; } this.udpSoc.SendTo(this.IP_LOOPBACK, (int)NCasPipes.PipeNccDevCcd, buff); } catch (Exception ex) { NCasLoggingMng.ILoggingException.WriteException("PBrdScreenBiz", "PBrdScreenBiz.OnAsyncExternProcessing Method - NCasPlcProtocolBase", ex); } } else if (param is NCasProtocolTc20) { try { NCasProtocolTc20 protocolTc20 = param as NCasProtocolTc20; if (protocolTc20.GetDatas() == null) { NCasLoggingMng.ILogging.WriteLog("PBrdScreenBiz", "TV자막이 정상적으로 처리되지 않았습니다.", "TC " + protocolTc20.TcCode.ToString() + " - " + NCasUtilityMng.INCasEtcUtility.Bytes2HexString(protocolTc20.GetDatas())); return; } NCasProtocolBase protoBase = NCasProtocolFactory.ParseFrame(protocolTc20.GetDatas()); NCasProtocolTc20 proto20 = protoBase as NCasProtocolTc20; if (protocolTc20.Sector == NCasDefineSectionCode.SectionBroadShare) //광역시 전체 { proto20.Sector = NCasDefineSectionCode.SectionProv; byte[] tmpProto20 = NCasProtocolFactory.MakeUdpFrame(proto20); this.udpSoc.SendTo(this.IP_LOOPBACK, (int)NCasPipes.PipePcbRgnPBrdMan, tmpProto20); this.udpSoc.SendTo(this.IP_LOOPBACK, (int)NCasPipes.PipePcbProvMain, tmpProto20); this.mainForm.MmfMng.WriteBroadCaptionOrder(proto20); } else //시도전체 또는 시도개별 { byte[] tmpProto20 = NCasProtocolFactory.MakeUdpFrame(proto20); this.udpSoc.SendTo(this.IP_LOOPBACK, (int)NCasPipes.PipePcbCentCBrd, tmpProto20); this.udpSoc.SendTo(this.IP_LOOPBACK, (int)NCasPipes.PipePcbProvMain, tmpProto20); this.udpSoc.SendTo(this.IP_LOOPBACK, (int)NCasPipes.PipePcbCentCBrd, tmpProto20); this.udpSoc.SendTo(this.IP_LOOPBACK, (int)NCasPipes.PipePcbTermBroad, tmpProto20); this.udpSoc.SendTo(this.IP_LOOPBACK, (int)NCasPipes.PipePcbRgnPBrdCom, tmpProto20); this.mainForm.MmfMng.WriteBroadCaptionOrder(proto20); } } catch (Exception ex) { NCasLoggingMng.ILoggingException.WriteException("PBrdScreenBiz", "PBrdScreenBiz.OnAsyncExternProcessing Method - NCasProtocolTc20", ex); } } }
/// <summary> /// 시군전체 발령 명령을 처리하는 메소드 /// </summary> /// <param name="orderBizData"></param> private void OrderDistAll() { string teleServerIpAddr = NCasUtilityMng.INCasCommUtility.AddIpAddr(NCasUtilityMng.INCasCommUtility.MakeNetIdByAnyIp(this.provInfo.NetIdToString), 0, 0, 1, 111); List <string> reptAlarmServerIpAddr = new List <string>(); for (int i = 0; i < this.provInfo.LstRepts.Count; i++) { reptAlarmServerIpAddr.Add(NCasUtilityMng.INCasCommUtility.AddIpAddr(this.provInfo.LstRepts[i].NetIdToString, 0, 0, 1, 1)); } foreach (OrderBizData orderBizData in this.lstOrderBizData) { DistInfo distInfo = this.mainForm.MmfMng.GetDistInfoByNetId(NCasUtilityMng.INCasCommUtility.SubtractIpAddr(orderBizData.AlmProtocol.AlarmNetIdOrIpByString, 0, 0, 0, 255)); udpSoc.SendTo(teleServerIpAddr, (int)NCasPortID.PortIdExtCallPgServer, orderBizData.SendBuff); udpSoc.SendTo(NCasUtilityMng.INCasEtcUtility.GetIPv4(), (int)NCasPortID.PortIdExtCallPgMan, orderBizData.SendBuff); for (int i = 0; i < reptAlarmServerIpAddr.Count; i++) { udpSoc.SendTo(reptAlarmServerIpAddr[i], (int)NCasPortID.PortIdIntTeleRAlarm, orderBizData.SendBuff); } } if (this.lstOrderBizData[0].AlmProtocol.AlarmKind == NCasDefineOrderKind.AlarmBiochemist || (this.lstOrderBizData[0].AlmProtocol.AlarmKind == NCasDefineOrderKind.DisasterBroadcast && this.lstOrderBizData[0].SelectedDisasterBroadKind == PAlmScreenUIController.DisasterBroadKind.Mic) || (this.lstOrderBizData[0].AlmProtocol.AlarmKind == NCasDefineOrderKind.DisasterBroadcast && this.lstOrderBizData[0].SelectedDisasterBroadKind == PAlmScreenUIController.DisasterBroadKind.Tts)) { Thread.Sleep(this.SendDelay); } foreach (OrderBizData orderBizData in this.lstOrderBizData) { byte[] sendBuff = orderBizData.SendBuff; DistInfo distInfo = this.mainForm.MmfMng.GetDistInfoByNetId(NCasUtilityMng.INCasCommUtility.SubtractIpAddr(orderBizData.AlmProtocol.AlarmNetIdOrIpByString, 0, 0, 0, 255)); this.mainForm.MmfMng.WriteOrder(orderBizData.AlmProtocol); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaCentCAlm, sendBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaProvMain, sendBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaRgnRAlm, sendBuff); if ((orderBizData.AlmProtocol.AlarmNetIdOrIp & 0x0000ff00) == 0x0000fd00) //x.x.253.x { this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaTermDept, sendBuff); } this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaTermTerm, sendBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaProvDual, sendBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaRgnDAlm, sendBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaProvPDAlm, sendBuff); if (orderBizData.AlmProtocol.Media == NCasDefineOrderMedia.MediaAll || orderBizData.AlmProtocol.Media == NCasDefineOrderMedia.MediaSate) { this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaCentSate, sendBuff); if (distInfo.IsDisasterDist) { NCasProtocolBase baseProto = NCasProtocolFactory.ParseFrame(sendBuff); NCasProtocolTc1 tc1 = baseProto as NCasProtocolTc1; tc1.AlarmNetIdOrIpByString = NCasUtilityMng.INCasCommUtility.AddIpAddr(tc1.AlarmNetIdOrIpByString, 0, 2, 0, 0); byte[] tmpBuff = NCasProtocolFactory.MakeUdpFrame(tc1); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaCentSate, tmpBuff); } } udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdExtCasMonitor, sendBuff); if (orderBizData.AlmProtocol.Media == NCasDefineOrderMedia.MediaAll || orderBizData.AlmProtocol.Media == NCasDefineOrderMedia.MediaLine) { foreach (TermInfo termInfo in distInfo.LstTerms) { if (termInfo.UseFlag == NCasDefineUseStatus.Use) { udpSoc.SendTo(termInfo.IpAddrToSring, (int)NCasPortID.PortIdAlarm, sendBuff); } } } //지진해일 시군 if (distInfo.IsDisasterDist) { orderBizData.AlmProtocol.AlarmNetIdOrIpByString = NCasUtilityMng.INCasCommUtility.AddIpAddr(orderBizData.AlmProtocol.AlarmNetIdOrIpByString, 0, 2, 0, 0); byte[] sendDisasterBuff = NCasProtocolFactory.MakeUdpFrame(orderBizData.AlmProtocol); this.mainForm.MmfMng.WriteOrder(orderBizData.AlmProtocol); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaCentCAlm, sendDisasterBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaProvMain, sendDisasterBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaRgnRAlm, sendDisasterBuff); if ((orderBizData.AlmProtocol.AlarmNetIdOrIp & 0x0000ff00) == 0x0000fd00) //x.x.253.x { this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaTermDept, sendDisasterBuff); } this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaTermTerm, sendDisasterBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaProvDual, sendDisasterBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaRgnDAlm, sendDisasterBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaProvPDAlm, sendDisasterBuff); if (orderBizData.AlmProtocol.Media == NCasDefineOrderMedia.MediaAll || orderBizData.AlmProtocol.Media == NCasDefineOrderMedia.MediaSate) { this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaCentSate, sendDisasterBuff); } udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdExtCasMonitor, sendDisasterBuff); if (orderBizData.AlmProtocol.Media == NCasDefineOrderMedia.MediaAll || orderBizData.AlmProtocol.Media == NCasDefineOrderMedia.MediaLine) { foreach (TermInfo termInfo in distInfo.LstTerms) { if (termInfo.UseFlag == NCasDefineUseStatus.Use) { udpSoc.SendTo(termInfo.IpAddrToSring, (int)NCasPortID.PortIdAlarm, sendDisasterBuff); } } } } if (orderBizData.IsEnd == PAlmScreenUIController.OrderDataSendStatus.First || orderBizData.IsEnd == PAlmScreenUIController.OrderDataSendStatus.FirstEnd) { if (orderBizData.AlmProtocol.AlarmKind == NCasDefineOrderKind.DisasterBroadcast && orderBizData.SelectedDisasterBroadKind == PAlmScreenUIController.DisasterBroadKind.Tts) { byte[] tmpBuff = TtsControlDataMng.GetTtsPlayData(); udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdTtsControl, Encoding.Default.GetBytes("RES")); udpSoc.SendTo(teleServerIpAddr, (int)NCasPortID.PortIdExtCallPgServer, tmpBuff); udpSoc.SendTo(NCasUtilityMng.INCasEtcUtility.GetIPv4(), (int)NCasPortID.PortIdExtCallPgMan, tmpBuff); Thread.Sleep(this.TtsDelay); string ttsData = "TTS" + NCasContentsMng.ttsOption.SpeechSpeed.ToString().PadLeft(3, '0') + NCasContentsMng.ttsOption.RepeatCount.ToString().PadLeft(2, '0') + NCasContentsMng.ttsOption.SentenceInterval.ToString().PadLeft(4, '0') + NCasContentsMng.ttsOption.RestInterval.ToString().PadLeft(4, '0') + orderBizData.SelectedTtsMessage.Text; udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdTtsMessage, Encoding.Default.GetBytes(ttsData)); } else if (orderBizData.AlmProtocol.AlarmKind != NCasDefineOrderKind.DisasterBroadcast) { udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdTtsControl, Encoding.Default.GetBytes("RES")); } } } }
/// <summary> /// 그룹 발령 명령을 처리하는 메소드 /// </summary> /// <param name="orderBizData"></param> private void OrderGroup() { byte[] tmpBuff = TtsControlDataMng.GetTeleStartData(); string teleServerIpAddr = NCasUtilityMng.INCasCommUtility.AddIpAddr(NCasUtilityMng.INCasCommUtility.MakeNetIdByAnyIp(this.provInfo.NetIdToString), 0, 0, 1, 111); List <string> reptAlarmServerIpAddr = new List <string>(); for (int i = 0; i < this.provInfo.LstRepts.Count; i++) { reptAlarmServerIpAddr.Add(NCasUtilityMng.INCasCommUtility.AddIpAddr(this.provInfo.LstRepts[i].NetIdToString, 0, 0, 1, 1)); } foreach (OrderBizData orderBizData in this.lstOrderBizData) { udpSoc.SendTo(teleServerIpAddr, (int)NCasPortID.PortIdExtCallPgServer, orderBizData.SendBuff); udpSoc.SendTo(NCasUtilityMng.INCasEtcUtility.GetIPv4(), (int)NCasPortID.PortIdExtCallPgMan, orderBizData.SendBuff); for (int i = 0; i < reptAlarmServerIpAddr.Count; i++) { udpSoc.SendTo(reptAlarmServerIpAddr[i], (int)NCasPortID.PortIdIntTeleRAlarm, orderBizData.SendBuff); } } tmpBuff = TtsControlDataMng.GetTeleStopData(); if (this.lstOrderBizData[0].AlmProtocol.AlarmKind == NCasDefineOrderKind.AlarmBiochemist || (this.lstOrderBizData[0].AlmProtocol.AlarmKind == NCasDefineOrderKind.DisasterBroadcast && this.lstOrderBizData[0].SelectedDisasterBroadKind == PAlmScreenUIController.DisasterBroadKind.Mic) || (this.lstOrderBizData[0].AlmProtocol.AlarmKind == NCasDefineOrderKind.DisasterBroadcast && this.lstOrderBizData[0].SelectedDisasterBroadKind == PAlmScreenUIController.DisasterBroadKind.Tts)) { Thread.Sleep(this.SendDelay); } //그룹발령 정보 전송 (TC 77) for (int i = 0; i < lstOrderBizData[0].GroupName.Count; i++) { NCasProtocolBase protoBase77 = NCasProtocolFactory.CreateCasProtocol(NCasDefineTcCode.TcGroupOrder); NCasProtocolTc77 protoTc77 = protoBase77 as NCasProtocolTc77; protoTc77.AlarmKind = this.lstOrderBizData[0].AlmProtocol.AlarmKind; protoTc77.AlarmNetIdOrIpByString = this.lstOrderBizData[0].AlmProtocol.AlarmNetIdOrIpByString; protoTc77.CtrlKind = this.lstOrderBizData[0].AlmProtocol.CtrlKind; protoTc77.GroupName = lstOrderBizData[0].GroupName[i]; protoTc77.GroupNum = (byte)lstOrderBizData[0].GroupName.Count; protoTc77.Media = this.lstOrderBizData[0].AlmProtocol.Media; protoTc77.Mode = this.lstOrderBizData[0].AlmProtocol.Mode; protoTc77.OrderTimeByDateTime = this.lstOrderBizData[0].AlmProtocol.OrderTimeByDateTime; protoTc77.Sector = this.lstOrderBizData[0].AlmProtocol.Sector; protoTc77.Source = this.lstOrderBizData[0].AlmProtocol.Source; byte[] tc77Buff = NCasProtocolFactory.MakeUdpFrame(protoTc77); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaProvMain, tc77Buff); string tmpLog = string.Format("GroupName - {0}, GroupNum - {1}, OrderTime - {2}", protoTc77.GroupName, protoTc77.GroupNum.ToString(), protoTc77.OrderTimeByDateTime.ToString()); NCasLoggingMng.ILogging.WriteLog("PAlmScreenBiz", "그룹발령 정보(TC 77)를 NCasPipes.PipePcaProvMain로 전송 완료 - " + tmpLog); System.Diagnostics.Debug.WriteLine("### 그룹발령 정보(TC 77) - " + tmpLog); } foreach (OrderBizData orderBizData in this.lstOrderBizData) { byte[] sendBuff = orderBizData.SendBuff; this.mainForm.MmfMng.WriteOrder(orderBizData.AlmProtocol); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaCentCAlm, sendBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaProvMain, sendBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaRgnRAlm, sendBuff); if ((orderBizData.AlmProtocol.AlarmNetIdOrIp & 0x0000ff00) == 0x0000fd00) //x.x.253.x { this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaTermDept, sendBuff); } this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaTermTerm, sendBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaProvDual, sendBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaRgnDAlm, sendBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaProvPDAlm, sendBuff); if (orderBizData.AlmProtocol.Media == NCasDefineOrderMedia.MediaAll || orderBizData.AlmProtocol.Media == NCasDefineOrderMedia.MediaSate) { this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaCentSate, sendBuff); if (orderBizData.AlmProtocol.Sector == NCasDefineSectionCode.SectionDist) { DistInfo distInfo = this.mainForm.MmfMng.GetDistInfoByNetId(NCasUtilityMng.INCasCommUtility.SubtractIpAddr(orderBizData.AlmProtocol.AlarmNetIdOrIpByString, 0, 0, 0, 255)); if (distInfo.IsDisasterDist) { NCasProtocolBase baseProto = NCasProtocolFactory.ParseFrame(sendBuff); NCasProtocolTc1 tc1 = baseProto as NCasProtocolTc1; tc1.AlarmNetIdOrIpByString = NCasUtilityMng.INCasCommUtility.AddIpAddr(tc1.AlarmNetIdOrIpByString, 0, 2, 0, 0); byte[] disasterBuff = NCasProtocolFactory.MakeUdpFrame(tc1); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaCentSate, disasterBuff); } } } udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdExtCasMonitor, sendBuff); if (orderBizData.AlmProtocol.Media == NCasDefineOrderMedia.MediaAll || orderBizData.AlmProtocol.Media == NCasDefineOrderMedia.MediaLine) { if (orderBizData.AlmProtocol.Sector == NCasDefineSectionCode.SectionTerm) { udpSoc.SendTo(orderBizData.AlmProtocol.AlarmNetIdOrIpByString, (int)NCasPortID.PortIdAlarm, sendBuff); } else if (orderBizData.AlmProtocol.Sector == NCasDefineSectionCode.SectionDist) { DistInfo distInfo = this.mainForm.MmfMng.GetDistInfoByNetId(NCasUtilityMng.INCasCommUtility.SubtractIpAddr(orderBizData.AlmProtocol.AlarmNetIdOrIpByString, 0, 0, 0, 255)); foreach (TermInfo termInfo in distInfo.LstTerms) { if (termInfo.UseFlag == NCasDefineUseStatus.Use) { udpSoc.SendTo(termInfo.IpAddrToSring, (int)NCasPortID.PortIdAlarm, sendBuff); } } } } //지진해일 시군 if (orderBizData.AlmProtocol.Sector == NCasDefineSectionCode.SectionDist) { DistInfo distInfo = this.mainForm.MmfMng.GetDistInfoByNetId(NCasUtilityMng.INCasCommUtility.SubtractIpAddr(orderBizData.AlmProtocol.AlarmNetIdOrIpByString, 0, 0, 0, 255)); if (distInfo.IsDisasterDist) { orderBizData.AlmProtocol.AlarmNetIdOrIpByString = NCasUtilityMng.INCasCommUtility.AddIpAddr(orderBizData.AlmProtocol.AlarmNetIdOrIpByString, 0, 2, 0, 0); byte[] sendDisasterBuff = NCasProtocolFactory.MakeUdpFrame(orderBizData.AlmProtocol); this.mainForm.MmfMng.WriteOrder(orderBizData.AlmProtocol); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaCentCAlm, sendDisasterBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaProvMain, sendDisasterBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaRgnRAlm, sendDisasterBuff); if ((orderBizData.AlmProtocol.AlarmNetIdOrIp & 0x0000ff00) == 0x0000fd00) //x.x.253.x { this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaTermDept, sendDisasterBuff); } this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaTermTerm, sendDisasterBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaProvDual, sendDisasterBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaRgnDAlm, sendDisasterBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaProvPDAlm, sendDisasterBuff); if (orderBizData.AlmProtocol.Media == NCasDefineOrderMedia.MediaAll || orderBizData.AlmProtocol.Media == NCasDefineOrderMedia.MediaSate) { this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePcaCentSate, sendDisasterBuff); } udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdExtCasMonitor, sendDisasterBuff); if (orderBizData.AlmProtocol.Media == NCasDefineOrderMedia.MediaAll || orderBizData.AlmProtocol.Media == NCasDefineOrderMedia.MediaLine) { foreach (TermInfo termInfo in distInfo.LstTerms) { if (termInfo.UseFlag == NCasDefineUseStatus.Use) { udpSoc.SendTo(termInfo.IpAddrToSring, (int)NCasPortID.PortIdAlarm, sendDisasterBuff); } } } } } if (orderBizData.IsEnd == PAlmScreenUIController.OrderDataSendStatus.First || orderBizData.IsEnd == PAlmScreenUIController.OrderDataSendStatus.FirstEnd) { if (orderBizData.AlmProtocol.AlarmKind == NCasDefineOrderKind.DisasterBroadcast && orderBizData.SelectedDisasterBroadKind == PAlmScreenUIController.DisasterBroadKind.Tts) { tmpBuff = TtsControlDataMng.GetTtsPlayData(); udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdTtsControl, Encoding.Default.GetBytes("RES")); udpSoc.SendTo(teleServerIpAddr, (int)NCasPortID.PortIdExtCallPgServer, tmpBuff); udpSoc.SendTo(NCasUtilityMng.INCasEtcUtility.GetIPv4(), (int)NCasPortID.PortIdExtCallPgMan, tmpBuff); Thread.Sleep(this.TtsDelay); string ttsData = "TTS" + NCasContentsMng.ttsOption.SpeechSpeed.ToString().PadLeft(3, '0') + NCasContentsMng.ttsOption.RepeatCount.ToString().PadLeft(2, '0') + NCasContentsMng.ttsOption.SentenceInterval.ToString().PadLeft(4, '0') + NCasContentsMng.ttsOption.RestInterval.ToString().PadLeft(4, '0') + orderBizData.SelectedTtsMessage.Text; udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdTtsMessage, Encoding.Default.GetBytes(ttsData)); } else if (orderBizData.AlmProtocol.AlarmKind != NCasDefineOrderKind.DisasterBroadcast) { udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdTtsControl, Encoding.Default.GetBytes("RES")); } } } }
/// <summary> /// 시도 전체 발령 /// </summary> /// <param name="orderBizData"></param> private void OrderProvAll(OrderBizData orderBizData) { NCasProtocolBase baseProto = NCasProtocolFactory.ParseFrame(orderBizData.SendBuff); NCasProtocolTc1 tc1 = baseProto as NCasProtocolTc1; tc1.AlarmNetIdOrIpByString = NCasUtilityMng.INCasCommUtility.AddIpAddr(tc1.AlarmNetIdOrIpByString, 0, 7, 0, 0); byte[] sendBuff = NCasProtocolFactory.MakeUdpFrame(tc1); NCasProtocolBase protoBase = NCasProtocolFactory.CreateCasProtocol(NCasDefineTcCode.TcPublicAlarmOrder); NCasProtocolTc151 protoTc151 = protoBase as NCasProtocolTc151; if (orderBizData.SelectedDisasterBroadKind != OrderView19201080.DisasterBroadKind.StroredMessage) { string teleServerIpAddr = NCasUtilityMng.INCasCommUtility.AddIpAddr(NCasUtilityMng.INCasCommUtility.MakeNetIdByAnyIp(this.provInfo.NetIdToString), 0, 0, 1, 111); List <string> reptAlarmServerIpAddr = new List <string>(); for (int i = 0; i < this.provInfo.LstRepts.Count; i++) { reptAlarmServerIpAddr.Add(NCasUtilityMng.INCasCommUtility.AddIpAddr(this.provInfo.LstRepts[i].NetIdToString, 0, 0, 1, 1)); } udpSoc.SendTo(teleServerIpAddr, (int)NCasPortID.PortIdExtCallPgServer, sendBuff); udpSoc.SendTo(NCasUtilityMng.INCasEtcUtility.GetIPv4(), (int)NCasPortID.PortIdExtCallPgMan, sendBuff); for (int i = 0; i < reptAlarmServerIpAddr.Count; i++) { udpSoc.SendTo(reptAlarmServerIpAddr[i], (int)NCasPortID.PortIdIntTeleRAlarm, sendBuff); } } if (tc1.AlarmKind == NCasDefineOrderKind.AlarmBiochemist || (tc1.AlarmKind == NCasDefineOrderKind.DisasterBroadcast && orderBizData.SelectedDisasterBroadKind == OrderView19201080.DisasterBroadKind.Mic) || (tc1.AlarmKind == NCasDefineOrderKind.DisasterBroadcast && orderBizData.SelectedDisasterBroadKind == OrderView19201080.DisasterBroadKind.Tts)) { Thread.Sleep(this.SendDelay); } byte[] tmpStoBuff = null; if (orderBizData.SelectedDisasterBroadKind == OrderView19201080.DisasterBroadKind.StroredMessage) { protoTc151.AlarmKind = NCasDefineOrderKind.BroadMessage; protoTc151.AlarmNetIdOrIpByString = tc1.AlarmNetIdOrIpByString; protoTc151.AuthenFlag = tc1.AuthenFlag; protoTc151.CtrlKind = tc1.CtrlKind; protoTc151.Media = tc1.Media; protoTc151.Mode = tc1.Mode; protoTc151.Source = tc1.Source; protoTc151.Sector = tc1.Sector; protoTc151.RespReqFlag = tc1.RespReqFlag; protoTc151.OrderTimeByDateTime = tc1.OrderTimeByDateTime; protoTc151.MsgNum1 = GetStoredMsgHeaderNumber(int.Parse(orderBizData.SelectedStoredMessage.MsgNum)); protoTc151.MsgNum2 = int.Parse(orderBizData.SelectedStoredMessage.MsgNum); protoTc151.MsgNum3 = GetStoredMsgTailNumber(int.Parse(orderBizData.SelectedStoredMessage.MsgNum)); protoTc151.RepeatNum = (byte)orderBizData.StoredMessageRepeatCount; tmpStoBuff = NCasProtocolFactory.MakeUdpFrame(protoTc151); } this.mainForm.MmfMng.WriteOrder(tc1); if (orderBizData.SelectedDisasterBroadKind == OrderView19201080.DisasterBroadKind.StroredMessage) //저장메시지 발령인 경우.. { this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdIntAuthorityDAlarm, tmpStoBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdExtCasMonitor, tmpStoBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePdaProvAlm, tmpStoBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePdaProvPDMain, tmpStoBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePdaTermTerm, tmpStoBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePdaCentSate, tmpStoBuff); } else { this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdIntAuthorityDAlarm, sendBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdExtCasMonitor, sendBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePdaProvAlm, sendBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePdaProvPDMain, sendBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePdaTermTerm, sendBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePdaCentSate, sendBuff); } if (tc1.AlarmKind == NCasDefineOrderKind.DisasterBroadcast && orderBizData.SelectedDisasterBroadKind == OrderView19201080.DisasterBroadKind.Tts) { byte[] tmpBuff = TtsControlDataMng.GetTtsPlayData(); string teleServerIpAddr = NCasUtilityMng.INCasCommUtility.AddIpAddr(NCasUtilityMng.INCasCommUtility.MakeNetIdByAnyIp(this.provInfo.NetIdToString), 0, 0, 1, 111); udpSoc.SendTo(teleServerIpAddr, (int)NCasPortID.PortIdExtCallPgServer, tmpBuff); udpSoc.SendTo(NCasUtilityMng.INCasEtcUtility.GetIPv4(), (int)NCasPortID.PortIdExtCallPgMan, tmpBuff); udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdTtsControl, Encoding.Default.GetBytes("RES")); Thread.Sleep(this.TtsDelay); string ttsData = "TTS" + NCasContentsMng.ttsOption.SpeechSpeed.ToString().PadLeft(3, '0') + NCasContentsMng.ttsOption.RepeatCount.ToString().PadLeft(2, '0') + NCasContentsMng.ttsOption.SentenceInterval.ToString().PadLeft(4, '0') + NCasContentsMng.ttsOption.RestInterval.ToString().PadLeft(4, '0') + orderBizData.SelectedTtsMessage.Text; udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdTtsMessage, Encoding.Default.GetBytes(ttsData)); } else if (tc1.AlarmKind == NCasDefineOrderKind.DisasterBroadcast && orderBizData.SelectedDisasterBroadKind == OrderView19201080.DisasterBroadKind.Mic) { byte[] tmpBuff = TtsControlDataMng.GetTtsPlayData(); string teleServerIpAddr = NCasUtilityMng.INCasCommUtility.AddIpAddr(NCasUtilityMng.INCasCommUtility.MakeNetIdByAnyIp(this.provInfo.NetIdToString), 0, 0, 1, 111); udpSoc.SendTo(teleServerIpAddr, (int)NCasPortID.PortIdExtCallPgServer, tmpBuff); udpSoc.SendTo(NCasUtilityMng.INCasEtcUtility.GetIPv4(), (int)NCasPortID.PortIdExtCallPgMan, tmpBuff); udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdTtsControl, Encoding.Default.GetBytes("RES")); } else if (tc1.AlarmKind != NCasDefineOrderKind.DisasterBroadcast) { udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdTtsControl, Encoding.Default.GetBytes("RES")); } }
protected override void OnAsyncExternProcessing(NCASBIZ.NCasType.NCasObject param) { if (param is OrderBizData) { try { OrderBizData orderBizData = param as OrderBizData; if (orderBizData.IsLocal == false) { return; } if (orderBizData.SendBuff == null) { NCasLoggingMng.ILogging.WriteLog("PDAlmScreenBiz", "발령이 정상적으로 처리되지 않았습니다.", "TC " + orderBizData.AlmProtocol.TcCode.ToString() + " - " + NCasUtilityMng.INCasEtcUtility.Bytes2HexString(orderBizData.SendBuff)); return; } if (orderBizData.IsEnd == OrderView19201080.OrderDataSendStatus.First) { udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdTtsControl, Encoding.Default.GetBytes("RES")); Thread.Sleep(500); } if (orderBizData.TtsOrderFlag) //마지막 발령이 TTS발령이면.. { byte[] tmpBuff = TtsControlDataMng.GetTtsStopData(); string teleServerIpAddr = NCasUtilityMng.INCasCommUtility.AddIpAddr(NCasUtilityMng.INCasCommUtility.MakeNetIdByAnyIp(this.provInfo.NetIdToString), 0, 0, 1, 111); udpSoc.SendTo(teleServerIpAddr, (int)NCasPortID.PortIdExtCallPgServer, tmpBuff); udpSoc.SendTo(NCasUtilityMng.INCasEtcUtility.GetIPv4(), (int)NCasPortID.PortIdExtCallPgMan, tmpBuff); } if (orderBizData.AllDestinationFlag || orderBizData.OrderTermAllFlag) //시도전체 발령(무조건 1개 패킷 전송) { this.OrderProvAll(orderBizData); } else //하나의 발령에 의해 여러개의 패킷을 전송해야 하는 경우.. { if (orderBizData.IsEnd == OrderView19201080.OrderDataSendStatus.First || orderBizData.IsEnd == OrderView19201080.OrderDataSendStatus.None) { this.lstOrderBizData.Add(orderBizData); } else if (orderBizData.IsEnd == OrderView19201080.OrderDataSendStatus.End || orderBizData.IsEnd == OrderView19201080.OrderDataSendStatus.FirstEnd) { this.lstOrderBizData.Add(orderBizData); if (orderBizData.OrderTermFlag || orderBizData.OrderTermGroupFlag || orderBizData.OrderDistTermFlag) //단말개별 발령 { this.OrderTerm(); } else if (orderBizData.OrderDistFlag || orderBizData.OrderDistGroupFlag || orderBizData.OrderDistTermAllFlag) //시군 발령 { this.OrderDist(); } this.lstOrderBizData.Clear(); } } } catch (Exception ex) { NCasLoggingMng.ILoggingException.WriteException("PDAlmScreenBiz", "PDAlmScreenBiz.OnAsyncExternProcessing Method - OrderBizData", ex); } } else if (param is NCasProtocolBase) { try { NCasProtocolBase nCasPlcProtocolBase = param as NCasProtocolBase; byte[] buff = NCasProtocolFactory.MakeUdpFrame(nCasPlcProtocolBase); if (nCasPlcProtocolBase.TcCode == NCasDefineTcCode.None) { NCasLoggingMng.ILogging.WriteLog("PDAlmScreenBiz", "NCasPlcProtocolFactory.TcCode is NCasDefineTcCode.None"); return; } if (buff == null) { NCasLoggingMng.ILogging.WriteLog("PDAlmScreenBiz", "buff is null"); return; } this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipeNccDevAlmKey, buff); } catch (Exception ex) { NCasLoggingMng.ILoggingException.WriteException("PDAlmScreenBiz", "PDAlmScreenBiz.OnAsyncExternProcessing Method - NCasPlcProtocolBase", ex); } } }
/// <summary> /// 시군 발령 /// </summary> private void OrderDist() { NCasProtocolBase protoBase = NCasProtocolFactory.CreateCasProtocol(NCasDefineTcCode.TcPublicAlarmOrder); NCasProtocolTc151 protoTc151 = protoBase as NCasProtocolTc151; string teleServerIpAddr = NCasUtilityMng.INCasCommUtility.AddIpAddr(NCasUtilityMng.INCasCommUtility.MakeNetIdByAnyIp(this.provInfo.NetIdToString), 0, 0, 1, 111); List <string> reptAlarmServerIpAddr = new List <string>(); for (int i = 0; i < this.provInfo.LstRepts.Count; i++) { reptAlarmServerIpAddr.Add(NCasUtilityMng.INCasCommUtility.AddIpAddr(this.provInfo.LstRepts[i].NetIdToString, 0, 0, 1, 1)); } if (this.lstOrderBizData[0].SelectedDisasterBroadKind != OrderView19201080.DisasterBroadKind.StroredMessage) { foreach (OrderBizData orderBizData in this.lstOrderBizData) { udpSoc.SendTo(teleServerIpAddr, (int)NCasPortID.PortIdExtCallPgServer, orderBizData.SendBuff); udpSoc.SendTo(NCasUtilityMng.INCasEtcUtility.GetIPv4(), (int)NCasPortID.PortIdExtCallPgMan, orderBizData.SendBuff); for (int i = 0; i < reptAlarmServerIpAddr.Count; i++) { udpSoc.SendTo(reptAlarmServerIpAddr[i], (int)NCasPortID.PortIdIntTeleRAlarm, orderBizData.SendBuff); } } } if (this.lstOrderBizData[0].AlmProtocol.AlarmKind == NCasDefineOrderKind.AlarmBiochemist || (this.lstOrderBizData[0].AlmProtocol.AlarmKind == NCasDefineOrderKind.DisasterBroadcast && this.lstOrderBizData[0].SelectedDisasterBroadKind == OrderView19201080.DisasterBroadKind.Mic) || (this.lstOrderBizData[0].AlmProtocol.AlarmKind == NCasDefineOrderKind.DisasterBroadcast && this.lstOrderBizData[0].SelectedDisasterBroadKind == OrderView19201080.DisasterBroadKind.Tts)) { Thread.Sleep(this.SendDelay); } //그룹정보 전송 if (this.lstOrderBizData[0].OrderDistGroupFlag) { for (int i = 0; i < lstOrderBizData[0].GroupName.Count; i++) { NCasProtocolBase protoBase77 = NCasProtocolFactory.CreateCasProtocol(NCasDefineTcCode.TcGroupOrder); NCasProtocolTc77 protoTc77 = protoBase77 as NCasProtocolTc77; protoTc77.AlarmKind = this.lstOrderBizData[0].AlmProtocol.AlarmKind; protoTc77.AlarmNetIdOrIpByString = this.lstOrderBizData[0].AlmProtocol.AlarmNetIdOrIpByString; protoTc77.CtrlKind = this.lstOrderBizData[0].AlmProtocol.CtrlKind; protoTc77.GroupName = lstOrderBizData[0].GroupName[i]; protoTc77.Media = this.lstOrderBizData[0].AlmProtocol.Media; protoTc77.Mode = this.lstOrderBizData[0].AlmProtocol.Mode; protoTc77.OrderTimeByDateTime = this.lstOrderBizData[0].AlmProtocol.OrderTimeByDateTime; protoTc77.Sector = this.lstOrderBizData[0].AlmProtocol.Sector; protoTc77.Source = this.lstOrderBizData[0].AlmProtocol.Source; byte[] tmp77Buff = NCasProtocolFactory.MakeUdpFrame(protoTc77); string disasterMainIpAddr = NCasUtilityMng.INCasCommUtility.AddIpAddr(NCasUtilityMng.INCasCommUtility.MakeNetIdByAnyIp(this.provInfo.NetIdToString), 0, 0, 1, 232); string main = NCasUtilityMng.INCasCommUtility.AddIpAddr(NCasUtilityMng.INCasCommUtility.MakeNetIdByAnyIp(this.provInfo.NetIdToString), 0, 0, 1, 9); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePdaProvAlm, tmp77Buff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePdaProvPDMain, tmp77Buff); this.udpSoc.SendTo(disasterMainIpAddr, 7003, tmp77Buff); this.udpSoc.SendTo(main, 7003, tmp77Buff); Console.WriteLine("##### 시군그룹 정보 전송 - " + lstOrderBizData[0].GroupName[i]); } if (this.lstOrderBizData[0].AlmProtocol.AlarmKind == NCasDefineOrderKind.AlarmCancel) { this.mainForm.SetGroupListClear(); } } foreach (OrderBizData orderBizData in this.lstOrderBizData) { DistInfo distInfo = this.mainForm.MmfMng.GetDistInfoByNetId(NCasUtilityMng.INCasCommUtility.SubtractIpAddr(orderBizData.AlmProtocol.AlarmNetIdOrIpByString, 0, 0, 0, 255)); byte[] tmpStoredBuff = null; if (orderBizData.SelectedDisasterBroadKind == OrderView19201080.DisasterBroadKind.StroredMessage) { protoTc151.AlarmKind = NCasDefineOrderKind.BroadMessage; protoTc151.AlarmNetIdOrIpByString = orderBizData.AlmProtocol.AlarmNetIdOrIpByString; protoTc151.AuthenFlag = orderBizData.AlmProtocol.AuthenFlag; protoTc151.CtrlKind = orderBizData.AlmProtocol.CtrlKind; protoTc151.Media = orderBizData.AlmProtocol.Media; protoTc151.Mode = orderBizData.AlmProtocol.Mode; protoTc151.Source = orderBizData.AlmProtocol.Source; protoTc151.Sector = orderBizData.AlmProtocol.Sector; protoTc151.RespReqFlag = orderBizData.AlmProtocol.RespReqFlag; protoTc151.OrderTimeByDateTime = orderBizData.AlmProtocol.OrderTimeByDateTime; protoTc151.MsgNum1 = GetStoredMsgHeaderNumber(int.Parse(orderBizData.SelectedStoredMessage.MsgNum)); protoTc151.MsgNum2 = int.Parse(orderBizData.SelectedStoredMessage.MsgNum); protoTc151.MsgNum3 = GetStoredMsgTailNumber(int.Parse(orderBizData.SelectedStoredMessage.MsgNum)); protoTc151.RepeatNum = (byte)orderBizData.StoredMessageRepeatCount; tmpStoredBuff = NCasProtocolFactory.MakeUdpFrame(protoTc151); } this.mainForm.MmfMng.WriteOrder(orderBizData.AlmProtocol); if (orderBizData.SelectedDisasterBroadKind == OrderView19201080.DisasterBroadKind.StroredMessage) //저장메시지 발령인 경우.. { this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdIntAuthorityDAlarm, tmpStoredBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdExtCasMonitor, tmpStoredBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePdaProvAlm, tmpStoredBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePdaProvPDMain, tmpStoredBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePdaTermTerm, tmpStoredBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePdaCentSate, tmpStoredBuff); } else { this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdIntAuthorityDAlarm, orderBizData.SendBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdExtCasMonitor, orderBizData.SendBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePdaProvAlm, orderBizData.SendBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePdaProvPDMain, orderBizData.SendBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePdaTermTerm, orderBizData.SendBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePdaCentSate, orderBizData.SendBuff); } //지진해일 시군 if (distInfo.IsDisasterDist) { orderBizData.AlmProtocol.AlarmNetIdOrIpByString = NCasUtilityMng.INCasCommUtility.AddIpAddr(orderBizData.AlmProtocol.AlarmNetIdOrIpByString, 0, 2, 0, 0); byte[] tmpDistBuff = NCasProtocolFactory.MakeUdpFrame(orderBizData.AlmProtocol); byte[] tmpDistStoredBuff = null; if (orderBizData.SelectedDisasterBroadKind == OrderView19201080.DisasterBroadKind.StroredMessage) { protoTc151.AlarmKind = NCasDefineOrderKind.BroadMessage; protoTc151.AlarmNetIdOrIpByString = orderBizData.AlmProtocol.AlarmNetIdOrIpByString; protoTc151.AuthenFlag = orderBizData.AlmProtocol.AuthenFlag; protoTc151.CtrlKind = orderBizData.AlmProtocol.CtrlKind; protoTc151.Media = orderBizData.AlmProtocol.Media; protoTc151.Mode = orderBizData.AlmProtocol.Mode; protoTc151.Source = orderBizData.AlmProtocol.Source; protoTc151.Sector = orderBizData.AlmProtocol.Sector; protoTc151.RespReqFlag = orderBizData.AlmProtocol.RespReqFlag; protoTc151.OrderTimeByDateTime = orderBizData.AlmProtocol.OrderTimeByDateTime; protoTc151.MsgNum1 = GetStoredMsgHeaderNumber(int.Parse(orderBizData.SelectedStoredMessage.MsgNum)); protoTc151.MsgNum2 = int.Parse(orderBizData.SelectedStoredMessage.MsgNum); protoTc151.MsgNum3 = GetStoredMsgTailNumber(int.Parse(orderBizData.SelectedStoredMessage.MsgNum)); protoTc151.RepeatNum = (byte)orderBizData.StoredMessageRepeatCount; tmpDistStoredBuff = NCasProtocolFactory.MakeUdpFrame(protoTc151); } this.mainForm.MmfMng.WriteOrder(orderBizData.AlmProtocol); if (orderBizData.SelectedDisasterBroadKind == OrderView19201080.DisasterBroadKind.StroredMessage) //저장메시지 발령인 경우.. { this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdIntAuthorityDAlarm, tmpDistStoredBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdExtCasMonitor, tmpDistStoredBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePdaProvAlm, tmpDistStoredBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePdaProvPDMain, tmpDistStoredBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePdaTermTerm, tmpDistStoredBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePdaCentSate, tmpDistStoredBuff); } else { this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdIntAuthorityDAlarm, tmpDistBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdExtCasMonitor, tmpDistBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePdaProvAlm, tmpDistBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePdaProvPDMain, tmpDistBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePdaTermTerm, tmpDistBuff); this.udpSoc.SendTo(this.LoopBackIP, (int)NCasPipes.PipePdaCentSate, tmpDistBuff); } } if (orderBizData.IsEnd == OrderView19201080.OrderDataSendStatus.First || orderBizData.IsEnd == OrderView19201080.OrderDataSendStatus.FirstEnd) { if (orderBizData.AlmProtocol.AlarmKind == NCasDefineOrderKind.DisasterBroadcast && orderBizData.SelectedDisasterBroadKind == OrderView19201080.DisasterBroadKind.Tts) { byte[] tmpBuff = TtsControlDataMng.GetTtsPlayData(); udpSoc.SendTo(teleServerIpAddr, (int)NCasPortID.PortIdExtCallPgServer, tmpBuff); udpSoc.SendTo(NCasUtilityMng.INCasEtcUtility.GetIPv4(), (int)NCasPortID.PortIdExtCallPgMan, tmpBuff); udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdTtsControl, Encoding.Default.GetBytes("RES")); Thread.Sleep(this.TtsDelay); string ttsData = "TTS" + NCasContentsMng.ttsOption.SpeechSpeed.ToString().PadLeft(3, '0') + NCasContentsMng.ttsOption.RepeatCount.ToString().PadLeft(2, '0') + NCasContentsMng.ttsOption.SentenceInterval.ToString().PadLeft(4, '0') + NCasContentsMng.ttsOption.RestInterval.ToString().PadLeft(4, '0') + orderBizData.SelectedTtsMessage.Text; udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdTtsMessage, Encoding.Default.GetBytes(ttsData)); } else if (orderBizData.AlmProtocol.AlarmKind == NCasDefineOrderKind.DisasterBroadcast && orderBizData.SelectedDisasterBroadKind == OrderView19201080.DisasterBroadKind.Mic) { byte[] tmpBuff = TtsControlDataMng.GetTtsPlayData(); udpSoc.SendTo(teleServerIpAddr, (int)NCasPortID.PortIdExtCallPgServer, tmpBuff); udpSoc.SendTo(NCasUtilityMng.INCasEtcUtility.GetIPv4(), (int)NCasPortID.PortIdExtCallPgMan, tmpBuff); udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdTtsControl, Encoding.Default.GetBytes("RES")); } else if (orderBizData.AlmProtocol.AlarmKind != NCasDefineOrderKind.DisasterBroadcast) { udpSoc.SendTo(this.LoopBackIP, (int)NCasPortID.PortIdTtsControl, Encoding.Default.GetBytes("RES")); } } } }
/// <summary> /// 발령 버튼 (즉시 발령) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void oklBtn_Click(object sender, EventArgs e) { NCasProtocolTc171 proto171 = NCasProtocolFactory.CreateCasProtocol(NCasDefineTcCode.TcAutoAlarmOrder) as NCasProtocolTc171; proto171.AlarmNetIdOrIpByString = "10.24.8.129"; //임시 proto171.Media = NCasDefineOrderMedia.MediaLine; proto171.CtrlKind = NCasDefineControlKind.ControlAlarm; proto171.OrderTimeByDateTime = DateTime.Now; proto171.Sector = NCasDefineSectionCode.SectionTerm; proto171.Source = NCasDefineOrderSource.ProvCtrlRoom; proto171.RespReqFlag = NCasDefineRespReq.ResponseReq; proto171.AuthenFlag = NCasDefineAuthenticationFlag.EncodeUsed; proto171.AlarmKind = NCasDefineOrderKind.WmaAutoAlarm; if (isWeather) //특보 { proto171.Mode = (WeatherOptionMng.LstWeatherOptionData[0].TestOrder == true) ? NCasDefineOrderMode.TestMode : NCasDefineOrderMode.RealMode; proto171.MsgNum1 = this.GetStoredMsgHeaderNumber(int.Parse(this.mainForm.GetWeatherKindData(cmd1).StoMsg.MsgNum)); proto171.MsgNum2 = int.Parse(this.mainForm.GetWeatherKindData(cmd1).StoMsg.MsgNum); proto171.MsgNum3 = this.GetStoredMsgTailNumber(int.Parse(this.mainForm.GetWeatherKindData(cmd1).StoMsg.MsgNum)); proto171.RepeatNum = (byte)this.mainForm.GetWeatherKindData(cmd1).StoMsg.RepeatCount; NCasLoggingMng.ILogging.WriteLog("특보 데이터 처리 - 의사결정", string.Format("자동방송 저장메시지 [{0}] 방송 실행함", proto171.MsgNum2.ToString())); } else //조위 { try { proto171.Mode = (HeightOptionMng.LstHeightOptionData[0].TestOrder == true) ? NCasDefineOrderMode.TestMode : NCasDefineOrderMode.RealMode; if (cmd2.TideLevel >= HeightOptionMng.LstHeightOptionData[0].MaxValue && cmd2.TideLevel < HeightOptionMng.LstHeightOptionData[0].MaxValue2) { proto171.MsgNum1 = this.GetStoredMsgHeaderNumber(int.Parse(HeightOptionMng.LstHeightOptionData[0].Msg.MsgNum)); proto171.MsgNum2 = int.Parse(HeightOptionMng.LstHeightOptionData[0].Msg.MsgNum); proto171.MsgNum3 = this.GetStoredMsgTailNumber(int.Parse(HeightOptionMng.LstHeightOptionData[0].Msg.MsgNum)); proto171.RepeatNum = (byte)HeightOptionMng.LstHeightOptionData[0].Msg.RepeatCount; } else if (cmd2.TideLevel >= HeightOptionMng.LstHeightOptionData[0].MaxValue2 && cmd2.TideLevel < HeightOptionMng.LstHeightOptionData[0].MaxValue3) { proto171.MsgNum1 = this.GetStoredMsgHeaderNumber(int.Parse(HeightOptionMng.LstHeightOptionData[0].Msg2.MsgNum)); proto171.MsgNum2 = int.Parse(HeightOptionMng.LstHeightOptionData[0].Msg2.MsgNum); proto171.MsgNum3 = this.GetStoredMsgTailNumber(int.Parse(HeightOptionMng.LstHeightOptionData[0].Msg2.MsgNum)); proto171.RepeatNum = (byte)HeightOptionMng.LstHeightOptionData[0].Msg2.RepeatCount; } else if (cmd2.TideLevel >= HeightOptionMng.LstHeightOptionData[0].MaxValue3 && cmd2.TideLevel < HeightOptionMng.LstHeightOptionData[0].MaxValue4) { proto171.MsgNum1 = this.GetStoredMsgHeaderNumber(int.Parse(HeightOptionMng.LstHeightOptionData[0].Msg3.MsgNum)); proto171.MsgNum2 = int.Parse(HeightOptionMng.LstHeightOptionData[0].Msg3.MsgNum); proto171.MsgNum3 = this.GetStoredMsgTailNumber(int.Parse(HeightOptionMng.LstHeightOptionData[0].Msg3.MsgNum)); proto171.RepeatNum = (byte)HeightOptionMng.LstHeightOptionData[0].Msg3.RepeatCount; } else if (cmd2.TideLevel >= HeightOptionMng.LstHeightOptionData[0].MaxValue4) { proto171.MsgNum1 = this.GetStoredMsgHeaderNumber(int.Parse(HeightOptionMng.LstHeightOptionData[0].Msg4.MsgNum)); proto171.MsgNum2 = int.Parse(HeightOptionMng.LstHeightOptionData[0].Msg4.MsgNum); proto171.MsgNum3 = this.GetStoredMsgTailNumber(int.Parse(HeightOptionMng.LstHeightOptionData[0].Msg4.MsgNum)); proto171.RepeatNum = (byte)HeightOptionMng.LstHeightOptionData[0].Msg4.RepeatCount; } } catch (Exception ex) { MessageBox.Show("조위 단계 별 저장메시지가 설정되어 있지 않아 발령을 종료합니다.", "조위 방송", MessageBoxButtons.OK, MessageBoxIcon.Warning); NCasLoggingMng.ILogging.WriteLog("조위 데이터 처리 - 의사결정 전 저장메시지 미설정으로 방송 직전 종료함", "자동방송 저장메시지 방송 종료함"); this.Close(); } NCasLoggingMng.ILogging.WriteLog("조위 데이터 처리 - 의사결정", string.Format("자동방송 저장메시지 [{0}] 방송 실행함", proto171.MsgNum2.ToString())); } byte[] buff = NCasProtocolFactory.MakeUdpFrame(proto171); AutoOrderBizData autoOrderBizData = new AutoOrderBizData(); autoOrderBizData.AlmProtocol = proto171; autoOrderBizData.SendBuff = buff; this.mainForm.SetAutoOrderBizData(autoOrderBizData); this.Close(); }
/// <summary> /// 재발령 버튼 클릭 이벤트 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnReOrder_Click(object sender, EventArgs e) { if (this.reOrderListView.Items.Count == 0) { return; } if (MessageBox.Show(string.Format("현재 보이는 경보단말을 대상으로 '{0}' 발령을 진행하겠습니까?", NCasUtilityMng.INCasCommUtility.NCasDefineOrderKind2String((this.mainForm.MmfMng.GetTermInfoByIp(this.reOrderListView.Items[0].Name)).AlarmOrderInfo.Kind)), "재발령", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes) { this.lastAlarmOrderInfo = this.provInfo.AlarmOrderInfo; this.lastAlarmOrderInfo.AlarmOrderFlag = this.provInfo.AlarmOrderInfo.AlarmOrderFlag; this.lastAlarmOrderInfo.CtrlKind = this.provInfo.AlarmOrderInfo.CtrlKind; this.lastAlarmOrderInfo.IpAddrAlarmArea = this.provInfo.AlarmOrderInfo.IpAddrAlarmArea; this.lastAlarmOrderInfo.IpAddrAlarmAreaToString = this.provInfo.AlarmOrderInfo.IpAddrAlarmAreaToString; this.lastAlarmOrderInfo.IpAddrBraodAreaToString = this.provInfo.AlarmOrderInfo.IpAddrBraodAreaToString; this.lastAlarmOrderInfo.IpAddrBroadArea = this.provInfo.AlarmOrderInfo.IpAddrBroadArea; this.lastAlarmOrderInfo.Kind = this.provInfo.AlarmOrderInfo.Kind; this.lastAlarmOrderInfo.Media = this.provInfo.AlarmOrderInfo.Media; this.lastAlarmOrderInfo.Mode = this.provInfo.AlarmOrderInfo.Mode; this.lastAlarmOrderInfo.OccurTime = this.provInfo.AlarmOrderInfo.OccurTime; this.lastAlarmOrderInfo.OccurTimeToDateTime = this.provInfo.AlarmOrderInfo.OccurTimeToDateTime; this.lastAlarmOrderInfo.RespReq = this.provInfo.AlarmOrderInfo.RespReq; this.lastAlarmOrderInfo.Section = this.provInfo.AlarmOrderInfo.Section; this.lastAlarmOrderInfo.Source = this.provInfo.AlarmOrderInfo.Source; List <OrderBizData> tmpOrderBuff = new List <OrderBizData>(); DateTime orderDateTime = DateTime.Now; for (int i = 0; i < this.reOrderListView.Items.Count; i++) { NCasProtocolBase protoBase = NCasProtocolFactory.CreateCasProtocol(NCasDefineTcCode.TcAlarmOrder); NCasProtocolTc1 protoTc1 = protoBase as NCasProtocolTc1; protoTc1.AlarmNetIdOrIpByString = this.reOrderListView.Items[i].Name; protoTc1.OrderTimeByDateTime = orderDateTime; protoTc1.CtrlKind = NCasDefineControlKind.ControlAlarm; protoTc1.Source = NCasDefineOrderSource.ProvCtrlRoom; protoTc1.AlarmKind = this.lastAlarmOrderInfo.Kind; protoTc1.Mode = this.lastAlarmOrderInfo.Mode; protoTc1.Media = this.lastAlarmOrderInfo.Media; protoTc1.RespReqFlag = NCasDefineRespReq.ResponseReq; protoTc1.AuthenFlag = NCasDefineAuthenticationFlag.EncodeUsed; protoTc1.Sector = NCasDefineSectionCode.SectionTerm; byte[] tmpBuff = NCasProtocolFactory.MakeUdpFrame(protoTc1); OrderBizData orderBizData = new OrderBizData(); orderBizData.AllDestinationFlag = false; orderBizData.AlmProtocol = protoTc1; orderBizData.IsLocal = true; orderBizData.LastOrderKind = this.lastAlarmOrderInfo.Kind; orderBizData.OrderDistFlag = false; orderBizData.OrderGroupFlag = false; orderBizData.OrderTermFlag = true; orderBizData.SendBuff = tmpBuff; orderBizData.SelectedDisasterBroadKind = PAlmScreenUIController.DisasterBroadKind.None; orderBizData.SelectedStoredMessage = new StoredMessageText(); orderBizData.StoredMessageRepeatCount = 1; orderBizData.SelectedTtsMessage = new TtsMessageText(); orderBizData.GroupName = new List <string>(); orderBizData.TtsOrderFlag = false; if (i == 0) { orderBizData.IsEnd = PAlmScreenUIController.OrderDataSendStatus.First; } else if (i == (this.reOrderListView.Items.Count - 1)) { orderBizData.IsEnd = PAlmScreenUIController.OrderDataSendStatus.End; } else { orderBizData.IsEnd = PAlmScreenUIController.OrderDataSendStatus.None; } if (this.reOrderListView.Items.Count == 1) { orderBizData.IsEnd = PAlmScreenUIController.OrderDataSendStatus.FirstEnd; } tmpOrderBuff.Add(orderBizData); } foreach (OrderBizData orderBizData in tmpOrderBuff) { this.mainForm.SetOrderBizData(orderBizData); } } }