你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 网络与通信
异种基站告警系统的融合(四)
 

2)基站信息维护

基站信息维护模块的主要功能是查询、新增、删除、修改基站的各类信息,包括BSC、模块、基站号、基站中文名、英文名、基站统一编号、备注等。

核心代码如下:

public frmStation(StationAlarm.frmContainer parent)

{

// Windows 窗体设计器支持所必需的

InitializeComponent();

// TODO: InitializeComponent 调用后添加任何构造函数代码

this.MdiParent = parent;

frmContainer mainWindow = (frmContainer)this.MdiParent;

SiteQuery();//查询基站信息

}

private void SiteQuery()

{

//基站信息查询

string sql, queryCondition;

string connString = @"Data Source=StationAlarm.mdb;Provider=Microsoft.Jet.OLEDB.4.0;";

//合成查询条件

queryCondition = "";

if( bsc.Text!="所有BSC" )

queryCondition = " and BSC=" + bsc.Text;

if( siteId.Text.Trim()!="" )

queryCondition += " and SiteID=" + siteId.Text;

if( ci.Text.Trim()!="" )

queryCondition += " and CI=" + ci.Text;

if( siteName.Text.Trim()!="" )

queryCondition += " and SiteName like '%" + siteName.Text + "%'";

if( siteEnName.Text.Trim()!="" )

queryCondition += " and SiteEnName like '%" + siteEnName.Text + "%'";

OleDbConnection conn = new OleDbConnection( connString );

try

{

conn.Open();

//取基站信息表记录

sql = "SELECT BSC, ModuleID as 模块, SiteID as 基站号, SiteName as 基站中文名称, SiteEnName as 基站英文名称, CI as 基站统一编号, SiteMemo as 备注 FROM SiteInfo ";

sql += " WHERE 1=1 " + queryCondition;

da2 = new OleDbDataAdapter(sql,conn);

cmdBuilder = new OleDbCommandBuilder(da2);

siteInfo.Clear();

da2.Fill( siteInfo, "SiteInfo" );

DataColumn[] keys = new DataColumn[3];

keys[0] = siteInfo.Tables[0].Columns["BSC"];

keys[1] = siteInfo.Tables[0].Columns["模块"];

keys[2] = siteInfo.Tables[0].Columns["基站号"];

siteInfo.Tables[0].PrimaryKey = keys;

 

conn.Close();

dgStation.SetDataBinding(siteInfo.Tables[0].DefaultView,""); //填充datagrid

}

catch

{

if( conn!=null && conn.State==ConnectionState.Open )

conn.Close();

}

}

 

private void queryButton_Click(object sender, System.EventArgs e)

{

SiteQuery();//查询基站信息

}

 

3)告警信息维护

告警信息维护的主要功能是新增、删除、修改告警编号、告警名称、告警类型、告警级别、备注等。具体代码与基站信息维护类似。

4)误告警维护

基站误告警维护模块的主要功能是新增、删除、修改产生误告警的基站信息,包括BSC、模块、基站号、告警编号、间隔分钟等。

具体代码与基站信息维护类似。

 

2)监听分析

监听分析模块是后台数据处理模块,主要功能是监听网络通信包,按规则提取包数据内容,分离出告警信息的各类属性值,并将这些信息保存到数据库,然后根据需要播放声音告警,包括网络监听模块、数据分析模块、声音告警模块等。

1)网络监听

要对网络通信进行监听,首先要让网卡工作在混杂模式下,这样网卡才能接收到网络上所有的通信包。

核心代码如下:

private void SetSocketOption()

{

SniffSocketException ex;

try

{

socket.SetSocketOption (SocketOptionLevel.IP ,SocketOptionName.HeaderIncluded ,1);

byte[] IN=new byte [4]{1,0,0,0};

byte[] OUT=new byte[4];

int SIO_RCVALL=unchecked((int)0x98000001);

int ret_code=socket.IOControl (SIO_RCVALL,IN,OUT);

ret_code=OUT[0]+OUT[1]+OUT[2]+OUT[3];

if(ret_code!=0)

{

    ex=new SniffSocketException ("command execute error");

    throw ex;

}

}

catch(SocketException e)

{

ex=new SniffSocketException ("socket error",e);

throw ex;

}

}

当系统捕获到通信包时,触发相应的事件,事件处理模块将包数据复制到包数据缓冲区中。

核心代码如下:

private void motoDataArrival(Object sender, SniffSocket.PacketArrivedEventArgs  e)

{

//处理MOTOROLA告警系统通信包到达事件

if( e.DestinationAddress==clientIP1 && e.OriginationAddress==serverIP1 && e.OriginationPort==port1 && e.PacketLength>165 )

{

try

{

//告警服务器IP地址、告警终端地址、端口和通信包长度属于MOTOROLA告警系统

    Message m = new Message();

    m.BSCType = "Moto";

    m.BSC = "0";

    m.length = e.PacketLength;

    e.MessageBuffer.CopyTo(m.buffer, 0);

    MessagePacket.Add(m);

    statusBar.Panels[0].Text = "Motorola: " + e.PacketLength.ToString() + "    时间:" + System.DateTime.Now.ToString();//在状态栏显示通信包长度和接收时间

}

catch (Exception ex)

{

    SaveError("motoDataArrival", ex);//保存错误信息

}

}

}

 

private void hua1DataArrival(Object sender, SniffSocket.PacketArrivedEventArgs  e)

{

//处理华为告警系统1通信包到达事件

if (e.DestinationAddress == clientIP2 && e.OriginationAddress == serverIP2 && e.OriginationPort == port2 && e.PacketLength >= 165 && e.PacketLength < 1499)

{

try

{

//告警服务器IP地址、告警终端地址、端口和通信包长度属于华为告警系统1

    Message m = new Message();

    m.BSCType = "HuaWei";

    m.BSC = "4";

    m.length = e.PacketLength;

    e.MessageBuffer.CopyTo(m.buffer, 0);

    MessagePacket.Add(m);

    statusBar.Panels[1].Text = "华为1: " + e.PacketLength.ToString() + "    时间:" + System.DateTime.Now.ToString();//在状态栏显示通信包长度和接收时间

}

catch (Exception ex)

{

    SaveError("hua1DataArrival", ex); //保存错误信息

}

}

}
  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089