《实验室管理系统详细设计说明书.docx》由会员分享,可在线阅读,更多相关《实验室管理系统详细设计说明书.docx(55页珍藏版)》请在课桌文档上搜索。
1、LabManager实验室管理系统详细设计说明书版本修改日期修改人修改内容V1.02010-11-15郑新华创建文档。一、引言31.1 编写目的31.2 背景313定义31.4 参考资料3二、各模块详细设计32.1、 照相站姿态识别模块(CameraStation.exe)32.1.1、 程序描述32.1.2、 程序功能42.1.3、 性能52.1.4、 逻辑结构52.2、 弹道复现模块(DemonStrate.exe)242.2.1、 程序描述242.2.2、 功能242.2.3、 逻辑结构252.3、 设备接入代理模块(DeVProXy.exe)282.3.1、 程序描述282.3.2、
2、功能28233、逻辑结构292.4、 控制台主控程序(ConsoLexe)302.4.1、 程序描述302.4.2、 功能302.4.3、 逻辑结构312.5、 数据采集和分析服务器422.5.1、 程序描述422.5.2、 功能422.5.3、 逻辑结构432.5.4、 管理信息配置文件错误!未定义书签。一、引言1.1 编写目的本文档旨在说明LabManager实验室管理系统中各模块的执行流程、数据结构及其之间的关系,作为今后编码工作的依据。本文供主要技术人员、公司内部人员阅读、讨论使用。背景1.abManager实验室管理系统vl.0于2010年8月份开始筹备开发,由研发中心软件部承担开发
3、任务。1.2 定义实验室:南京理工大学弹道重点实验室。1.3 参考资料RabManager实验室管理系统概要设计VLoO.doc二、各模块详细设计2.1、 照相站姿态识别模块(CameraStation.exe)2.1.1. 程序描述本模块运行在照相站工控机上,随系统启动,为常驻内存程序。由于需要对控制卡进行读写以及监控相机照片生成目录,若同时启动多个实例则会影响照片分析结果,为不可重入模块。左右相机新生成照片的监控和分析,在程序中采用并发处理。系统的姿态识别操作是分布在各照相站完成的,各照相站姿态识别模块负责在相片生成后对其进行分析并将结果上送至数据采集服务器进行后续分析、展示和存储。IPo
4、图如下:IPO图系统:实验室管理系统模块:照相站姿态识别模块设计人:郑新华 日期:上层调用模块:可调用的下层模块:无无考虑到用户体验的要求,在每次击发完成后1分钟内照相站需要完成对图像处理和图像识别,将最终的飞行姿态发送至数据采集和分析服务器汇总,由后者转发给弹道复现模块进行弹道复现。2.1.4.逻辑结构QfcaltrPMlIirKXrI:CMMirKXrlRecVairCtrl(inOnCbdGn pCtri : (Xi. it *pBuf Void) : msigned IUngPnrslUtd(in pBuCf : void, in )Un : unsiod IoojU : Cced“C
5、e/CtilXIin ”RlIrf : void, in ILm : UfWigntd Ialg) : boolpVaiCtrl:CMainCtr):voidCCfr*GctCtr)QxrdPdXun()CctCw,rrfiun()*GctLcftPktd*thO:CEr*CotRlhtfthO:charN:LwtPabOQblaCtrl*SctStdtc():VOid*SUiAdtUrdO:VOIdtCctStateO:intKIrfhoioHnX:InLIny:nt.lH*Nh:cur):vld结败I-结心*SAtSu*tU:voidCetSwicO:inilxj(ir.Fmi)/OCMF
6、aetcryfJkiz5欢9ipCtrl:CHiinCtrl华_IFKCk:C械k.B11gQn.pCj三Bnsc:OCof*usc*Sxi(intuU*:unsignedlung:wid如纯InCtHl):Ioid*CriAtd(lnnCni:int.InltM:vdd*.InUuHHM:IHlallInOdIMWJ:(XtAapMuiCtr):CMiinCtrl心H)HI“(In*f:void.InIBufl.vr:卜科):unfMMItxig*SetUaiCtr)(inpttaiCtrl:OtiinCtrDIXitHLonO:UtiDiignttdkr11jSend(in*pff:voi
7、d,inILen:UntdSrKldlo:void类名称CMainCtrI描述主控类,业务层接口类类型定义typedefstruct(int;横坐标inty;纵坐标!COORDINATE;typedefstruct(COORDINATEpos;质心坐标COORDINATEAis10;中轴线坐标集std:stringStrPath;照片全路径RAWJNFO;原始信息常量定义无友元类无属性名称是否静态属性类型属性可见性属性描述m_State否CStateprivate状态类m-Cfg否CCfgprivate配置对象m_LeftMonit否CMonitprivate左侧相机监控对象m_RightMo
8、nit否CMonitprivate右侧相机监控对象方法型构voidOnPhoto(constRAWJNF0&info);描述检测到相机照片生成并解析出像素坐标时执行该函数可见性public参数info:从照片分析得到的质心像素坐标、中心轴像素坐标集和照片全路径返回值斤.异常无方法型构voidStandard);描述标定坐标轴可见性public参数无返回值无异常无方法型构boolGetCtrlCardParam(CONTROLER_PARAM¶m);描述获取控制卡参数可见性public参数无返回值获取成功则返回true,否则返回false异常无方法型构boolGetCameraParam
9、(CAMERA_PARAM¶m);描述获取相机参数可见性public参数无返回值获取成功则返回true,否则返回false异常无方法型构conststd:string&GetLeftMonitPathO;描述获取左侧相机照片生成的目录可见性public参数无返回值左侧相机照片生成的目录异常无方法型构conststd:string&GetRightMonitPathO;描述获取右侧相机照片生成的目录可见性public参数无返回值右侧相机照片生成的目录异常无方法型构boolSetCtrlCardParam(constCONTROLER_PARAM¶m);描述设置控制卡参数可见性pu
10、blic参数无返回值设置成功则返回true,否则返回false异常无方法型构boolSetCameraParam(constCAMERA_PARAM¶m);描述设置相机参数可见性public参数返回值设置成功则返回true,否则返回false异常无方法型构boolSetLeftMonitPath(conststd:string&StrPath);描述设置左侧相机照片生成的目录可见性public参数strPath:左侧相机照片生成的目录返回值设置成功则返回true,否则返回false异常无方法型构boolSetRightMonitPath(conststd:string&strPath)
11、;描述设置右侧相机照片生成的目录可见性public参数strPath:右侧相机照片生成的目录返回值设置成功则返回true,否则返回false异常无方法型构voidSetStatefintnState);描述设置当前运行状态可见性public参数nState:要设置的运行状态返回值无异常无方法型构intGetStatef);描述获取当前运行状态可见性public参数无返回值当前运行状态异常无类名称CMonit描述照片监控和分析类类型定义无常量定义无友元类无属性名称是否静态属性类型属性可见性属性描述m_strMonitPath否std:stringprivate监控目录m_pMainCtrl否CM
12、ainCtrI*private主控对象指针方法型构voidRegMainCtrl(CMainCtrl*pMainCtrl);描述注册主控对象,以便在检测到新生成了照片并对其进行分析后将结果发送给主控对象,由后者对结果进行进一步分析。可见性public参数pMainCtrl:主控对象指针返回值无异常无方法型构CMonit(conststd:string&StrMonitPath);描述构造函数可见性public参数StdMonitPath:该对象监控的路径返回值无异常无类名称CCfg描述配置文件读写类S类型定义typedefstructcharmode;工作模式CharfIashNum;闪光次数
13、charStationID;站点编号SYS_PARAM;typedefstructintnGSL;光幕靶间距i11tCBL;光幕靶2至摄像头中心距intnSL;视场范围LEN_PAAM;typedefstructintnSET;成像边缘余量int11CST;摄像头固有延时intnSOT;快门打开间隔intnLGT;激光器固有延时intnMINL;激光触发最小间距intnV_S;估计弹速m/sintnCCT_S;光幕2至摄像头触发延时,不含固延intnCLT_S;光幕2至激光触发延时,不含固延intnCLT_S_2;光幕2至激光触发延时2,不含固延intnCLT_S_3;光幕2至激光触发延时3,
14、不含固延intnPCT;参数计算时间参考TIME_PARAM;typedefstructSYS_PARAMsysParam;系统参数1.EN_PARAMIenParam;长度参数TIME_PARAMtimeParam;时间参数CONTROLER_PARAM;typedefstructcharszPathMA-PATH;照片路径chareFormat;格式,0:BMP;1:二进制intExposureTime;曝光时间CAMERA_PARAM;常量定义无友元类无属性名称是否静态属性类型属性可见性属性描述无方法型构boolGetCtrlCardParam(CONTROLER_PARAM¶m
15、);描述获取控制卡参数可见性public参数Param:返回的控制卡的参数返回值获取成功则返回true,否则返回false异常无方法型构boolGetCameraParam(CAMERA_PARAM¶m);描述获取相机参数可见性public参数Param:返回的相机参数返回值获取成功则返回true,否则返回false异常无方法型构conststd:string&GetLeftMonitPathO;描述获取左侧相机照片生成的目录可见性public参数无返回值左侧相机照片生成的目录异常无方法型构conststd:string&GetRightMonitPathf);描述获取右侧相机照片生成
16、的目录可见性public参数无返回值右侧相机照片生成的目录异常无方法型构boolSetctrICardParamfconstCoNTROLER_PARAM¶m);描述设置控制卡参数可见性public参数param:要设置的控制卡参数返回值设置成功则返回true,否则返回false异常无方法型构boolSetCameraParam(constCAMERA_PARAM¶m);描述设置相机参数可见性public参数param:要设置的相机参数返回值设置成功则返回true,否则返回false异常无方法型构boolSetLeftMonitPathfconststd:string&StrP
17、ath);描述设置左侧相机照片生成的目录可见性public参数strPath:左侧相机照片生成的目录返回值设置成功则返回true,否则返回false异常无方法型构boolSetRightMonitPath(conststd:string&strPath);描述设置右侧相机照片生成的目录可见性public参数strPath:右侧相机照片生成的目录返回值设置成功则返回true,否则返回false异常无类名称CState描述运行状态类类型定义无常量定义无友元类无属性名称是否静态属性类型属性可见性属性描述m_nStateintprivate运行状态方法型构voidSetStatefintnState)
18、;描述设置当前运行状态可见性public参数nState:要设置的运行状态返回值无异常无方法型构intGetState();描述获取当前运行状态可见性public参数斤.返回值当前运行状态异常无类名称CLog描述日志类类型定义无常量定义无友元类无属性名称是否静态属性类型属性可见性属性描述无方法型构voidLog(intnLevel,conststd:string&strLog);描述写日志可见性public参数nLevel:告警级别strLog:日志内容返回值无异常无类名称CCmd描述命令类基类类型定义无常量定义无友元类无属性名称是否静态属性类型属性可见性属性描述m-pMainCtrl否CMa
19、inCtrI*protected主控对象指针m_pData否void*protected数据区mJBuffLe否unsignedlongprotected数据区大小m_nCmd否intprotected命令号方法型构unsignedlongGetDataLenf);描述获取数据区大小可见性public参数无返回值数据区大小异常无方法型构unsignedlongGetData(void*pBuff,longIBuffLen);描述拷贝数据可见性public参数pBuff:存放数据的缓冲区IBuffLen:存放数据的缓冲区的大小返回值拷贝数据的实际大小异常无方法型构voidSetMainCtrIl
20、CMainCtrI*pMainCtrl);描述设置主控对象指针,以便调用其方法可见性public参数pMainCtrl:主控对象指针返回值无异常无方法型构CCmdfintnCmd,void*pDatazunsignedlongIDataLen);描述构造函数可见性public参数nCmd:命令号pData:数据IDataLen:数据大小返回值无异常无方法型构voidExecuted;描述执行命令可见性public参数无返回值无异常无类名称CCmdFactory描述命令类厂类型定义无常量定义无友元类无属性名称是否静态属性类型属性可见性属性描述无方法型构staticCCmd*CreateCmdfi
21、ntnCmd,void*pDatazunsignedlongIDataLen);描述创建命令对象可见性public参数nCmd:命令号pData:数据IDataLen:数据大小返回值创建的命令对象指针异常无类名称CCommLayer描述通信层接口对象类型定义无常量定义无友元类无属性名称是否静态属性类型属性可见性属性描述m_pMainCtrl介CMainCtrI*private主控对象指针m-pPack否CPacketBase*private封解包对象指针m_pCommBase否CCommBase*private通信对象指针方法型构boolSend(CCmd*pCmd);描述发送指令可见性pub
22、lic参数pCmd:命令对象指针返回值发送成功则返回true,否则返回false异常无方法型构voidOnData(void*pDatazunsignedlongIDataLen);描述数据到达时的处理函数可见性public参数pData:收到的数据IDataLen:收到的数据的大小返回值无异常无方法型构voidRegMainCtrHCMainCtrI*pMainCtrl);描述设置主控对象指针可见性public参数pMainCtrl:主控对象指针返回值无异常无类名称CDataNotify描述数据到达通知对象类型定义无常量定义无友元类无属性名称是否静态属性类型属性可见性属性描述无方法型构vir
23、tualintOnData(constvoid*PBUffunsignedlongIBuffLen)=0;描述数据到达通知可见性public参数pBuff:存放已接收到的所有数据的缓冲区指针StrLog:已接收到的数据的大小返回值若数据中包括完整的数据包则返回完整数据包的大小,否则返回0异常无类名称CCommBase描述通信对象基类类型定义无常量定义无友元类无属性名称是否静态属性类型属性可见性属性描述m_pRecver否CDataNotify*protected数据到达通知对象指针方法型构boolSend(void*PBUftunsignedlongILen);描述发送数据可见性public参
24、数pBuff:数据缓冲区指针ILen:数据缓冲区大小返回值发送成功则返回true,否则返回false异常无方法型构voidRegNotifytCDataNotify*pRecver);描述注册数据到达通知对象可见性public参数pRecver:数据到达要通知的对象返回值斤.异常无类名称CThread描述线程类基类类型定义THREAD_STATE常量定义无友元类无属性名称是否静态属性类型属性可见性属性描述m_hThread否HANDLEprotected线程句柄m_hStopEvent否HANDLEprotected停止事件m_cs否CCriticaISectionprotected临界区m_
25、State否THREAD_STATEprotected运行状态m_dwThreadlD否DWORDprotected线程编号方法型构staticDWORDWINAPIThreadFunfLPVOIDIpParam);描述线程执行函数可见性public参数参数返回值线程返回值异常无方法型构virtualvoidDolt()=0;描述真正执行体,派生类覆盖该函数可见性public参数无返回值无异常无方法型构BOOLlsStop();描述线程是否停止可见性public参数斤.返回值停止则返回TRUE,否则返回FALSE异常无方法型构voidStop();描述停止线程可见性public参数无返回值无异
26、常无方法型构voidPause();描述挂起线程可见性public参数无返回值无异常无方法型构voidResumed;描述恢复执行可见性public参数无返回值无异常无方法型构voidStartUpO;描述启动线程可见性public参数无返回值无异常无方法型构DWORDGetThreadIDO;描述获取线程编号可见性public参数无返回值无异常无2.1.4.3,主要序列由于和服务器端之间采用一问一答方式进行通信,程序主要采用下面的工作模式:2.1,4.4、单元测试用例测试对象输入预期输出备注boolCCfg:GetCtrlCardParam(CONTROLER_PARAM¶m);照相
27、站控制卡未接返回falsebool照相站控制卡未返回falseCCfg:GetCameraParam(CAMERA_PARAM¶m);接constCCfg:std:string&GetLeftMonitPathO;配置文件不存在返回空字符串配置文件存在,但配置项不存在配置文件存在且相应配置项内容为uDALeftw返回ttDALeftwconstCCfg:std:string&GetRightMonitPathO;配置文件不存在返回空字符串配置文件存在,但配置项不存在配置文件存在且相应配置项内容为aDARightw返回rtDARightwboolCCfgirSetCtrICardPara
28、m(constCONTROLER_PARAM¶m);控制卡未接返回falseboolCCfg:SetCameraParam(constCAMERA_PARAM¶m);相机未接返回falseboolCCfg:SetLeftMonitPath(conststd:string&StrPath);配置文件不存在生成配置文件,其他配置项为默认值,该配置项内容为StrPath,返回true配置项不存在在配置文件中创建该配置项并将其值设为StrPath,返回true配置文件和配置项都存在,但StrPath为空将配置文件中相应配置项的值清空并返回true配置文件和配置项都存在,StrPath为
29、rtDALeftw配置文件中相应配置项的值为rtDALeftw并返回trueboolCCfg:SetRightMonitPath(conststd:string&strPath);配置文件不存在生成配置文件,其他配置项为默认值,该配置项内容为StrPath,返回true配置项不存在在配置文件中创建该配置项并将其值设为StrPath,返回true配置文件和配置项都存在,但StrPath为空将配置文件中相应配置项的值清空并返回true配置文件和配置项都存在,StrPath为wDARightn配置文件中相应配置项的值为D:Right”并返回true2.2、 弹道复现模块(DemOnStrate.ex
30、e)221、程序描述弹道复现模块为常驻内存运行程序,其随系统启动。由于需要在大屏上进行展示,所以其以单实例独占方式运行,不可重入。222、功能复现模块从数据采集和分析服务器接收数据并实时在大屏上以三维动画的形式显示当前实验步骤以及最终弹道。223.1、类图2.2.3.2,类定义通信层相关类(CCommLayer、CPacketBaseCPacketCCommBaseCComm和CThread)参见照相站姿态识别模块中的定义。类名称CMainCtrI描述主控类类型定义typedefstruct(intdistance;距枪口距离intheight;飞行高度floatfSpeed;速度floatf
31、Acceleration;加速度float(AnguIarAcceIeration;角加速度floatfAngle;攻角floatfRollAngle;滚转角A11ITDE;typedefstruct(ATTITUDEattitudes30;各照相站弹丸飞行姿态floatfLift;升力floatfDragCoefficient;空气阻力系数!TRAJECTORY;常量定义无友元类无属性名称是否静态属性类型属性可见性属性描述无方法型构voidDispIayStepfconststd:string&strStep);描述显示当前实验步骤可见性public参数strStep:当前实验步骤返回值无异
32、常无方法型构voidDisplayEvaluation(conststd:string&StrEvaIuation);描述显示评价可见性public参数StrEvaIuation:本次击发的评价评价返回值斤.异常无方法型构voidDisplayTrajectory(constTRAJECTORY&track);描述显示弹道可见性public参数track:弹道数据返回值无异常无类名称CStepCmd描述显示当前实验步骤命令类类型定义无常量定义无友元类无属性名称是否静态属性类型属性可见性属性描述m-strStep否std:stringprivate实验步骤类名称CEvaIuationCmd描述实
33、验评价命令类,如果实验失败则显示评价,否则复现弹道类型定义无常量定义无友元类无属性名称是否静态属性类型属性可见性属性描述m_nResult否intprivate0为失败,1为成功m_Track否TRAJECTORYprivate弹道数据2.2.3.3主要序列参见2.1.4.3o2.3、 设备接入代理模块(DeVPrOxy.exe)231、程序描述本程序运行于实验室某PC上,由实验人员手动启动,为单实例运行程序。2.3.1. 功能该程序负责监控某目录将其中新生成的文件通过网络发送至数据采集和分析服务器,供后者将文件作为实验数据保存至数据库中。233.1、类图2.3.3.2,类定义类名称CMain
34、CtrI描述主控类类型定义无常量定义无友元类无属性名称是否静态属性类型属性可见性属性描述m_nState否intprivate当前工作状态方法型构intGetStatef);描述获取当前工作状态可见性public参数无返回值当前工作状态异常无方法型构voidSetState(intnState);描述设置当前状态可见性public参数nState:当前状态返回值无异常无233.3、主要序列参见2.1.4.3o2.4、 控制台主控程序(COnSoLeXe)2.4.1. 程序描述本程序运行于控制室操作台上的某PC或服务器上,以单实例独占方式运行,随系统启动。242、功能以图形化的方式展示当前各实验
35、设备和门禁的工作状态,并在用户进行实验状态切换时根据当前设备和门禁的状态是否正确进行提示。243.1、类图结束42.4.3.2,类定义类名称CComBase描述通信基类,是一-个纯虚类类型定义无常量定义无友元类无属性名称是否静态属性类型属性可见性属性描述方法型构BOOLlnit();描述初始化通信,在子类中有具体的实现可见性public参数无返回值初始化成功返回TRUE,失败返回FALSE异常无方法型构BOOLSend(BYTE*pBufzUINTnLength)描述发送数据或者请求,在子类中有具体的实现可见性public参数pBuf:数据存储区nLength:数据长度返回值发送成功返回TRU
36、E,失败返回FALSE异常无方法型构BOOLRecvO描述接收数据,在子类中有具体的实现可见性public参数无返回值接收成功返回TRUE,失败返回FALSE异常无类名称CDeviceCom描述和相关设备通信的类,采用TCP通信,从CComBaSe中继承类型定义无常量定义无友元类无属性名称是否静态属性类型属性可见性属性描述m_hSocket否HANDLEprivate链接句柄m_hThread否HANDLEprivate线程句柄m_exit否BOOLpublic应用程序是否退出方法型构BOOLlnit();描述初始化通信,连接服务器可见性public参数无返回值初始化成功返回TRUE,失败返回
37、FALSE异常无方法型构BOOLSend(BYTE*pBuf,INTnLength)描述发送数据或者请求可见性public参数pBuf:数据存储区nLength:数据长度返回值发送成功返回TRUE,失败返回FALSE异常无方法型构BOOLRecvO描述接收数据可见性public参数无返回值接收成功返回TRUE,失败返回FALSE异常无方法型构BOOLParseFrame(BYTE*pBuf,intnLen);描述进行数据的分析,看数据是否正确、是否完整、对不同的数据交给不同的Manager处理可见性private参数pBuf:数据存储区nLength:数据长度返回值数据完整,正确返回TRUE,
38、数据短缺或错误返回FALSE异常无方法型构BYTEMakeFrame(intstate,BYTE*pBuf);描述对将要发送的数据或者请求进行组帧可见性private参数state:帧的类型Iparam:数据存储区返回值返回一个数据帧异常无方法型构BOOLStarRecvThread();描述开启数据接收线程可见性public参数无返回值开启线程成功返回TRUE,失败返回FALSE异常无方法型构StaticvoidRecvData();描述在线程中调用,接收数据并进行相关的处理可见性private参数无返回值无异常无方法型构BOOLTerminalThread();描述由应用程序调用,在窗口销毁前终止接收线程可见性public参数无返回值终止线程成功返回TRUE,终止线程失败返回FALSE异常无类名称CDeviceManager描述业务层设备管理的基类类型定义无常量定义无友元类无属性名称是否静态属性类型属性可见性属性描述m_pDeviceList否CDeviceList*private设备列表方法型构BOOLHandleState(BYTE*pBuf,UINTnLen