版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 第一章 功能需求分析1</p><p> 1.1 課程設(shè)計(jì)目的及意義1</p><p> 1.2 系統(tǒng)實(shí)現(xiàn)的具體功能1</p><p> 1.3 主要特點(diǎn)2</p><p> 1.4 Winsock編程原理和方法2</p><p> 第二章 系統(tǒng)設(shè)計(jì)3</p>
2、<p> 2.1 總體方案3</p><p> 第三章 技術(shù)實(shí)現(xiàn)4</p><p> 3.1 程序界面4</p><p> 3.2 主要控件說(shuō)明5</p><p> 3.3 部分代碼及說(shuō)明6</p><p> 3.3.1 主站W(wǎng)insock1_DataArrival事件6</p&
3、gt;<p> 3.3.2 從站W(wǎng)insock1_DataArrival事件6</p><p> 3.3.3 巡回檢測(cè)代碼塊7</p><p> 3.3.4 主站主動(dòng)向從站發(fā)送數(shù)據(jù)模塊7</p><p> 3.3.5 從站異常報(bào)告模塊8</p><p> 3.3.6 燈的實(shí)現(xiàn)模塊8</p>&l
4、t;p> 第四章 總結(jié)和體會(huì)9</p><p><b> 附錄10</b></p><p><b> 主站代碼截圖10</b></p><p><b> 從站代碼截圖11</b></p><p> 第一章 功能需求分析</p><p&
5、gt; 1.1 課程設(shè)計(jì)目的及意義</p><p> 本次的課程設(shè)計(jì)是通過(guò)主從式通信來(lái)了解和掌握簡(jiǎn)單的通信協(xié)議,是作為本學(xué)期學(xué)習(xí)TCP/IP協(xié)議族的一次實(shí)際應(yīng)用,有助于深入的了解通信協(xié)議的具體實(shí)現(xiàn)方式。這次的課程設(shè)計(jì)加深對(duì)所學(xué)知識(shí)的了解和掌握,比如TCP協(xié)議和UDP協(xié)議的所用場(chǎng)合和不同之處;學(xué)習(xí)到對(duì)巡回檢測(cè)系統(tǒng)的設(shè)計(jì)方法;同時(shí)學(xué)習(xí)了解和掌握對(duì)VB開(kāi)發(fā)環(huán)境的一些基本的簡(jiǎn)單的常識(shí),當(dāng)然也增強(qiáng)了動(dòng)手能力,為今后的設(shè)
6、計(jì)做鋪墊。</p><p> 1.2 系統(tǒng)實(shí)現(xiàn)的具體功能</p><p> TCP是一種面向連接的通信協(xié)議,UDP(用戶數(shù)據(jù)文報(bào)協(xié)議)是一個(gè)無(wú)連接協(xié)議。在工業(yè)應(yīng)用中,為了提高效率通常采用UDP作為實(shí)時(shí)數(shù)據(jù)傳輸協(xié)議。因?yàn)閁DP不提供數(shù)據(jù)包分組、組裝和不能對(duì)數(shù)據(jù)包進(jìn)行排序,無(wú)連接,處理速度快,因此效率相對(duì)比較高。</p><p> 本系統(tǒng)是基于UDP協(xié)議的通信軟件
7、設(shè)計(jì)的巡回檢測(cè)系統(tǒng)。巡回檢測(cè)系統(tǒng)能夠?qū)崿F(xiàn)一些工業(yè)系統(tǒng)的自動(dòng)化,通過(guò)該系統(tǒng)提取所需要的實(shí)時(shí)信息,根據(jù)信息內(nèi)容做出相應(yīng)的回應(yīng)。巡回檢測(cè)是計(jì)算機(jī)遠(yuǎn)程監(jiān)控系統(tǒng)的一種工作模式。計(jì)算機(jī)遠(yuǎn)程監(jiān)控系統(tǒng)通常由主站和從站構(gòu)成,是典型的主從式通信系統(tǒng)。正常情況下,巡回檢測(cè)模式采用一問(wèn)一答的方式進(jìn)行,當(dāng)從站發(fā)生異常時(shí)可主動(dòng)上報(bào)(例如報(bào)警)。具體要求如下:</p><p> ?、?設(shè)1個(gè)主站(Server)和5個(gè)從站(Client)。&l
8、t;/p><p> ②.系統(tǒng)應(yīng)設(shè)置巡檢周期和從站采樣時(shí)間間隔。</p><p> ③.系統(tǒng)的工作模式為:自動(dòng)巡檢+主動(dòng)上報(bào)。</p><p> ?、?主機(jī)地址:127.0.0.1(主站和從站);本地端口號(hào):10000(主站);遠(yuǎn)端端口號(hào):10001~10005(從站)。</p><p> ?、?分別設(shè)計(jì)主站和從站通信程序,同時(shí)打開(kāi)主站和從站的
9、程序時(shí),主站能夠定時(shí)巡檢從站,從站做出相應(yīng)的回應(yīng),檢測(cè)到的在主站上顯示出來(lái)(如燈亮表示連接上,反之表示斷開(kāi))。</p><p><b> 1.3 主要特點(diǎn)</b></p><p> 本設(shè)計(jì)主站是主動(dòng)呼叫方,主站按周期向各個(gè)從站端口發(fā)送信息,從站收到信息后作出應(yīng)答。當(dāng)從站發(fā)生異常時(shí)要主動(dòng)向主站報(bào)告。從站程序可以同時(shí)打開(kāi)多個(gè)。</p><p>
10、 本系統(tǒng)是使用VB6.0編程環(huán)境實(shí)現(xiàn)的,基于UDP通信協(xié)議的主從式通信。所使用的控件對(duì)象有:標(biāo)簽(Label),文本框(Textbox),命令按鈕(Command),通信(Winsock),形狀(Shape),定時(shí)器(Timer)。</p><p> 實(shí)現(xiàn)從一個(gè)窗口跳轉(zhuǎn)到另一個(gè)窗口。</p><p> 1.4 Winsock編程原理和方法</p><p>
11、Winsock 控件對(duì)用戶來(lái)說(shuō)是不可見(jiàn)的,利用 WinSock 控件可以與遠(yuǎn)程計(jì)算機(jī)建立連接,并通過(guò)用戶數(shù)據(jù)報(bào)協(xié)議 (UDP)或者傳輸控制協(xié)議 (TCP)進(jìn)行數(shù)據(jù)交換。這兩種協(xié)議都可以用來(lái)創(chuàng)建客戶與服務(wù)器應(yīng)用程序。本次設(shè)計(jì)是利用Winsock控件對(duì)象實(shí)現(xiàn)基于UDP通信協(xié)議的主從式通信,為了傳輸數(shù)據(jù),首先要設(shè)置客戶計(jì)算機(jī)的 Local Port 屬性。然后,服務(wù)器計(jì)算機(jī)只需將 Remote Host 設(shè)置為客戶計(jì)算機(jī)的 Internet
12、地址,并將 Remote Port 屬性設(shè)置為跟客戶計(jì)算機(jī)的 Local Port 屬性相同的端口,并調(diào)用 Send Data 方法來(lái)著手發(fā)送信息。于是,客戶計(jì)算機(jī)使用 Data Arrival 事件內(nèi)的 Get Data 方法來(lái)獲取已發(fā)送的信息。</p><p> 主要使用的方法有Send Data 方法和Get Data 方法,在調(diào)用 Send Data 方法來(lái)著手發(fā)送信息時(shí)要先設(shè)定相同的端口;當(dāng)傳進(jìn) UN
13、ICODE 字符串并在網(wǎng)絡(luò)上發(fā)送出去之前,將轉(zhuǎn)化成 ANSI 字符串。Get Data 方法是獲取當(dāng)前的數(shù)據(jù)塊并將其存儲(chǔ)在變體類(lèi)型的變量中。通常與Data Arrival 事件并用。</p><p><b> 第二章 系統(tǒng)設(shè)計(jì)</b></p><p><b> 2.1 總體方案</b></p><p> 本次設(shè)計(jì)是實(shí)
14、現(xiàn)1個(gè)主站和5個(gè)從站的通信,主站的端口號(hào)為10000,1到5號(hào)從站的端口為10001~10005。結(jié)構(gòu)如下:</p><p> 主站每隔一段時(shí)間從1號(hào)從站到5號(hào)從站依次發(fā)送一次巡檢信息,從站收到信息就做出相應(yīng)的回應(yīng),在從站之間還有一定的間隔。流程圖如下:</p><p><b> 第三章 技術(shù)實(shí)現(xiàn)</b></p><p><b>
15、 3.1 程序界面</b></p><p><b> 主站:</b></p><p><b> 從站:</b></p><p> 3.2 主要控件說(shuō)明</p><p> 主站中使用了1個(gè)計(jì)時(shí)器Timer()、1個(gè)Winsock控件和1個(gè)command控件,其他textbox控件
16、和label若干</p><p> 從站使用1個(gè)Winsock控件和1個(gè)command控件,其他textbox控件和label若干,</p><p> Timer控件:通過(guò)引發(fā) Timer 事件,Timer 控件可以有規(guī)律地隔一段時(shí)間執(zhí)行一次代碼。Timer 控件用于背景進(jìn)程中,它是不可見(jiàn)的。</p><p> Winsock控件:Winsock 控件對(duì)用戶來(lái)
17、說(shuō)是不可見(jiàn)的,利用 WinSock 控件可以與遠(yuǎn)程計(jì)算機(jī)建立連接,并通過(guò)用戶數(shù)據(jù)報(bào)協(xié)議 (UDP)或者傳輸控制協(xié)議 (TCP)進(jìn)行數(shù)據(jù)交換。這兩種協(xié)議都可以用來(lái)創(chuàng)建客戶與服務(wù)器應(yīng)用程序。與 Timer 控件類(lèi)似,WinSock 控件在運(yùn)行時(shí)是不可見(jiàn)的。主要的用途:①創(chuàng)建收集用戶信息的客戶端應(yīng)用程序,并將收集的信息發(fā)送到某中央服務(wù)器。②創(chuàng)建一個(gè)服務(wù)器應(yīng)用程序,作為多個(gè)用戶的數(shù)據(jù)的匯入點(diǎn)。③創(chuàng)建“聊天”應(yīng)用程序。</p>&l
18、t;p> Command Button 控件:Command Button 控件可以開(kāi)始、中斷或者結(jié)束一個(gè)進(jìn)程。</p><p> Textbox 控件:Textbox 控件有時(shí)也稱(chēng)作編輯字段或者編輯控件,顯示設(shè)計(jì)時(shí)輸入的用戶輸入的、或運(yùn)行時(shí)在代碼中賦予控件的信息。</p><p> 3.3 部分代碼及說(shuō)明</p><p> 3.3.1 主站W(wǎng)inso
19、ck1_DataArrival事件</p><p> Private Sub Winsock1_DataArrival (ByVal bytesTotal As Long)</p><p> If bytesTotal > 2 Then</p><p> Dim strData As String</p><p> On Err
20、or Resume Next</p><p> Winsock1.GetData strData</p><p> Text2.Text = Text2.Text & Chr(13) & Chr(10) & strData</p><p> Shape1 (Winsock1.RemotePort - 10001).FillColor =
21、 &HFF00&</p><p><b> End If</b></p><p><b> End Sub</b></p><p> 說(shuō)明:如果收到的字節(jié)大于2執(zhí)行GetData 并將收到的數(shù)據(jù)在text2文本框中輸出,并將相應(yīng)的Shape1(Winsock1.RemotePort - 10001)圖
22、形填充為綠色。</p><p> 3.3.2 從站W(wǎng)insock1_DataArrival事件</p><p> Private Sub Winsock2_DataArrival (ByVal bytesTotal As Long)</p><p> If bytesTotal > 2 Then</p><p> Dim str
23、Data As String</p><p> Winsock2.GetData strData</p><p> Text2.Text = Text2.Text & Chr(13) & Chr(10) & strData</p><p> Winsock2.RemoteHost = "127.0.0.1"</
24、p><p> Winsock2.RemotePort = 10000</p><p> Winsock2.SendData Label4.Caption & "號(hào)站應(yīng)答"</p><p><b> End If</b></p><p><b> End Sub</b>
25、</p><p> 說(shuō)明:當(dāng)從站接收到數(shù)據(jù)大于2時(shí)執(zhí)行GetData 方法,并將接收到的數(shù)據(jù)在text2中顯示,還要在接受到主站發(fā)來(lái)的數(shù)據(jù)后向主站發(fā)送應(yīng)答Winsock2.SendData Label4.Caption & "號(hào)站應(yīng)答"。</p><p> 3.3.3 巡回檢測(cè)代碼塊</p><p> Private Sub Tim
26、er1_Timer ()</p><p> For i = 10001 To 10005</p><p> Winsock1.RemoteHost = "127.0.0.1"</p><p> Winsock1.RemotePort = i</p><p> Shape1 (Winsock1.RemotePort
27、- 10001).FillColor = &H80000008</p><p> Winsock1.SendData "主站巡檢" & i - 10000 & "號(hào)站"</p><p><b> DoEvents</b></p><p><b> Sleep 200
28、</b></p><p><b> Next i</b></p><p><b> End Sub</b></p><p> 每隔Timer1.Interval時(shí)間執(zhí)行一次改代碼塊,每次執(zhí)行時(shí)利用For循環(huán)將Winsock1.RemotePort設(shè)置為從10001到10005間的數(shù),并且執(zhí)行Winsock
29、1.SendData "主站巡檢" & i - 10000 & "號(hào)站"向當(dāng)前端口發(fā)送數(shù)據(jù)。循環(huán)體每執(zhí)行一次Sleep 200。</p><p> 3.3.4 主站主動(dòng)向從站發(fā)送數(shù)據(jù)模塊</p><p> Private Sub Command1_Click ()</p><p> Winsock1.Re
30、moteHost = "127.0.0.1"</p><p> Winsock1.RemotePort = Text1.Text</p><p> Winsock1.SendData Text3.Text</p><p> Text3.Text = ""</p><p> Text1.Text
31、= ""</p><p><b> End Sub</b></p><p> 說(shuō)明:此代碼由Command1_Click()事件觸發(fā),根據(jù)Text1.Text中的用戶輸入主動(dòng)設(shè)置Winsock1.RemotePort,并發(fā)送Text3.Text中用戶輸入的字符串到相應(yīng)的端口,然后清空輸入框和端口框的數(shù)據(jù)。</p><p>
32、; 3.3.5 從站異常報(bào)告模塊</p><p> Private Sub Command1_Click ()</p><p> Winsock2.SendData Text3.Text</p><p> Text3.Text = ""</p><p><b> End Sub</b><
33、;/p><p> 說(shuō)明:由Command1_Click()事件觸發(fā),點(diǎn)擊Command1后發(fā)送Text3.Text中的字符串到主站報(bào)警,然后清空輸入的數(shù)據(jù)。</p><p> 3.3.6 燈的實(shí)現(xiàn)模塊</p><p> 在每次循環(huán)體執(zhí)行時(shí)將當(dāng)前端口對(duì)應(yīng)的Shape填充為黑色</p><p> Shape1 (Winsock1.Remote
34、Port - 10001).FillColor = &H80000008</p><p> 當(dāng)收到應(yīng)答時(shí),將相應(yīng)的Shape填充為綠色</p><p> Shape1 (Winsock1.RemotePort - 10001).FillColor = &HFF00&</p><p><b> 第四章 總結(jié)和體會(huì)</b&g
35、t;</p><p> 本次課程設(shè)計(jì),使用VB6.0開(kāi)發(fā)環(huán)境來(lái)做的,通過(guò)一些簡(jiǎn)單的控件對(duì)象來(lái)完成基于UDP通信協(xié)議的主從式通信的巡回檢測(cè)和主動(dòng)上報(bào)的程序。本次設(shè)計(jì)主要使用的控件是Winsock控件,Winsock控件是為了連接兩臺(tái)主機(jī)的控件,它主要使用Data Arrival事件來(lái)完成連接的。</p><p> 巡回檢測(cè)是主站通過(guò)Timer控件來(lái)按照一定的時(shí)間間隔對(duì)從站的主機(jī)進(jìn)行巡檢,
36、來(lái)確定是否連接,若連接就顯示綠燈,就可以進(jìn)行數(shù)據(jù)交流,反之不行。</p><p> 主動(dòng)上報(bào)就是從站發(fā)生異常時(shí)主動(dòng)向主站發(fā)送相應(yīng)的數(shù)據(jù),便于主站及時(shí)的采取相應(yīng)的措施來(lái)解決異常。但是,主動(dòng)上報(bào)也是有一定的弊端的,當(dāng)多臺(tái)主機(jī)同時(shí)發(fā)生異常,又同時(shí)上報(bào)的話,就可能產(chǎn)出沖突。主站不能同時(shí)受理這些上報(bào)信息。解決這種沖突可以采取分割時(shí)間片的方法,為每個(gè)從站分配一個(gè)時(shí)間片,在相應(yīng)從站的時(shí)間片內(nèi)產(chǎn)生的異??梢陨蠄?bào),主站予以處理;
37、反之,不允許上報(bào),當(dāng)然主站也不會(huì)處理的,要等到下一個(gè)時(shí)間片到來(lái)的時(shí)候才可以上報(bào),這樣才可以解決此沖突。 </p><p> 根據(jù)設(shè)計(jì)的要求,通過(guò)上網(wǎng),和同學(xué)交流,請(qǐng)教老師等方式最終完成了本次設(shè)計(jì),在整個(gè)過(guò)程中遇到了很多問(wèn)題,問(wèn)題大多源于對(duì)VB語(yǔ)言的不了解,有些解決,也有還沒(méi)解決的,不是很完美。當(dāng)然收獲也很大:首先 實(shí)現(xiàn)了這個(gè)系統(tǒng)很有成就感。其次,了解了VB語(yǔ)言,有了自學(xué)一門(mén)語(yǔ)言的經(jīng)驗(yàn),最主要的就是要多問(wèn),遇到問(wèn)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 嵌入式課程設(shè)計(jì)--串口通信
- 嵌入式課程設(shè)計(jì)--串口通信的設(shè)計(jì)
- 通信原理課程設(shè)計(jì)
- 移動(dòng)通信 課程設(shè)計(jì)
- 通信綜合課程設(shè)計(jì)
- 通信電纜課程設(shè)計(jì)
- 移動(dòng)通信課程設(shè)計(jì)
- 雙機(jī)通信課程設(shè)計(jì)
- 通信原理課程設(shè)計(jì)
- 雙機(jī)通信課程設(shè)計(jì)
- 通信原理課程設(shè)計(jì)
- 雙機(jī)通信課程設(shè)計(jì)
- 通信系統(tǒng)課程設(shè)計(jì)
- 移動(dòng)通信課程設(shè)計(jì)
- 通信系統(tǒng)課程設(shè)計(jì)
- 通信原理課程設(shè)計(jì)
- 電路課程設(shè)計(jì)--通信電路仿真課程設(shè)計(jì)
- 通信課程設(shè)計(jì)---pcm通信系統(tǒng)設(shè)計(jì)
- 通信系統(tǒng)綜合課程設(shè)計(jì)
- 集群通信系統(tǒng)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論