亿阳基站退服专题监控软件v20代码_第1页
亿阳基站退服专题监控软件v20代码_第2页
亿阳基站退服专题监控软件v20代码_第3页
亿阳基站退服专题监控软件v20代码_第4页
亿阳基站退服专题监控软件v20代码_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、亿阳退服专题软件V2.0 源代码61-1using System;using System.Collections; using System.Data;using System.Data.OleDb; using System.Data.Odbc; using System.ServiceProcess; using System.Threading; using System.Data.OleDb; using System.Net;using System.Net.Sockets; using System.Text;using System.Xml; using System.IO;u

2、sing AlarmBoardService.faultService;using AlarmBoardService.SendSMS;namespace AlarmBoardServicepublic enum ServiceHandleStatusStarting = 0,Running = 1,Stopping = 2/ 启动中/ 正常运行中/ 停止中public partial class Service : ServiceBase#region 字段ArrayList listMsg = new ArrayList(); ArrayList listMsgExc = new Arra

3、yList(); DataTable handDt,countDt;Hashtable objClassHt=new Hashtable ();/告警专业,objectClass 字典表Hashtable lightHt = new Hashtable();/告警类型,灯颜色字典表private MQMsgProxy mqMsgProxy = null;private Handler hander = null;private AlarmFilter alarmFilter = null;private System.Timers.Timer timerMQReconnect;public S

4、erviceHandleStatus serviceHandleStatus = ServiceHandleStatus.Starting; public bool bSendSynchAlarm = true;public ArrayList aryAlarmItem = new ArrayList();/private Thread SAHandlerThread; private Socket clientSocket1; private Socket serverSocket1; private Socket clientSocket2; private Socket serverSo

5、cket2; private Socket clientSocket15; private Socket serverSocket15;private byte dataPro = new byte256; private int m = 0;亿阳退服专题软件V2.0 源代码61-2private string strAutoSynch = "" private string strStartServiceSynch = "" private TcpListener listener;private Hashtable connections;/priv

6、ate OleDbConnection myDbConn; private OdbcConnection myDbConn; private int updateTime;private string phoneList;private string phoneMsg; #endregion/ 自动同步(以小时为)/ 启动同步(以天为)#region <<<Properties>>> public TcpListener Listenergetreturn listener;setlistener = value;public Hashtable Clien

7、tConnectionsgetreturn connections;setconnections = value;#endregion#region before public Service()/ Thread.Sleep(20000); InitializeComponent();private bool InitMQ(bool bForceReconnect)亿阳退服专题软件V2.0 源代码61-3bool bRet = true; tryif (bForceReconnect)if (mqMsgProxy != null)mqMsgProxy.Stop();mqMsgProxy = n

8、ull; clear();if (mqMsgProxy = null)mqMsgProxy = new MQMsgProxy(); mqMsgProxy.recAlarmMQMsgProxy.OnReceiveAlarm(OnReceiveAlarm);mqMsgProxy.alarmOperationMsg MQMsgProxy.OnAlarmOperationMsg(OnAlarmOperationMsg);mqMsgProxy.filterChangeMsgMQMsgProxy.OnFilterChangeMsg(OnFilterChanged);=new=new=newmqMsgPro

9、xy.mqClosed = new MQMsgProxy.OnMQClosed(OnMQClosed);bRet = mqMsgProxy.Start();catch (Exception ex)bRet = false;Debug.WriteDebugInfo(int)Debug.InfoType.Error, "ServiceError", "InitMQ 失败:0。", ex.ToString();/this.hander.mqProxy = this.mqMsgProxy; return bRet;/thread runvoid SAHandle

