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