第一篇:Zigbee基礎(chǔ)實(shí)驗(yàn)(6)—簡單通信編程
Zigbee基礎(chǔ)實(shí)驗(yàn)(6)—簡單通信編程
2011-07-25 20:06:19|分類: |字號(hào) 訂閱
實(shí)驗(yàn)中兩節(jié)點(diǎn)分別充當(dāng)開關(guān)和電燈,通過在開關(guān)節(jié)點(diǎn)上的操作來控制電燈節(jié)點(diǎn)。
源代碼: #include
#include “basic_rf.h”
#define RF_CHANNEL25// 信道選擇。
// 定義各個(gè)參數(shù)的值
#define PAN_ID0x2007//網(wǎng)絡(luò)ID
#define SWITCH_ADDR0x2520//開關(guān)節(jié)點(diǎn)的地址
#define LIGHT_ADDR0xBEEF//電燈節(jié)點(diǎn)的地址
#define APP_PAYLOAD_LENGTH1//負(fù)載字節(jié)的長度,信息的長度。#define LIGHT_TOGGLE_CMD0//被傳送的開關(guān)命令。
//節(jié)點(diǎn)狀態(tài)。0為空閑
#define IDLE0
#define SEND_CMD1
// 定義該節(jié)點(diǎn)所承擔(dān)的任務(wù)(開關(guān)或電燈)
#define NONE0
#define SWITCH1
#define LIGHT2
#define APP_MODES2
static uint8 pTxData[APP_PAYLOAD_LENGTH];//發(fā)送數(shù)組
static uint8 pRxData[APP_PAYLOAD_LENGTH];//接收數(shù)組
static basicRfCfg_t basicRfConfig;
// 模式選擇菜單 static menuItem_t pMenuItems[] = {
“Switch”,SWITCH,“Light”,LIGHT
};static menu_t pMenu = {
pMenuItems,N_ITEMS(pMenuItems)
};
static void appLight();//實(shí)現(xiàn)電燈功能
static void appSwitch();//實(shí)現(xiàn)遠(yuǎn)程開關(guān)功能
static uint8 appSelectMode(void);//功能選擇
static void appLight()//實(shí)現(xiàn)電燈功能 {
halLcdWriteLine(HAL_LCD_LINE_1, “Light”);
halLcdWriteLine(HAL_LCD_LINE_2, “Ready”);
// 初始化射頻模塊
basicRfConfig.myAddr = LIGHT_ADDR;//網(wǎng)絡(luò)地址
if(basicRfInit(&basicRfConfig)==FAILED){
HAL_ASSERT(FALSE);//初始化錯(cuò)誤處理
}
basicRfReceiveOn();//打開接收功能。
//死循環(huán)
while(TRUE){
while(!basicRfPacketIsReady());
if(basicRfReceive(pRxData, APP_PAYLOAD_LENGTH, NULL)>0){//如果接收到數(shù)據(jù)
if(pRxData[0] == LIGHT_TOGGLE_CMD){
halLedToggle(1);//開關(guān)改變狀態(tài)
}
}
}
}
static void appSwitch()//實(shí)現(xiàn)遠(yuǎn)程開關(guān) {
halLcdWriteLine(HAL_LCD_LINE_1, “Switch”);//屏幕輸出
halLcdWriteLine(HAL_LCD_LINE_2, “Joystick Push”);
halLcdWriteLine(HAL_LCD_LINE_3, “Send Command”);
pTxData[0] = LIGHT_TOGGLE_CMD;//需要發(fā)送的數(shù)據(jù)
// 初始化
basicRfConfig.myAddr = SWITCH_ADDR;
if(basicRfInit(&basicRfConfig)==FAILED){
HAL_ASSERT(FALSE);//出錯(cuò)處理
}
basicRfReceiveOff();//關(guān)閉接收機(jī)
// 死循環(huán)
while(TRUE){
if(halJoystickPushed()){//當(dāng)按鍵按下時(shí)觸發(fā)
basicRfSendPacket(LIGHT_ADDR, pTxData, APP_PAYLOAD_LENGTH);//發(fā)送命令
}
}
}void main(void)
{
uint8 appMode = NONE;//模式變量
// 設(shè)置網(wǎng)絡(luò)ID和信道
basicRfConfig.panId = PAN_ID;
basicRfConfig.channel = RF_CHANNEL;
basicRfConfig.ackRequest = TRUE;
//初始化其他設(shè)備
halBoardInit();
halJoystickInit();
// 初始化射頻模塊
if(halRfInit()==FAILED){
HAL_ASSERT(FALSE);
}
halLedSet(1);//LED1燈亮,提示節(jié)點(diǎn)已上電
utilPrintLogo(“Light Switch”);
// 等待用戶按下S1進(jìn)入菜單
while(halButtonPushed()!=HAL_BUTTON_1);
halMcuWaitMs(350);//延時(shí)
halLcdClear();//清屏
// 設(shè)置該節(jié)點(diǎn)是開關(guān)還是電燈
appMode = appSelectMode();
halLcdClear();
// 模塊開始工作
if(appMode == SWITCH){
appSwitch();
}
else if(appMode == LIGHT){
appLight();
}
//如果沒有定義該節(jié)點(diǎn)的功能,則LED燈不斷閃爍
HAL_ASSERT(FALSE);
}
static uint8 appSelectMode(void)//模式選擇 {
halLcdWriteLine(1, “Device Mode: ”);
return utilMenuSelect(&pMenu);//通過調(diào)用頭文件實(shí)現(xiàn)功能選擇
}
實(shí)驗(yàn)總結(jié):
這個(gè)實(shí)驗(yàn)雖然功能非常簡單,只是通過按下開關(guān)節(jié)點(diǎn)的按鍵來控制電燈節(jié)點(diǎn)LED的亮或滅,但是通過這個(gè)實(shí)驗(yàn)可以了解節(jié)點(diǎn)間通信的基本思路。
原代碼中有許多可有可無的冗余代碼,上面的代碼經(jīng)過代碼中很多都是調(diào)用頭文件,在這里就不在一一羅列,只在代碼注釋中注明該調(diào)用的功能。這些調(diào)用都是一些非常簡單的操作,寫入頭文件調(diào)用是為了增加代碼可讀性。
baseRF通信基本流程
1.初始化網(wǎng)絡(luò)地址,打開接收機(jī)或關(guān)閉接收機(jī)。
2.初始化basicRfConfig,確定網(wǎng)絡(luò)ID、信道、是否需要應(yīng)答、是否采用加密機(jī)制等。
3.初始化周邊設(shè)備,如時(shí)鐘、各個(gè)I/O口等。
4.事件的處理,如發(fā)送報(bào)文或接受報(bào)文后的數(shù)據(jù)處理等。
第二篇:第4章 JavaScript 編程基礎(chǔ)實(shí)驗(yàn)
第4章 JavaScript 編程基礎(chǔ)
實(shí)驗(yàn) 1 猜數(shù)字游戲
實(shí)驗(yàn)說明:
這是一個(gè)經(jīng)典的小游戲,由計(jì)算機(jī)隨機(jī)生成一個(gè) 1 到 100 的數(shù)字,然后由玩家去猜,計(jì)算機(jī)給出提示。若玩家可以 10 次以內(nèi)猜中,算玩家贏(圖
4-1)。
圖
4-1 猜數(shù)字游戲
實(shí)驗(yàn)?zāi)康模?/p>
1.學(xué)會(huì)編寫 JavaScript 程序。
2.掌握訪問網(wǎng)頁中特定元素的方法。實(shí)驗(yàn)準(zhǔn)備:
一臺(tái)安裝好 Visual Web Developer 的計(jì)算機(jī) 實(shí)驗(yàn)步驟:
1.使用 Visual Web Developer 創(chuàng)建一個(gè)網(wǎng)站,向網(wǎng)站中添加一個(gè) GuessNumber.htm 網(wǎng)頁。
2.根據(jù)圖
4-2 設(shè)計(jì)網(wǎng)頁,其內(nèi)容如下:
注意兩個(gè)設(shè)定了 id 的 HTML 元素“”和“
3.請(qǐng)?jiān)诰W(wǎng)頁的
元素內(nèi)編寫 JavaScript 函數(shù) Guess(),實(shí)現(xiàn)游戲功能,整個(gè)代碼框架如下:要點(diǎn)提示:
(1)整個(gè)游戲的判斷邏輯需使用條件語句實(shí)現(xiàn)。
(2)可以使用 document.getElementById()方法訪問文本框元素,通過其 value 屬性取出用戶所輸入的數(shù)。
(3)使用 document.getElementById()方法訪問
(4)使用瀏覽器對(duì)象 location.Reload()方法重新刷新網(wǎng)頁,以便重新開始游戲。
4.設(shè)置“對(duì)不對(duì)”按鈕的單擊事件響應(yīng)函數(shù)為 Guess():
實(shí)驗(yàn) 2 動(dòng)態(tài)樣式設(shè)定
實(shí)驗(yàn)說明:
本實(shí)驗(yàn)將設(shè)計(jì)一個(gè)網(wǎng)頁,網(wǎng)頁上提供一個(gè)文字段落和四個(gè)單選鈕,分別表示四種樣式。用戶點(diǎn)擊選擇一種樣式,網(wǎng)頁動(dòng)態(tài)顯示出樣式應(yīng)用于文字段落的效果(圖
4-2)。
實(shí)驗(yàn)?zāi)康模?/p>
1.掌握給指定 HTML 元素動(dòng)態(tài)設(shè)定樣式的方法。2.能應(yīng)用盒子模型正確地布局網(wǎng)頁。
3.掌握為 HTML 控件編寫事件響應(yīng)函數(shù)的方法。實(shí)驗(yàn)準(zhǔn)備: 安裝好 Visual Web Developer 的一臺(tái)計(jì)算機(jī).2 閱讀 4.7.3 節(jié),了解如何編程動(dòng)態(tài)設(shè)置 HTML 元素的樣式類。實(shí)驗(yàn)步驟: 使用 Visual Web Developer 創(chuàng) 建 一 個(gè) 新 網(wǎng) 站,向 網(wǎng) 站 中 添 加 一 個(gè) 新 網(wǎng) 頁 :
DynamicChangeStyleClass.htm。根據(jù)示例網(wǎng)頁定出網(wǎng)頁邏輯結(jié)構(gòu)和主體元素:
請(qǐng)按照?qǐng)D 4-2 的顯示將上述代碼中“①”和“②”所代表的樣式表規(guī)則填上,其中: ① :填寫的樣式規(guī)則要使 div 盒子寬度合適(指大小剛好可以將段落文字分為多 行)并在瀏覽器窗口中居中顯示,由細(xì)實(shí)線邊框包圍。
② :填寫的樣式規(guī)則要使盒子中的四個(gè)單選鈕在瀏覽器窗口中居中顯示。給頁面添加以下樣式類,這些樣式類將被動(dòng)態(tài)地應(yīng)用于文字段落。完成以下的 JavaScript 函數(shù):
要點(diǎn)提示:
(1)使用 document.getElementById()獲取對(duì)文本段落的引用,然后通過此引用設(shè)置其className 屬性,就可以將指定的樣式類應(yīng)用于文字段落。
(2)要恢復(fù)默認(rèn)的樣式,只需將文字段落的 className 屬性設(shè)為 null。5 將 changestyle()函數(shù)與四個(gè)單選鈕的 onclick 事件掛接上(注意函數(shù)參數(shù)值的設(shè)定),一個(gè)示例如下: 在瀏覽器中打開網(wǎng)頁,查看效果。
實(shí)驗(yàn)三 客戶端表單基本驗(yàn)證
第三篇:簡單數(shù)控編程練習(xí)
簡單數(shù)控編程練習(xí)
華中數(shù)控簡單的編程做練習(xí)
螺紋的宏程序
%5
G54 G0 Z50
M03 S1200
#111=#(“#” 為刀尖的實(shí)際回轉(zhuǎn)半徑)
G0 X0 Y0
Z1.5(Z軸的起刀點(diǎn)定在正1.5是方便螺紋加工,向下加工的深度位置)
G42 G1 X19 Y0 D111 F100
M98 P11 L9(調(diào)用子程序9次)
G40 G0 X0 Y0
Z50
M30
%11
G91 G02 I-19 Z-1.5 F100(聯(lián)動(dòng)加工銑削螺紋)M99
9圈就到了Z負(fù)12
第四篇:實(shí)驗(yàn)一簡單的異步串行通信實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)一 簡單的異步串行通信實(shí)驗(yàn)
一、實(shí)驗(yàn)?zāi)康募耙?/p>
1、了解掌握RS-232接口標(biāo)準(zhǔn)以及 DB9的主要引腳功能;
2、了解掌握串口通信的基本原理;
3、學(xué)習(xí)掌握RS-232電纜的制作和測試方法;
4、學(xué)習(xí)掌握使用串口調(diào)試程序進(jìn)行串口之間的通信實(shí)驗(yàn)。
二、實(shí)驗(yàn)原理
1、異步串行通信原理
在計(jì)算機(jī)系統(tǒng)中,每個(gè)字符一般使用一個(gè) 8 位二進(jìn)制代碼表示。在數(shù)據(jù)通信中,通常將 傳送的每個(gè)字符的二進(jìn)制代碼按照由低位到高位的順序依次發(fā)送的方式稱為串行通信。圖 2-1 是串行通信的示意圖。由于串行通信只需在發(fā)送方和接收方之間建立一條通信信道,因 此可以減小通信系統(tǒng)的造價(jià)。在遠(yuǎn)程通信中,一般采用串行通信方式。
圖 1-1 串行通信示意圖
同步是數(shù)據(jù)通信中必須解決的一個(gè)重要問題。所謂同步就是要求通信的收發(fā)雙方在時(shí)間基準(zhǔn)上保持一致。在串行通信中,“異步”是同步收發(fā)雙方通信的重要方式。在異步串行通信中,每個(gè)字符作為一個(gè)獨(dú)立的整體進(jìn)行發(fā)送,字符之間的時(shí)間間隔可以是任意的。為了實(shí)現(xiàn)同步,需要在每個(gè)字符的第一位前加 1 位起始符(邏輯 1),并在字符的最后一位后加 1位、1.5 位或 2 位停止位(邏輯 0)。異步串行傳輸?shù)谋忍亓鹘Y(jié)構(gòu)如圖 2-2所示。
圖 1-2 異步串行傳輸?shù)谋忍亓鹘Y(jié)構(gòu)
常用的串行通信接口標(biāo)準(zhǔn)包括RS-232、RS-449、V.24、V.35等。其中,RS-232是最常 用的串行通信標(biāo)準(zhǔn)之一。個(gè)人計(jì)算機(jī)及終端系統(tǒng)中配備的串行接口幾乎都符合 RS-232 標(biāo)準(zhǔn)。
2、RS-232 接口標(biāo)準(zhǔn)
串行口是一種最基本的通信接口,基本上所有的個(gè)人計(jì)算機(jī)及通信終端設(shè)備都配有這種接口。RS-232 的主要內(nèi)容就 是定義數(shù)據(jù)終端設(shè)備DTE(data terminal equipment)和數(shù)據(jù)通信設(shè)備DCE(data circuit equipment)之間的接口標(biāo)準(zhǔn)。RS-232 是美國電子工業(yè)協(xié)會(huì) EIA 推薦使用的串行通信標(biāo)準(zhǔn)。其初衷是為了促進(jìn)利用電話網(wǎng)進(jìn)行數(shù)據(jù)通信應(yīng)用的發(fā)展,現(xiàn)在也普遍應(yīng)用于各類計(jì)算機(jī)或終端設(shè)備之間的短距離連接。
RS-232 使用的連接器包括 DB-
25、DB-15 和 DB-9 等幾種類型,不同類型連接器使用的引腳定義也各不相同。
計(jì)算機(jī) RS-232 串行通信的基本過程。圖 1-4 異步串行通信實(shí)驗(yàn)總體結(jié)構(gòu)示意圖
三、實(shí)驗(yàn)過程與實(shí)驗(yàn)步驟
1、使用制作的 RS-232電纜將 2臺(tái)計(jì)算機(jī)的可用 COM 口連接起來。
2、復(fù)制串口調(diào)試助手到硬盤上。
3、直接雙擊 “串口調(diào)試助手 3.0”運(yùn)行軟件。檢查串口線是否連接到計(jì)算機(jī)和設(shè)備上。確定串口(本機(jī)為com1)。在串口調(diào)試助手中打開串口:com1。
4、使用字符串收發(fā)
5、使用文件傳輸功能
使用文件傳輸功能,在 2 臺(tái)電腦上傳輸文件,這對(duì)于某些特定場合可以用到該功能。首先由接收一端在打開串口后,按下接收文件按鈕。
之后會(huì)彈出一個(gè)對(duì)話框,等待對(duì)方發(fā)送文件。
發(fā)送一端在打開串口后,先選擇發(fā)送文件(如下圖)
選擇文件后,按下發(fā)送按鈕,文件開始傳輸中,這時(shí) 2 端都可以看到發(fā)送的進(jìn)度條。發(fā)送完畢后,軟件會(huì)提示!
四、實(shí)驗(yàn)結(jié)果與分析:串口(com1)
1、正常發(fā)送:
(1)A機(jī):波特率相同(9600)、校驗(yàn)位相同(none)、數(shù)據(jù)位相同(8)、停止位相同(1)
B機(jī):波特率相同(9600)、校驗(yàn)位相同(none)、數(shù)據(jù)位相同(8)、停止位相同(1)結(jié)果:A機(jī)發(fā)“你好”,B機(jī)收“你好”,(圖1); B機(jī)發(fā)“哈哈”,A機(jī)收“哈哈”,(圖2);
圖1
圖2(2)、A機(jī):波特率相同(19200)、校驗(yàn)位相同(ODD)、數(shù)據(jù)位相同(8)、停止位相同(2)
B機(jī):波特率相同(19200)、校驗(yàn)位相同(ODD)、數(shù)據(jù)位相同(8)、停止位相同(2)結(jié)果:A機(jī)發(fā)“我很好”,B機(jī)收“我很好”;圖3); B機(jī)發(fā)“你呢”,A機(jī)收“你呢”;圖4);
圖3
圖4
2、波特率不同
A機(jī):波特率相同(4800)、校驗(yàn)位相同(ODD)、數(shù)據(jù)位相同(8)、停止位相同(1)B機(jī):波特率相同(9600)、校驗(yàn)位相同(ODD)、數(shù)據(jù)位相同(8)、停止位相同(1)結(jié)果:A機(jī)發(fā)“01 02 03”,B機(jī)收“胉”;(圖5); B機(jī)發(fā)“yjw”,A機(jī)收“?”;(圖6); 分析: 圖6
圖5 波特率控制采樣時(shí)間間隔,波特率不相同,收發(fā)雙方在 相等時(shí)間內(nèi)接收和發(fā)送數(shù)據(jù) 不一致。
3、數(shù)據(jù)位不同
A機(jī):波特率相同(9600)、校驗(yàn)位相同(ODD)、數(shù)據(jù)位相同(6)、停止位相同(1)B機(jī):波特率相同(9600)、校驗(yàn)位相同(ODD)、數(shù)據(jù)位相同(8)、停止位相同(1)結(jié)果:A機(jī)發(fā)“040506”,B機(jī)收“?”,(圖7); B機(jī)發(fā)“l(fā)ys”,A機(jī)收“,9>”,(圖8); 分析:數(shù)據(jù)位不相同,收發(fā)雙方在相等時(shí)間內(nèi)接收和發(fā)送數(shù)據(jù)不一致,所以結(jié)果不相同
圖7
圖8
4、奇偶校檢不同
(1)A機(jī):波特率相同(9600)、校驗(yàn)位相同(EVE)、數(shù)據(jù)位相同(8)、停止位相同(1)
B機(jī):波特率相同(9600)、校驗(yàn)位相同(ODD)、數(shù)據(jù)位相同(8)、停止位相同(1)結(jié)果:A機(jī)發(fā)“54 85 96 75”,B機(jī)收“54 85 96 75”;(圖9)B機(jī)發(fā)“第五種”,A機(jī)收“第五種”;(圖10)分析:因?yàn)樾r?yàn)位用于檢驗(yàn) 接收和發(fā)送的數(shù)據(jù)的正確性的,在最終轉(zhuǎn)換時(shí)會(huì)去除校驗(yàn)位,所以接收到的有效數(shù)據(jù)和發(fā)送的有效數(shù)據(jù)相同,發(fā)送與接收結(jié)果一樣。
圖9
圖10(2)A機(jī):波特率相同(9600)、校驗(yàn)位相同(NONE)、數(shù)據(jù)位相同(8)、停止位相同(1)
B機(jī):波特率相同(9600)、校驗(yàn)位相同(ODD)、數(shù)據(jù)位相同(8)、停止位相同(1)結(jié)果:A機(jī)發(fā)“54 85 96 75”,B機(jī)收“
”;(圖11)
B機(jī)發(fā)“第六種”,A機(jī)收“第六種”;(圖12)
分析:由于A機(jī)無校驗(yàn)位,B機(jī)有校驗(yàn)位,所以B機(jī)在收到數(shù)據(jù)并校檢,后會(huì)自動(dòng)去除校檢位以致發(fā)雙方的有校數(shù)據(jù)不一致,結(jié)果不一樣。
相反的。當(dāng)A機(jī)為接收方時(shí),雖然A機(jī)無檢驗(yàn)位,但是因?yàn)锳機(jī)已接收到8位數(shù)據(jù)故不接收B機(jī)發(fā)送的校檢位。結(jié)果一樣。
圖11
圖12
5、停止位不同
A機(jī):波特率相同(9600)、校驗(yàn)位相同(ODD)、數(shù)據(jù)位相同(8)、停止位不同(1)B機(jī):波特率相同(9600)、校驗(yàn)位相同(ODD)、數(shù)據(jù)位相同(8)、停止位不同(2)
圖13
結(jié)果:A機(jī)發(fā)“B機(jī)收“B機(jī)發(fā)“
”,A機(jī)收“
”,”;(圖13)”;(圖14)
圖14 分析:
5、發(fā)送文件
A機(jī):波特率相同(9600)、校驗(yàn)位相同(NONE)、數(shù)據(jù)位相同(8)、停止位相同(2)B機(jī):波特率相同(9600)、校驗(yàn)位相同(NONE)、數(shù)據(jù)位相同(8)、停止位相同(2)結(jié)果分析:
當(dāng)有校檢位時(shí),不可以接收文件;波特率不同、校驗(yàn)位不同、數(shù)據(jù)位同或停止位不同時(shí),文件無法接收;即唯有當(dāng)波特率相同、數(shù)據(jù)位相同、停止位相同且無校檢位時(shí),方可以正確接收文件。
五、思考并回答以下問題:
(1)在本實(shí)驗(yàn)中,RS—232 串口電纜處于 OSI 參考模型的什么位置?它的作用是什么?
答:處于OSI 參考模型的物理層,其作用是作為傳輸介質(zhì),連接通信的網(wǎng)絡(luò)節(jié)點(diǎn),實(shí)現(xiàn)比特流的透明傳輸,為數(shù)據(jù)鏈路層提供數(shù)據(jù)傳輸服務(wù)。
(2)在本實(shí)驗(yàn)中,數(shù)據(jù)和信號(hào)分別體現(xiàn)在 OSI參考模型的什么位置?兩者之間有何區(qū)別?
答:數(shù)據(jù)體現(xiàn)在數(shù)據(jù)鏈路層,信號(hào)體現(xiàn)在物理層。兩者區(qū)別在:數(shù)據(jù)鏈路層:為網(wǎng)絡(luò)層提供服務(wù)的,解決兩個(gè)相鄰結(jié)點(diǎn)之間的通信問題,傳送的協(xié)議數(shù)據(jù)單元稱為數(shù)據(jù)幀。物理層:OSI模型的最底層。它提出了網(wǎng)絡(luò)的物理特性,比如連接的電纜類型。這里是二進(jìn)制值0和1的世界,也就是數(shù)據(jù)以信號(hào)的電特性(高低電平)來表示。
(3)什么是波特率?為何兩臺(tái) PC 的波特率不同就不能正常通信?
答:波特率又稱調(diào)制速率、傳碼速率,記為Nbd,是指在數(shù)據(jù)通信系統(tǒng)中,每秒鐘傳輸信號(hào)碼元個(gè)數(shù),單位是波特。
在串口通信,一般包括起始位,數(shù)據(jù)位,校驗(yàn)位(可無)和停止位。以起始位為標(biāo)志,通信雙方進(jìn)行同步,然后發(fā)送方以一個(gè)固定的時(shí)間間隔進(jìn)行比特位的傳輸,接收方以一個(gè)固定的時(shí)間間隔進(jìn)行比特位的接收,如果雙方的波特率不同,就意味著發(fā)送方和接收方所采用的時(shí)間間隔不相等,就可能導(dǎo)致接收數(shù)據(jù)的錯(cuò)位。一般認(rèn)為通信雙方的波特率相差2.5%以內(nèi)可保證正常通信。
第五篇:socket編程實(shí)驗(yàn)心得體會(huì)
實(shí)驗(yàn)心得體會(huì)
在本次實(shí)驗(yàn)中,我通過對(duì)網(wǎng)絡(luò)課上所學(xué)知識(shí)的應(yīng)用,學(xué)到了很多實(shí)踐中的知識(shí)。并且加深了我對(duì)課本知識(shí)的理解和認(rèn)識(shí),在實(shí)驗(yàn)過程中,更容易記憶和深入理解各種協(xié)議的工作以及在網(wǎng)絡(luò)編程中應(yīng)該注意的一系列問題。
我們的第一個(gè)實(shí)驗(yàn)是對(duì)ARP、ICMP、FTP和HTTP協(xié)議的分析和驗(yàn)證。在利用軟件Etherpeek抓取在主機(jī)通信中的報(bào)文,得到了很多的關(guān)于這些協(xié)議的具體參數(shù)。在課程學(xué)習(xí)過程中,書本和老師給我的感覺就是太枯燥,通過課本的學(xué)習(xí)根本沒有辦法理解各種協(xié)議的工作細(xì)節(jié)。有很多的細(xì)微之處是想不通的。但是,在本次實(shí)驗(yàn)中,我就通過各種報(bào)文的分析,看到了網(wǎng)絡(luò)中不同層次協(xié)議之間的協(xié)做過程。對(duì)應(yīng)不同層之間就是通過協(xié)議來使用,我對(duì)整個(gè)網(wǎng)路的大體架構(gòu)有了一個(gè)統(tǒng)籌的了解,雖然對(duì)很多的更深入的知識(shí)不是很了解,但是比我在課上學(xué)的東西要更有趣,而且容易學(xué)習(xí),更能夠我學(xué)習(xí)的興趣。
第二個(gè)實(shí)驗(yàn)是Socket編程實(shí)驗(yàn)。在編寫網(wǎng)絡(luò)程序之前,我對(duì)網(wǎng)路通信可以說一無所知,根本不知道那些網(wǎng)路上的程序是怎么通過網(wǎng)路進(jìn)行通信的。在本次實(shí)驗(yàn)中,終于揭開了他們神秘的面紗。當(dāng)然在實(shí)驗(yàn)中出現(xiàn)了很多的插曲,我是在Linux環(huán)境下編寫的程序,很多技術(shù)方面的問題都無法解決。查閱書籍和網(wǎng)上咨詢才弄懂了他們的來龍去脈,最終是將我的程序編寫完了。開始接觸網(wǎng)路編程時(shí),那是一頭霧水,根本不知從何下手。在看了輔導(dǎo)教員給我們程序之后才有了很多的起色,才能夠自己編寫程序。在網(wǎng)絡(luò)編程中,我最深的體會(huì)就是對(duì)具體的內(nèi)部細(xì)節(jié)不熟悉,導(dǎo)致在調(diào)試的過程中感覺到很無力。在很多函數(shù)的作用下,經(jīng)常就是一團(tuán)亂麻。之后,我每次編寫之前就是將用到的函數(shù)的用法溫習(xí)一下,最后還是能夠解決很多的問題的。
本次試驗(yàn)是我們學(xué)習(xí)網(wǎng)路的第一次。以前的課程從來沒有接觸到網(wǎng)路方面的知識(shí)。這次的新知識(shí)對(duì)我們的挑戰(zhàn)還算不是太大,通過我們的努力,所有的困難時(shí)被克服掉了。其實(shí),實(shí)驗(yàn)應(yīng)該是我們的重點(diǎn),在以后的工作中要的就是我們的實(shí)際的動(dòng)手能力,如果我們?cè)趯W(xué)習(xí)期間就是只學(xué)了書本上的知識(shí),那樣對(duì)理論的了解是不夠深刻的,只有通過實(shí)驗(yàn)才能激發(fā)我們的學(xué)習(xí)興趣??傊?,我覺得實(shí)驗(yàn)才是檢驗(yàn)理論的唯一標(biāo)準(zhǔn)。