10、rStart()try/Thread.Sleep(20000); InitDt(); LoadXmlData();phoneList = Config.AppSettings.GetStringValue("PhoneNumList", ""); phoneMsg = Config.AppSettings.GetStringValue("PhoneMsg", "");string strCon = Config.AppSettings.GetStringValue("NMOSDB.Con2",

11、"");/myDbConn = new OleDbConnection(strCon);亿阳退服专题软件V2.0 源代码61-4myDbConn = new OdbcConnection(strCon); myDbConn.Open();Debug.WriteDebugInfo(int)Debug.InfoType.Information, "OpenDB", "数据库连接:0", DateTime.Now.ToString();updateTime = Config.AppSettings.GetIntValue("Che

12、ckTime", 1) * 1000;初始化/启动Socket,名和IP/ IPAddress serverIP = IPAddress.Parse(""); String hostname = Dns.GetHostName();IPAddress serverIP = Dns.GetHostEntry(hostname).AddressList0;/ Server Port = 13string Port1 = "13" / 13 端口用于与告警板之间的Socket 通信string Port2 = "14&qu

13、ot; / 14 端口用于与其他专业直接的接口Socket 通信string Port3 = "15" / 15 端口用于接受其他专业告警的SocketIPEndPoint serverhost1 = new IPEndPoint(serverIP, Int32.Parse(Port1); IPEndPoint serverhost2 = new IPEndPoint(serverIP, Int32.Parse(Port2);IPEndPoint serverhost15 = new IPEndPoint(serverIP, Int32.Parse(Port3);serve

14、rSocket1 = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);serverSocket2 = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);serverSocket15 = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);serverSocket1.Bind(serverhost1);se

15、rverSocket2.Bind(serverhost2); serverSocket15.Bind(serverhost15);/ Backlog = 50 serverSocket1.Listen(50); serverSocket2.Listen(50);serverSocket15.Listen(50);Thread p1 = new Thread(new ThreadStart(StartServer13); p1.Start();Thread p15 = new Thread(new ThreadStart(StartServer15);p15.Start();/Thread.Sl

16、eep(4000);Debug.WriteDebugInfo(int)Debug.InfoType.Information, "StartTime", "初始化开始时间:0", DateTime.Now.ToString();alarmFilter = new AlarmFilter();hander = new Handler();/components = new System.ComponentM.Container();timerMQReconnect = new System.Windows.Forms.Timer(ponents);亿阳退服专

17、题软件V2.0 源代码61-5/timerMQReconnect.Interval = 10000;timerMQReconnect.Tick+=newSystem.EventHandler(this.timerMQReconnect_Tick);timerMQReconnect = new System.Timers.Timer(10000.00);timerMQReconnect.ElapsedSystem.Timers.ElapsedEventHandler(timerMQReconnect_Tick);+=newDebug.WriteDebugInfo(int)Debug.InfoTy

18、pe.Information,"StartTime","newSystem.EventHandler(this.timerMQReconnect_Tick)结束时间:0", DateTime.Now.ToString(); bool bOk = InitMQ(false);if (!bOk)serviceHandleStatus = ServiceHandleStatus.Stopping;if (hander != null)hander.Dispose();/this.hander.Stop();if (alarmFilter != null)ala

19、rmFilter.Dispose();/ return;throw new Exception("初始化MQ 连接失败,将系统!");/ modify endDebug.WriteDebugInfo(int)Debug.InfoType.Information, "StartTime", " InitMQ(true)结束时间:0", DateTime.Now.ToString();Thread p14 = new Thread(new ThreadStart(StartServer14); p14.Start();/*/步和启动服务的

20、同步/App.config 文件中的同步时间的配置,包括自动定时同strAutoSynch = Config.AppSettings"AutoSynchronize"同步(以小时为)strStartServiceSynch = Config.AppSettings"Synchronization"/ 自动/ 启动同步(以天为)if (strAutoSynch != "")System.Threading.ThreadthreadAutoSynch=newSystem.Threading.Thread(new System.Thread

21、ing.ThreadStart(AutoSynch); threadAutoSynch.Start();/this.hander.Resamp();亿阳退服专题软件V2.0 源代码61-6if (strStartServiceSynch != "")System.Threading.Threadt System.Threading.ThreadStart(SynchDataFromDB);=newSystem.Threading.Thread(newDebug.WriteDebugInfo(int)Debug.InfoType.Information, "Sync

22、hAlarm", "启动同步告警的线程!t.Start()");t.Start();*/catch (Exception ex)Debug.WriteDebugInfo(int)Debug.InfoType.Error, "ServiceError", ex.ToString(); throw;/ <summary>/ 自动同步(以小时为/ </summary> void AutoSynch())每隔N 小时将内存中的告警向告警板一次inime = int.Parse(strAutoSynch); / 以小时为while

23、 (true)Thread.Sleep(nTime * 3600 * 1000);Resamp();int nCount1 = hander.aryAlarms.Count; for (int nI = 0; nI < nCount1; nI+)stringfileType="PrintAlarmCatch_"+DateTime.Now.ToString("yyyyMMdd_HHmmss");AlarmItem aItem = (AlarmItem)hander.aryAlarmsnI;Debug.WriteDebugInfoNoSpe(int)D

24、ebug.InfoType.Error,fileType,aItem.ToString();if (aItem.Confirmed)if (aItem.RedSeverity = 6)SendMsgToClient("R;L;");elseSendMsgToClient("Y;O;");亿阳退服专题软件V2.0 源代码61-7elseif (aItem.RedSeverity = 6)SendMsgToClient("R;");elseSendMsgToClient("Y;");Thread.Sleep(1000)

25、;void SynchDataFromDB()tryDebug.WriteDebugInfo(int)Debug.InfoType.Information,步告警的线程内存空间");double dbStartSynch = double.Parse(strStartServiceSynch); DateTime dt = DateTime.Now;"SynchAlarm", "进入同string strCurTime = dt.ToString("yyyy-MM-dd HH:mm:ss"); dt = dt.AddDays(-dbS

26、tartSynch);string strTimeAfter3Days = dt.ToString("yyyy-MM-dd HH:mm:ss");/stringconnecionString="Provider=OraOLEDB.Oracle.1;Password=nmosoptr;Persist Security Info=True;User ID=nmosdb;DataSource=shnmos"/stringconnecionStringInfo=True;User=ID=informix;Data"Provider=Ifxoledbc;

27、Password=dba#pwd0;Persist Source=nmosdbids921"Securityint dbType = Config.AppSettings.GetIntValue("NMOSDB.DBType", 0);Debug.WriteDebugInfo(int)Debug.InfoType.Information, "SynchAlarm", "获得数据库类型NMOSDB.DBType:0", dbType);string strCon = Config.AppSettings.GetStringVa

28、lue("NMOSDB.Con", "");Debug.WriteDebugInfo(int)Debug.InfoType.Information, "SynchAlarm", "获得数据库联接字符串NMOSDB.Con:0", strCon);string connectionString = strCon;Debug.WriteDebugInfo(int)Debug.InfoType.Information, "SynchAlarm", " 建立 connection 字符串:0&

29、quot;, connectionString);亿阳退服专题软件V2.0 源代码61-8/ ack_flag = 0 为新的活动告警,ack_flag = 1 为确认的告警string strTmp = "select * from tfa_alarm where active_status = 1 and event_time between '0' and '1' and redefine_severity = 6 and ack_flag = 1"string queryString = string.Format(strTmp, s

30、trTimeAfter3Days, strCurTime);/Debug.WriteDebugInfo(int)Debug.InfoType.Information,同步告警数据SQL:0n", queryString);"SynchAlarm", "using (OleDbConnection connection = new OleDbConnection(connectionString)connection.Open();/Debug.WriteDebugInfo(int)Debug.InfoType.Information, "Syn

31、chAlarm", "connection.Open()建立连接!");OleDbCommand command = connection.CreateCommand(); command.CommandText = queryString;OleDbDataAdapter da = new OleDbDataAdapter(command); DataTable datatable = new DataTable();da.Fill(datatable);/Debug.WriteDebugInfo(int)Debug.InfoType.Information,

32、"SynchAlarm", "da.Fill(datatable)入数据表DataTable!");foreach (DataRow dr in datatable.Rows)添Debug.WriteDebugInfo(int)Debug.InfoType.Information, "SynchAlarm", DataTable 中的DataRow 填充AlarmItem 结构!");AlarmItem item = new AlarmItem();item.FP0 = BOCO.APP.Common.Util.Conv.T

33、oUint(dr"fp0"); item.FP1 = BOCO.APP.Common.Util.Conv.ToUint(dr"fp1"); item.FP2 = BOCO.APP.Common.Util.Conv.ToUint(dr"fp2"); item.FP3 = BOCO.APP.Common.Util.Conv.ToUint(dr"fp3"); item.CFP0 = BOCO.APP.Common.Util.Conv.ToUint(dr"c_fp0"); item.CFP1 = BOC

34、O.APP.Common.Util.Conv.ToUint(dr"c_fp1"); item.CFP2 = BOCO.APP.Common.Util.Conv.ToUint(dr"c_fp2"); item.CFP3 = BOCO.APP.Common.Util.Conv.ToUint(dr"c_fp3");"item.RedSeverity BOCO.APP.Common.Util.Conv.ToInt(dr"redefine_severity");item.ActiveStatus BOCO.APP.

35、Common.Util.Conv.ToInt(dr"active_status");item.AckFlag = BOCO.APP.Common.Util.Conv.ToInt(dr"ack_flag"); item.AlarmTitleBOCO.APP.Common.Util.Conv.ToInt(dr"alarm_title");item.ObjectClass BOCO.APP.Common.Util.Conv.ToInt(dr"object_class");item.ProbableCauseBOCO.AP

36、P.Common.Util.Conv.ToInt(dr"probable_cause");=/item.getAckFlag = BOCO.APP.Common.Util.Conv.ToInt(dr"ack_flag");item.Confirmed = true;亿阳退服专题软件V2.0 源代码61-9Debug.WriteDebugInfo(int)Debug.InfoType.Information, "SynchAlarm", "同步到的告警数据:fp0 = 0, c_fp0 = 1, redefine_severi

37、ty = 2", item.FP0, item.CFP0, item.RedSeverity);/this.hander.AddNewAlarm(item);if (item.IsNewAlarm)if (hander.IsExists(item) / 该告警已经存在Debug.WriteDebugInfo(int)Debug.InfoType.Information, "repAlarm", "FP 相同:" + item.FPKey);return;elseif (item.ObjectClass = 101 && item

38、.ProbableCause = 102 | item.ObjectClass = 102 && item.ProbableCause = 102 | item.ObjectClass = 101 && item.ProbableCause = 122 | item.ObjectClass = 102 && item.ProbableCause = 122 | item.ObjectClass = 101 && item.ProbableCause = 2064|item.ObjectClass = 102 &&

39、item.ProbableCause = 2064)/hander.AddSynchAlarm(item); aryAlarmItem.Add(item);else if (item.IsClearAlarm)ClearAlarmByCFP(item.CFP0, item.CFP1, item.CFP2, item.CFP3);Thread.Sleep(1000);catch (Exception e)Debug.WriteDebugInfo(int)Debug.InfoType.Error, "SynchDataFromDB Error:n0", e.ToString()

40、;"MsgHanderError",/tread stopvoid SAHandlerStop()serviceHandleStatus = ServiceHandleStatus.Stopping;亿阳退服专题软件V2.0 源代码61-10if (hander != null)hander.Dispose();/this.hander.Stop();if (mqMsgProxy != null)mqMsgProxy.Stop(); mqMsgProxy.Dispose();if (alarmFilter != null)alarmFilter.Dispose();myDb

41、Conn.Close();protected override void OnStart(string args)/ TODO: Add code here to start your service./Thread.Sleep(1000); SAHandlerStart();protected override void OnStop()/ TODO: Add code here to perform any tear-down necessary to stop your service.SAHandlerStop();public int SendMsgToClient(string s

42、trMsg)try/clientSocket1 = serverSocket1.Accept();byte byteData = Encoding.ASCII.GetBytes(strMsg.ToCharArray();m = clientSocket1.Send(byteData, 0, byteData.Length, SocketFlags.None); return 1;/Thread.Sleep(100);catch (Exception ex)clientSocket1.Close(); return 0;return m;public int SendMsgToClient14(

43、string strMsg)亿阳退服专题软件V2.0 源代码61-11byte byteData = Encoding.ASCII.GetBytes(strMsg.ToCharArray();m = clientSocket2.Send(byteData, 0, byteData.Length, SocketFlags.None); return m;public bool Resamp()SendMsgToClient("Q;"); return true;public void ConfirmAlarm(uint fp0, uint fp1, uint fp2, uin

44、t fp3)lock (hander.aryAlarms)for (int i = 0; i < hander.aryAlarms.Count; i+)AlarmItem alarm = (AlarmItem)hander.aryAlarmsi; if (alarm.IsFPMatch(fp0, fp1, fp2, fp3)if (!alarm.Confirmed)alarm.Confirmed = true;string strFP = alarm.FP0.ToString() + ":" strFP += alarm.FP1.ToString() + "

45、:" strFP += alarm.FP2.ToString() + ":" strFP += alarm.FP3.ToString();Debug.WriteDebugInfoNoSpe(int)Debug.InfoType.Information,"AlampCmd", DateTime.Now.ToString() + "-确认告警FP:0rn", strFP);if (alarm.IsCriticalAlarm)SendMsgToClient("L;");elseSendMsgToClient(&

46、quot;O;");break;public void ClearAlarmByCFP(uint cfp0, uint cfp1, uint cfp2, uint cfp3)lock (hander.aryAlarms)亿阳退服专题软件V2.0 源代码61-12int nCount = hander.aryAlarms.Count; for (int i = nCount - 1; i >= 0; i-)AlarmItem alarm = (AlarmItem)hander.aryAlarmsi; if (alarm.IsCFPMatch(cfp0, cfp1, cfp2, c

47、fp3)hander.aryAlarms.RemoveAt(i);string strFP = alarm.FP0.ToString() + ":" strFP += alarm.FP1.ToString() + ":" strFP += alarm.FP2.ToString() + ":" strFP += alarm.FP3.ToString();Debug.WriteDebugInfoNoSpe(int)Debug.InfoType.Information,"AlampCmd", DateTime.Now.T

48、oString() + "-清除告警FP:0rn", strFP);if (alarm.IsCriticalAlarm)if (!alarm.Confirmed)SendMsgToClient("L;C;");elseSendMsgToClient("C;");elseif (!alarm.Confirmed)SendMsgToClient("O;D;");elseSendMsgToClient("D;");public void ClearAlarmByFP(uint fp0, uint fp

49、1, uint fp2, uint fp3)lock (hander.aryAlarms)int nCount = hander.aryAlarms.Count; for (int i = nCount - 1; i >= 0; i-)亿阳退服专题软件V2.0 源代码61-13AlarmItem alarm = (AlarmItem)hander.aryAlarmsi; if (alarm.IsFPMatch(fp0, fp1, fp2, fp3)hander.aryAlarms.RemoveAt(i); if (alarm.IsCriticalAlarm)if (!alarm.Conf

50、irmed)SendMsgToClient("L;C;");elseSendMsgToClient("C;");elseif (!alarm.Confirmed)SendMsgToClient("O;D;");elseSendMsgToClient("D;");break;private AlarmItem ToNewAlarmItem(System.Xml.XmlDocument alarmMsgXmlDoc)System.Xml.XmlNodealarmNode=alarmMsgXmlDoc.SelectSin

51、gleNode("/xml/message/OneRecord"); AlarmItem item = new AlarmItem();item.FP0 = BOCO.APP.Common.Util.Conv.ToUint(alarmNode.Attributes"fp0".Value); item.FP1 = BOCO.APP.Common.Util.Conv.ToUint(alarmNode.Attributes"fp1".Value); item.FP2 = BOCO.APP.Common.Util.Conv.ToUint(al

52、armNode.Attributes"fp2".Value); item.FP3 = BOCO.APP.Common.Util.Conv.ToUint(alarmNode.Attributes"fp3".Value); item.CFP0BOCO.APP.Common.Util.Conv.ToUint(alarmNode.Attributes"c_fp0".Value); item.CFP1BOCO.APP.Common.Util.Conv.ToUint(alarmNode.Attributes"c_fp1".Va

53、lue); item.CFP2BOCO.APP.Common.Util.Conv.ToUint(alarmNode.Attributes"c_fp2".Value); item.CFP3BOCO.APP.Common.Util.Conv.ToUint(alarmNode.Attributes"c_fp3".Value); item.ObjectClass=亿阳退服专题软件V2.0 源代码61-14BOCO.APP.Common.Util.Conv.ToInt(alarmNode.Attributes"object_class".Val

54、ue); item.ActiveStatusBOCO.APP.Common.Util.Conv.ToInt(alarmNode.Attributes"active_status".Value); item.RedSeverityBOCO.APP.Common.Util.Conv.ToInt(alarmNode.Attributes"redefine_severity".Value); item.Ne_idBOCO.APP.Common.Util.Conv.ToInt(alarmNode.Attributes"int_id".Value

55、); item.OrgTypeBOCO.APP.Common.Util.Conv.ToInt(alarmNode.Attributes"org_type".Value); item.TimeStampBOCO.APP.Common.Util.Conv.ToStr(alarmNode.Attributes"event_time".Value); item.SubAlarmTypeBOCO.APP.Common.Util.Conv.ToInt(alarmNode.Attributes"sub_alarm_type".Value); ite

56、m.AckFlagBOCO.APP.Common.Util.Conv.ToInt(alarmNode.Attributes"ack_flag".Value);=tryalarmNode = alarmMsgXmlDoc.SelectSingleNode("/xml/message"); item.Serial = int.Parse(alarmNode.Attributes"msg_serial".Value);catchitem.Serial = 1;return item;protected void OnMQClosed(str

57、ing strMsg)serviceHandleStatus = ServiceHandleStatus.Stopping;/if (serviceHandleStatus != ServiceHandleStatus.Stopping &&/!timerMQReconnect.Enabled)timerMQReconnect.Interval = 10 * 1000;/ 10s timerMQReconnect.Enabled = true; Debug.WriteDebugInfo(int)Debug.InfoType.Error, "ServiceError","MQ Closed, will reconnect after 10s.");private void timerMQReconnect_Tick(object sender, EventArgs e)bool bOk = InitMQ(true); Debug.WriteDebugInfo(int)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论