客户端详细设计.docx
- 文档编号:11384957
- 上传时间:2023-02-28
- 格式:DOCX
- 页数:32
- 大小:27.78KB
客户端详细设计.docx
《客户端详细设计.docx》由会员分享,可在线阅读,更多相关《客户端详细设计.docx(32页珍藏版)》请在冰豆网上搜索。
客户端详细设计
技术文件名称:
中国移动直放站网管软件客户端详细设计
技术文件编号:
版本:
V1.0
共页
(包括封面)
拟制徐江
审核
会签
标准化
批准
修改记录
文件编号
版本号
拟制人/修改人
拟制/修改日期
更改理由
主要更改理由
注1:
每次更改归档文件(指归档到事业部或公司档案室的文件)时,需填写此表。
注2:
文件第一次归档时,“更改理由”、“主要更改内容”栏写“无”。
目录
1范围和目的4
2相关文件4
3缩写说明4
4测试环境4
4.1测试环境概述4
4.2硬件测试环境4
4.3软件测试环境4
5硬件说明5
6软件说明5
6.1电子地图模块5
6.1.1具体设计5
6.1.2站点图层的创建5
6.1.3站点添加7
6.1.4节点选择7
6.2拓扑树图8
6.2.1具体设计8
6.2.2结构定义9
6.2.3类设计10
6.3数据跟踪窗口10
6.3.1具体设计10
6.3.2类设计11
6.4配置功能11
6.4.1具体设计14
6.4.2结构设计:
14
6.4.3类设计17
6.5告警管理17
6.5.1结构定义:
18
6.5.2类设计19
6.6站点添加20
6.6.1类设计20
1范围和目的
本文描述的是中国移动植放站网管系统OMCSERVER各功能模块的设计思路及具体实现方法。
2相关文件
[1]《中国移动直放站监控系统功能规范1.0.0》
[2]《中国移动直放站监控系统数据需求规范1.0.0》
[3]《中国移动直放站监控中心功能验收规范1.0.0》
[4]《中国移动直放站设备网管接口技术规范1.0.0》
3缩写说明
4测试环境
4.1测试环境概述
测试服务端程序即是测试主网管中心。
该测试环节可暂时脱离客户端程序,测试时需要运行本地SQL数据库服务,Modem与服务器设备通过串行通信线连接,同时受控设备切换至远程通信状态并保证其通信正常。
Sim卡开通DataCall业务。
测试需Sim卡1~10张。
测试告警转发至CFMS时,需要CFMS服务器与服务端设备通过局域网连接,且服务端要运行snmp服务(系统服务)。
4.2硬件测试环境
对于该系统的测试工作主要是对网管系统进行测试,不包括受控设备端的测试,即所有的测试项目均设定受控设备端的交互响应及通信协议格式均与设计文档中定义的一致。
系统运行所需的Modem为其他厂家的正规产品,故设定Modem为符合系统要求设置。
4.3软件测试环境
功能概述
客户端软件主要是为用户提供一个友好的操作界面,方便用户对直放站进行配置管理、数据统计以及对告警项的查询统计。
其功能主要分网络设置、配置管理功能、操作维护管理功能、告警管理功能、安全管理功能。
5硬件说明
系统运行所需的Modem为其他厂家的正规产品,在本文档不对该设备进行过多的描述。
6软件说明
本次内容主要根据中国移动针对直放站监控提出的功能需求,对网管软件进行了相应的设计,以满足中移动对网管软件的需求。
通过拓扑树图和电子地图可以对设备进行有效的管理,其他功能模块设置都提供了相对应的窗口界面,用户所有的操作请求都通过消息方式发送给网络传输模块。
系统定义了一个Carray
系统可通过该列表内的信息,从数据库中获得所有与站点相关的信息。
6.1电子地图模块
本次电子地图采用的是MapObject(以下简称mo)开发工具。
因为网管系统所用的地理信息系统的主要功能是定位直放站设备,以及做一些简单的数据统计,并不需要其他的专业功能,而MapObject具有低成本、易开发、不需要其他GIS平台等优点,其本身具有的功能足以满足开发项目的需求。
6.1.1具体设计
Mapobject采用的是插件格式,在安装好MapObject2.2开发平台后,在工程项目中加载mo控件即可。
图层加载通过函数AddLayer实现,样例如下:
AddLayer(m_map,TEXT("shp\\shanghai\\Road_Ploy.SHP"),moWhite);
m_map:
是mo控件对象
shp\\shanghai\\Road_Ploy.shp:
是图层的物理地址
moWhite:
是加载图层后显示的颜色。
需要加载多个图层的时候,需要根据图层的属性依次加载。
要求点属性图层在最上层,线属性图层在中间,面属性图层在最底层。
Mo中规定最先加载的图层是最底层,依次类推,最后加载的图层为最上层。
我们需要添加的站点图层属于点图层,因此需要在最后加载。
6.1.2站点图层的创建
原地理信息数据库中没有关于站点的地理信息。
因此需要新创建一个图层用于存放站点信息。
图层创建实现代码如下:
voidCMopView:
:
AddNodeShp()
{
CMoDataConnectionpMoCon;
CMoTableDescdesc;
if(!
pMoCon.CreateDispatch(TEXT("MapObjects2.DataConnection")))
{
TRACE0("pMoConERROR\r\n");
return;//FALSE;
}
if(!
desc.CreateDispatch("MapObjects2.TableDesc"))
{
TRACE0("descERROR\r\n");
return;//FALSE;
}
VARIANTvt;
vt.vt=VT_BOOL;
vt.boolVal=VARIANT_FALSE;
pMoCon.SetDatabase((LPCTSTR)"shp\\shanghai");//设置图层保存目录
if(!
pMoCon.Connect())
{
TRACE0("pMoConERROR");
return;//FALSE;
}
//设置图层的字段个数及属性,这里设置两个,一个为Number,一个为Name。
表示点的号码及名称。
desc.SetFieldCount
(2);
desc.SetFieldType(0,moString);
desc.SetFieldName(0,"Number");
desc.SetFieldLength(0,10);
desc.SetFieldType(1,moString);
desc.SetFieldName(1,"Name");
desc.SetFieldLength(1,10);
//创建新图层,设置名称、类型及字段。
CMoGeoDatasetgeoDataset(pMoCon.AddGeoDataset("节点层",\
moShapeTypePoint,(LPDISPATCH)desc,vt,vt));
if(!
m_Nodelayer.CreateDispatch(TEXT("MapObjects2.MapLayer")))
return;//FALSE;
//设置图层的记录集
m_Nodelayer.SetGeoDataset(geoDataset);
CMoRecordsetrecs(m_Nodelayer.GetRecords());
CMoFieldsfields(recs.GetFields());
//设置点的颜色,并加入地图。
m_Nodelayer.GetSymbol().SetColor(moBlue);
CMoLayerslayers(m_map.GetLayers());
layers.Add(m_Nodelayer);
return;
}
6.1.3站点添加
系统在新添加一个站点后,需要根据经纬度在电子地图上标志其位置,并用图标显示出来。
实现代码基本如下:
voidCMopView:
:
OnMouseDownMap1(shortbutton,shortshift,longx,longy)
{
if(button==2)//不响应右键鼠标消息
return;
switch(m_nToolID)
{
caseID_MAP_NODE_ADD:
//增加节点
{
CMoRecordsetrecs(m_Nodelayer.GetRecords());
CMoFieldsfields(recs.GetFields());
recs.AddNew();//添加新记录
CMoPointpt(m_map.ToMapPoint((float)x,(float)y));
SetValue(fields,"Shape",pt);
SetValue(fields,"Number",node_id);//站点id
SetValue(fields,"Name",node_name);//站点名称
recs.Update();//记录集更新
VARIANTvt;
m_map.RefreshLayer(m_Nodelayer.GetIndexed(),vt);//更新图层
break;
}
…..//其他操作
}
}
6.1.4节点选择
电子地图可以通过鼠标点击图层对设备进行检索查找。
实现代码基本如下:
BOOLCMopView:
:
PtInNodeRect(CPointpt)
{
boolbRst=FALSE;
CMoPointmoPt(m_map.ToMapPoint((float)pt.x,(float)pt.y));//转换坐标系
CMoRecordsetrecs;
recs=m_Nodelayer.SearchByDistance(moPt,m_map.ToMapDistance(5),"");//查找图层记录集
CMoFieldsfields(recs.GetFields());
CMoFieldshapeField(fields.Item(COleVariant(TEXT("Shape"))));
CMoFieldNumberField(fields.Item(COleVariant(TEXT("Number"))));
inta=recs.GetCount();
if(a!
=0)//a==0表明鼠标未选中站点
{
m_nSelectID=atol(NumberField.GetValueAsString());//记下选中站点id
bRst=TRUE;
}
else
m_nSelectID=0;
returnbRst;
}
具体可实现功能:
●可移动站点图标,进行重新定位;
●右键菜单可执行添加站点的功能;
●右键菜单可执行查看站点信息的功能;
●右键菜单可修改站点属性;
●右键菜单可删除站点;
●右键菜单可连接设备(用于数传)
●右键菜单可断开设备(用于数传)
6.2拓扑树图
根据站点的其他属性如(所属地区、厂家或设备类型)可对站点进行分类管理。
系统根据直放站的所属地区属性对直放站进行分域排列,叶节点与电子地图中的节点标志一一对应。
6.2.1具体设计
树图节点分两种类型:
其一是域节点,其二是站点节点。
除根目录外,域节点分四级,规定只有第四级域节点才能添加站点节点。
系统根据数据库t_field中的Field_Level来确定域的级数。
Field_Level共8个字节,从低到高,每2个字节代表一级。
如Field_Level的值为010203则该域处于第三级域,其父节点是Field_level为0102的域。
依次类推,父节点是挂在Field_level为01的域之下。
域的插入采用递归法:
boolCClassTreeWnd:
:
InsertField(HTREEITEMhRoot,DWORDnlevel)
{
intnCount=m_pMapView->m_pFieldArray.GetSize();
inti=0;
for(i=0;i { XMFIELD*pField=m_pMapView->m_pFieldArray.GetAt(i); HTREEITEMhChild; if(nlevel==0) { if(strlen(pField->cLevel)! =2) continue; hChild=InsertItem(pField->cName,0,1,hRoot); SetItemData(hChild,atoi(pField->cLevel)); } else { DWORDnLvl=(atoi(pField->cLevel))/100; if(nLvl! =nlevel) continue; hChild=InsertItem(pField->cName,0,1,hRoot); SetItemData(hChild,atoi(pField->cLevel)); } InsertField(hChild,atoi(pField->cLevel)); } returnTRUE; } 6.2.2结构定义 其拓扑结构关系由两张表组成。 一张是节点区域表,一张是节点表。 初步定义结构如下: typdefstructtagXMField{ unsignedintnID;//域id,具有唯一性 charcLevel[8];//域的级别, charcName[64];//域的名称 }XMField,*pXMField; 参数说明 cFieldLevel: 域的级别。 系统树图采用了4级分域。 参数反映了该域在树图中所处的位置。 例: 01表示为一级子域,0101表示为二级子域,其上级域为域级为01的域。 typedefstructtagXMNode{ unsignedintnNodeID;//节点id,具有唯一性 unsignedintnFieldID;//节点所属域id BYTEnProtocolType;//节点信息的协议类型 CharcNodeName[64];//节点名称 CharcLongitude[20];//节点所处地理位置的经度 CharcLatitude[20];//节点所处地理位置的纬度 CharcSimNum[20];//节点对应的电话号码 CharcCommunicationType;//节点通信类型 }XMNode,*pXMNode; 参数说明: nProtocolType: 节点信息的协议类型。 在数据库中,每个协议类型都分别定义一张数据表。 系统根据协议类型从不同的数据表中读取节点信息。 如nProtocolType=1,则说明该节点对应的协议为中移动协议,其数据表为t_node_info。 cCommunicationType: 节点通信类型。 系统根据节点通信类型配备不同的右键菜单。 6.2.3类设计 关键成员变量 变量名称 功能 COMCCLIENTView*m_pMapView 主框架试图类指针 关键成员函数 函数名称 功能 voidSelectNodeItem() 选择设定的节点 HTREEITEMFindTreeItem() 根据field_level找到相应的域节点 voidAddAllField() 添加所有域节点 voidAddAllNode() 添加所有站点节点 voidAddNode() 添加新站点 voidAddField() 添加新域 intGetItemLevel() 指定节点的级别(0~5) InsertField() 递归法添加域节点 6.3数据跟踪窗口 该窗口用于显示用户所有的即时操作以及客户端与服务端的数据交互信息。 为了不影响其他窗口的正常操作,所有的显示信息都通过PostMessage的消息方式发送到该窗口。 6.3.1具体设计 窗口通过CBCGPDockingControlBar类实现,列表框继承ClistBox类。 该方法可以方便的实现隐藏和显示窗口,并能快速有效的显示信息。 生成窗口框架 在系统主框架的OnCreate函数中添加代码,生成窗口。 if(! m_wndOutputView.Create(_T("信息跟踪"),this,CRect(0,0,100,100), TRUE, ID_VIEW_OUTPUT, WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|CBRS_BOTTOM|CBRS_FLOAT_MULTI)) { TRACE0("Failedtocreateoutputbar\n"); returnFALSE;//failtocreate } 信息显示 #defineWM_DATALISTVIEWWM_USER+101//定义系统消息 ON_MESSAGE(WM_DATALISTVIEW,OnDataListView)//映射消息函数 OnDataListView(WPARAMwParam,LPARAMlParam)// { Char*cData=(char*)wParam; M_list.AddString();//加载内容 } 6.3.2类设计 关键成员变量 成员变量 功能 m_Font 字体格式 m_wndOutput 列表对象 关键成员函数 成员函数 功能 FillDebugWindow() 添加新记录 OnSize() 校正列表框的大小 6.4配置功能 系统把直放站数据分成4个部分: 状态数据、网管数据、实时采样数据以及设置数据。 具体定义参考文档《中国移动直放站监控系统数据需求规范》。 状态数据列表 序号 名称 数据类型 属性 备注 F001 电源掉电告警 布尔型 R,A F002 电源故障告警 布尔型 R,A F003 太阳能电池低电压告警 布尔型 R,A F004 监控模块电池故障告警 布尔型 R,A F005 位置告警 布尔型 R,A F006 门禁告警 布尔型 R,A 可选 F007 自激告警 布尔型 R,A F008 功放过温告警 布尔型 R,A F009 信源变化告警 布尔型 R,A F010 其它模块告警 布尔型 R,A F011 本振失锁告警 布尔型 R,A F012 上行低噪放故障告警 布尔型 R,A F013 下行低噪放故障告警 布尔型 R,A F014 上行功放告警 布尔型 R,A F015 下行功放告警 布尔型 R,A F016 下行输入过/欠功率告警 布尔型 R,A F017 下行输出欠功率告警 布尔型 R,A F018 上行输出过功率告警 布尔型 R,A 可选 F019 下行驻波比告警 布尔型 R,A F020 光收发告警 布尔型 R,A F021 主从监控链路告警 布尔型 R,A F022 外部告警 布尔型 R,A F023 塔顶放大器告警 布尔型 R,A F024 功放旁路告警 布尔型 R,A F025 巡检上报 整数 (1) N F026 故障修复上报 整数 (1) N F027 开站上报 整数 (1) N F028 配置变更 整数 (1) N 网管参数 序号 名称 数据类型 (字节数) 属性 备注 R001 设备信息: 设备厂商代码 整数 (2) R R002 设备信息: 设备类别 整数 (1) R R003 设备信息: 设备型号 字符串(20) R R004 设备信息: 监控版本信息 字符串(20) R R005 设备信息: 设备生产序列号 字符串(20) R R006 设备经纬度 浮点数 R R007 站点编号 整数(4) R,W R008 设备编号 整数 (1) R,W R009 短信服务中心号码 字符串(20) R,W 可选 R010 查询/设置号码 字符串(20) R,W R011 上报号码 字符串(20) R,W R012 监控中心IP地址及端口号 整数(6) R,W R013 上报通信方式 整数 (1) R,W R014 日期、时间 时间 R,W 可选 R015 设备的监控参量列表 整数(128) R R016 天线高度 浮点数 (2) M R017 站点等级 整数 (1) M R018 站点描述 字符串(20) M R019 直放站代码 字符串(20) M 实时采样数据 序号 名称 数据类型 (字节数) 属性 备注 I001 功放温度值 有符号整数 (1) R I002 设备的实际载波总数 整数 (1) R I003 下行输入功率电平值 有符号整数 (1) R I004 上行输出功率电平值 有符号整数 (1) R 可选 I005 下行输出功率电平值 有符号整数 (1) R I006 上/下行增益 整数 (1) R I007 下行驻波比值 浮点数 R I008 光收/发功率 有符号整数 (1) R 可选 I009 上/下行信号旁路状态 布尔型 R I010 信源信息: 运营商代码 整数 (1) R I011 信源信息: 位置区编码 整数 (2) R I012 信源信息: 基站识别码 整数 (1) R I013 信源信息: BCCH绝对载频号 整数 (2) R I014 信源信息: BCCH接收电平 有符号整数 (1) R I015 信源信息: 小区识别码实时值 整数 (2) R 设置数据 序号 名称 数据类型 (字节数) 属性 备注 W001 射频信号开关状态 布尔型 R,W W002 信源小区识别码参照值 整数 (2) R,W W003 射频切换开关状态 布尔型 R,W W00
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 客户端 详细 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)