文檔為doc格式
聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。
實(shí)驗(yàn)三GUI編程
實(shí)驗(yàn)三GUI編程 一、實(shí)驗(yàn)?zāi)康模?1、了解Java系統(tǒng)圖形用戶界面的基本工作原理和界面設(shè)計(jì)的步驟 2、了解圖形用戶界面的事件響應(yīng)機(jī)制. 3、掌握?qǐng)D形用戶界面各種常用的基本組件的......
Android編程基礎(chǔ)教學(xué)大綱
《Android編程初級(jí)》教學(xué)大綱 2013-11-21修訂版 一、 課程教學(xué)目標(biāo): (一) 知識(shí)目標(biāo) 本課程要求學(xué)生熟練使用LinearLayout線性布局及RelativeLayout相對(duì)布局完成UI界面設(shè)計(jì),靈......
pascal編程基礎(chǔ)練習(xí)題
pascal編程基礎(chǔ)練習(xí)題 一、不定項(xiàng)選擇和填空題 1、下列關(guān)于程序語言的敘述,不正確的是( ) A、編寫機(jī)器代碼不比編寫匯編代碼容易 B、高級(jí)語言需要編譯成目標(biāo)代碼或通過解釋器解釋......
Java基礎(chǔ)編程題
【程序1】題目:古典問題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長到第三個(gè)月后每個(gè)月又生一對(duì)兔子,假如兔子都不死,問每個(gè)月的兔子總數(shù)為多少?1.程序分析: 兔子的......
通信實(shí)驗(yàn)心得體會(huì)
在做實(shí)驗(yàn)之前以為并不難做像以前做過的實(shí)驗(yàn)一樣完實(shí)驗(yàn)以 后兩下子就可以把實(shí)驗(yàn)報(bào)告寫完。直到做完了實(shí)驗(yàn)以后才真正的認(rèn)識(shí)到其 實(shí)這并不容易一件很挑戰(zhàn)的事情而學(xué)到的知識(shí)與......
MFC編程實(shí)驗(yàn)個(gè)人總結(jié)報(bào)告
MFC編程實(shí)驗(yàn)總結(jié)報(bào)告 知識(shí)總結(jié)+個(gè)人心得 2011年暑期MFC編程實(shí)驗(yàn)報(bào)告 1 / 6 MFC編程實(shí)驗(yàn)個(gè)人總結(jié)報(bào)告 一、MFC類、函數(shù)等知識(shí)小結(jié): 1、SetTimer (1, m_intLevel, NULL); 在......
Java編程語言基礎(chǔ)總結(jié)
第一章初識(shí)Java 1.程序是為了讓計(jì)算機(jī)執(zhí)行某些操作或解決某個(gè)問題而編寫的一系列有序指令的集合。 2.Java包括編程語言和相關(guān)的技術(shù)。 3.Java主要用于開發(fā),桌面應(yīng)用程序和Int......
編程入門基礎(chǔ)知識(shí)點(diǎn)總結(jié)
一、 常量 ? 數(shù)字常量 i. 普通數(shù)字:1,35,2.7 ii. 指數(shù)形式:2.45e-2等價(jià)于2.45*10-2 注意e大小寫皆可,e前面的數(shù)字不能省,就算是1也不能省,后面的數(shù)字一定要是整數(shù) iii. 長整型,單精......