網(wǎng)絡(luò)故障測(cè)試儀遠(yuǎn)程監(jiān)控軟件的設(shè)計(jì)
網(wǎng)絡(luò)故障測(cè)試儀是基于Linux操作系統(tǒng)的嵌入式手持設(shè)備,主要用于測(cè)試網(wǎng)絡(luò)故障現(xiàn)場(chǎng)、評(píng)估性能、提供專家解釋。專家親臨故障現(xiàn)場(chǎng)需要耗費(fèi)一定的時(shí)間和財(cái)力,遠(yuǎn)程監(jiān)控軟件可以幫助專家通過互聯(lián)網(wǎng)絡(luò)訪問遠(yuǎn)端的測(cè)試設(shè)備,了解網(wǎng)絡(luò)運(yùn)行參數(shù),給出解決方案,實(shí)現(xiàn)遠(yuǎn)程專家系統(tǒng)。遠(yuǎn)程監(jiān)控軟件將為便攜式網(wǎng)絡(luò)故障測(cè)試儀提供有效的遠(yuǎn)程操作、監(jiān)控及遠(yuǎn)程技術(shù)支持能力。
1、遠(yuǎn)程監(jiān)控軟件的功能和結(jié)構(gòu)
1.1 軟件主要功能
網(wǎng)絡(luò)故障測(cè)試儀是一臺(tái)便攜式設(shè)備,通常接人需要測(cè)試的網(wǎng)絡(luò)中。遠(yuǎn)程監(jiān)控將為用戶提供在個(gè)人電腦上直接觀測(cè)網(wǎng)絡(luò)狀態(tài)的能力;同時(shí)當(dāng)網(wǎng)絡(luò)出現(xiàn)故障時(shí),也能為遠(yuǎn)程專家了解網(wǎng)絡(luò)故障,給出解決方案提供便利。因此,遠(yuǎn)程監(jiān)控軟件主要實(shí)現(xiàn)對(duì)異地測(cè)試儀的操作功能,顯示設(shè)備返回的狀態(tài);通過在設(shè)備間建立起的數(shù)據(jù)交換通道,實(shí)現(xiàn)雙向的數(shù)據(jù)通信。
遠(yuǎn)程監(jiān)控軟件實(shí)現(xiàn)在監(jiān)控時(shí),獲取客戶端發(fā)出的控制命令,控制服務(wù)器根據(jù)應(yīng)用層協(xié)議對(duì)命令解釋后執(zhí)行相應(yīng)的動(dòng)作,返回執(zhí)行結(jié)果;同時(shí)設(shè)置服務(wù)器根據(jù)用戶界面所需顯示參數(shù),定時(shí)執(zhí)行操作返回結(jié)果數(shù)據(jù)刷新界面。
1.2 軟件體系結(jié)構(gòu)
軟件功能分解到通信的兩個(gè)端點(diǎn)上,即客戶端和服務(wù)器端,采用Client/Server模式。這樣能提高設(shè)計(jì)的靈活性,易于系統(tǒng)的擴(kuò)展。服務(wù)器端集成在測(cè)試儀中,與設(shè)備的其他功能模塊協(xié)調(diào)工作,為客戶端提供執(zhí)行共享資源的管理應(yīng)用程序人口;客戶端則提供交互界面及結(jié)果顯示;數(shù)據(jù)交換通道的建立由雙方的數(shù)據(jù)通信模塊負(fù)責(zé)。從而實(shí)現(xiàn)點(diǎn)到點(diǎn)的直接控制監(jiān)控,滿足實(shí)時(shí)性要求。軟件體系結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)體系結(jié)構(gòu)
① 客戶端的主要功能模塊為:消息輸入/顯示模塊,通信管理模塊。消息輸入模塊負(fù)責(zé)將用戶界面的按鈕事件傳送到通信模塊,通信模塊將命令信息發(fā)送到受控端;受控端執(zhí)行操作后返回的成功或失敗信息交由客戶端消息顯示模塊根據(jù)信息的格式進(jìn)行顯示。
② 服務(wù)器端的主要功能模塊為:通信管理模塊,命令解釋模塊,函數(shù)調(diào)用模塊。服務(wù)器處于偵聽狀態(tài), 一旦接收到合法的連接請(qǐng)求,則建立信號(hào)通路,通過通信管理模塊接收客戶端發(fā)來的命令信息,經(jīng)解釋模塊解釋后,調(diào)用函數(shù)執(zhí)行相應(yīng)的指令,并將結(jié)果返回到客戶端。
2、遠(yuǎn)程監(jiān)控軟件設(shè)計(jì)
2.1 消息輸入/顯示模塊實(shí)現(xiàn)
客戶端輸入/顯示模塊的開發(fā)采用Visual C++,利用模塊化、通用性強(qiáng)的特點(diǎn),實(shí)現(xiàn)遠(yuǎn)程監(jiān)控中用戶界面的編寫。用戶顯示界面保持與設(shè)備界面的一致,方便用戶操作。
2.2 通信模塊實(shí)現(xiàn)
(1) Socket編程
數(shù)據(jù)通信模塊中的數(shù)據(jù)通道建立采用Socket編程。Socket支持TCP/IP協(xié)議網(wǎng)絡(luò)通信的基本操作;它屏蔽了網(wǎng)絡(luò)底層的通信細(xì)節(jié),使編程簡(jiǎn)單;它對(duì)通信端點(diǎn)進(jìn)行了抽象,提供發(fā)送和接收數(shù)據(jù)機(jī)制及打開、計(jì)算和關(guān)閉會(huì)話的能力。本項(xiàng)目中,客戶端運(yùn)行在Windows操作平臺(tái)下,采用WinSock來編程實(shí)現(xiàn)命令和數(shù)據(jù)信息的傳輸;而服務(wù)端運(yùn)行在Linux操作平臺(tái)下,通信直接使用Socket編程實(shí)現(xiàn)。
(2) 通信建立
服務(wù)器與客戶端開始都必須調(diào)用socket()函數(shù)產(chǎn)生一個(gè)Socket套接字;然后服務(wù)器調(diào)用bind()函數(shù),將套接字與本地網(wǎng)絡(luò)地址捆扎在一起,在網(wǎng)絡(luò)上標(biāo)志該套接字;只有當(dāng)服務(wù)器執(zhí)行完accept()進(jìn)入監(jiān)聽模式、阻塞狀態(tài)后,才能接收客戶端的connect()請(qǐng)求并決定是否接收數(shù)據(jù);建立連接后,客戶端與服務(wù)器之間便可以雙向傳輸數(shù)據(jù)。服務(wù)器主要通信代碼:
listenfd=socket(AF—INET,SOCK—STREAM,0)
bind(1istenfd,(SOCKADDR %)sockaddr—echo,sizeof(struct sockaddr_in))
echofd=accept(1istenfd,(SOCKADDR %)(sockaddrcli),sizeof(SOCKADDR));
while((read—n=read(echofd,revbuf,BUFLEN))0)
{.一//指令解釋與函數(shù)調(diào)用}
if((write—n=write(echofd,okbuf,strlen(sendbuff)))0)
{.一//將結(jié)果返回給客戶端}
其中,客戶端與服務(wù)器間制定統(tǒng)一的數(shù)據(jù)通信協(xié)議,所有的數(shù)據(jù)和指令信息統(tǒng)一編碼,編碼格式為:命令代碼:數(shù)據(jù)部分(各數(shù)據(jù)之間用#分隔)。在傳輸用戶密碼時(shí),采用事先約定好的數(shù)據(jù)加密密匙,以防明文形式傳輸造成的信息泄漏。
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號(hào)放大器
評(píng)論