0 引言
隨著人工智能的應用,ARM產品已經遍布到各個領域:工業控制、無線通訊領域、消費類電子產品、成像和安全產品,包括現在流行的數碼相機和打印機中絕大部分采用ARM技術,手機中的32位SIM智能卡也采用了ARM技術。除此以外,ARM微處理器及技術還應用到許多不同的領域,并會在將來取得更加廣泛的應用,因此,ARM與其它平臺之間通訊就顯得尤為重要。
1.UDP協議本質
UDP協議是英文User Datagram Protocol的縮寫,即用戶數據報協議,主要用來支持那些需要在計算機之間傳輸數據的網絡應用。包括網絡視頻會議系統在內的眾多客戶/服務器模式的網絡應用都需要使用UDP協議。UDP協議從問世至今已經被使用了很多年,雖然其最初的光彩已經被一些類似協議所掩蓋,但即使是在今天,UDP仍然不失為一項非常實用和可行的網絡傳輸層協議。
UDP協議使用端口號為不同的應用保留其各自的數據傳輸通道。UDP和TCP協議正是采用這一機制實現對同一時刻內多項應用同時發送和接收數據的支持。數據發送一方(可以是客戶端或服務器端)將UDP數據報通過源端口發送出去,而數據接收一方則通過目標端口接收數據。有的網絡應用只能使用預先為其預留或注冊的靜態端口;而另外一些網絡應用則可以使用未被注冊的動態端口。因為UDP報頭使用兩個字節存放端口號,所以端口號的有效范圍是從0到65535.一般來說,大于49151的端口號都代表動態端口。
數據報的長度是指包括報頭和數據部分在內的總的字節數。因為報頭的長度是固定的,所以該域主要被用來計算可變長度的數據部分(又稱為數據負載)。數據報的最大長度根據工作環境的不同而各異。從理論上說,包含報頭在內的數據報的最大長度為65535字節。不過,一些實際應用往往會限制數據報的大小,有時會降低到8192字節。
UDP協議使用報頭中的校驗值來保證數據的安全。校驗值首先在數據發送方通過特殊的算法計算得出,在傳遞到接收方之后,還需要再重新計算。
如果某個數據報在傳輸過程中被第三方篡改或者由于線路噪音等原因受到損壞,發送和接收方的校驗計算值將不會相符,由此UDP協議可以檢測是否出錯。其實在UDP協議中校驗功能是可選的,如果將其關閉可以使系統的性能有所提升。這與TCP協議是不同的,后者要求必須具有校驗值。
2.實現案例
實現案例如下:在觸摸屏進行畫圖,使其在液晶屏上顯示,同時通過網絡傳輸數據,使其在計算機屏幕上顯示,并由計算機控制清除液晶屏上的圖形。
步驟如下:
?。?)新建工程
?。?)在main.c文件中編輯初始化網絡函數void InitNetWork()//初始化網絡{
U32 ipaddr32,ipmaskaddr32,ipgateaddr32;
U8 *Mac;
ipaddr32=Get_ipaddr(); //獲取IP地址
ipmaskaddr32=Get_maskaddr();//獲取子網掩碼
ipgateaddr32=Get_gwaddr(); //獲取網關
Mac=Get_mac(); //獲取網卡地址NetPortChoose(0);
//選擇網口,必須在配置網絡以前進行
initOSNet(ipaddr32, ipmaskaddr32,
ipgateaddr32,Mac);//配置網絡
OSTimeDly(1000);//任務掛起1秒
printk(“init Ethernet and UDP is
ok! ”);
}
?。?)定義計算機端套接字,全局變量(4)編寫Main_Task任務及消息循環主要負責響應觸摸屏消息,在屏幕上畫圖,然后將數據傳輸到計算機上。
對觸摸屏消息的處理和鍵盤消息類似,其消息類型pMsg-》Message為OSM_TOUCH_SCREEN,消息參數pMsg-》LParam中包含了觸摸屏的動作信息,定義如下:
0
#define TCHSCR_ACTION_CLICK 1 //觸摸
屏單擊
#define TCHSCR_ACTION_DBCLICK 2 //觸
摸屏雙擊
#define TCHSCR_ACTION_DOWN 3 //觸摸
屏按下
#define TCHSCR_ACTION_UP 4 //觸摸
屏抬起
#define TCHSCR_ACTION_MOVE 5 //觸摸
屏移動
消息參數pMsg-》WParam中則包含了觸摸
點的坐標信息,低16位是X坐標值,高16位是Y坐標值。這里當觸摸屏產生“按下”動作后采用MoveTo()函數設置繪圖起始點坐標,當產生“移動”動作后采用LineTo()函數繪制線段。
評論