<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于Web的單片機遠程監控系統的設計與實(shí)現

基于Web的單片機遠程監控系統的設計與實(shí)現

作者: 時(shí)間:2012-05-24 來(lái)源:網(wǎng)絡(luò ) 收藏

基于Web的單片機遠程監控系統的設計與實(shí)現

圖4 軟件框圖

3.2 RTL8019 接收與發(fā)送數據

1.RTL8019 芯片初始化主要是將網(wǎng)卡設置成正常的模式,跟外部網(wǎng)絡(luò )連接。清除所有中斷標志位,讓芯片開(kāi)始工作。

2.對RTL8019 接收數據操作,有查詢(xún)和中斷兩種方式。因為的速度和PC 機相差太遠,而且還有一些采集任務(wù),本系統不采用中斷方式,用查詢(xún)方式。在查詢(xún)方式下,通過(guò)查詢(xún)CURR 和BNRY 兩個(gè)寄存器的值來(lái)判斷是否收到一幀數據。當BNRY+1 與CURR不相等,說(shuō)明接收緩沖區接收到了新的數據幀。圖5 為RTL8019 報頭格式,接收部分子程序如下:

UCHAR xdata * rcve_frame(void) //如收到有效數據包,返回收到的數據,否則返回NULL

基于Web的單片機遠程監控系統的設計與實(shí)現

圖5 RTL8019 報頭格式

3.數據的發(fā)送包含三個(gè)步驟:封裝數據包;通過(guò)遠程DMA 將數據包送入RTL8019AS的數據發(fā)送緩沖區;通過(guò)RTL8019 的本地DMA 將數據送入FIFO 進(jìn)行發(fā)送。具體過(guò)程如下:

(1)包在發(fā)送前應該按規定的格式封裝好,格式如下圖6 所示:

基于Web的單片機遠程監控系統的設計與實(shí)現

圖6 MAC 幀首部

(2)把上面的數據包通過(guò)遠程DMA 寫(xiě)入RTL8019AS 的數據發(fā)送緩沖區;

(3)啟動(dòng)本地DMA,把數據發(fā)送出去,數據包長(cháng)度最小為60 字節,最大1514 字節。

發(fā)送子程序為:void send_frame(UCHAR xdata * outbuf,UINT len)//發(fā)送一個(gè)數據包3.3 TCP/IP 協(xié)議棧的實(shí)現。

3.3.1 ARP 協(xié)議的實(shí)現

ARP 地址解析協(xié)議的本質(zhì)是完成網(wǎng)絡(luò )地址到物理地址的映射。物理地址有以太網(wǎng)和令牌環(huán)網(wǎng)兩種基本類(lèi)型,網(wǎng)絡(luò )地址特指IP 地址。具體到以太網(wǎng),使用的是動(dòng)態(tài)綁定轉換的方法,但是會(huì )遇到許多細節問(wèn)題,例如減少廣播,ARP 包丟失,物理地址變更(更換網(wǎng)卡)、移動(dòng)(移動(dòng)設備到另一子網(wǎng))、消失(關(guān)機)等。一般是設置ARP 高速緩存,通過(guò)學(xué)習、老化、更新、溢出算法處理ARP 映射表來(lái)解決這些問(wèn)題。整個(gè)ARP 處理過(guò)程,主要用5 個(gè)函數實(shí)現。

在實(shí)現網(wǎng)卡驅動(dòng)程序后,所有ARP 處理操作就是填寫(xiě)ARP 包。主要程序代碼編制如下:

(1)void init_arp(void)//完成ARP 表初始化,概括說(shuō)就是ARP 表state 字段清0

(2)void arp_send(UCHAR * hwaddr,ULONG ipaddr,UCHAR msg_type)//完成ARP 請求

(3)void arp_rcve(UCHAR xdata * inbuf)// 完成響應操作

(4)UCHAR xdata * arp_resolve(ULONG dest_ipaddr) //完成從cache 里面查找對應//IP 地址的物理地址,如果沒(méi)有,就發(fā)送ARP 請求

3.3.2 IP 協(xié)議的實(shí)現

網(wǎng)際協(xié)議 IP 是TCP/IP 協(xié)議族中最為核心的協(xié)議,它的主要功能是負責把數據交付給主機,當目標主機與原主機處于不同的物理網(wǎng)絡(luò )中時(shí),IP 負責把數據包路由到相應的目標網(wǎng)絡(luò )上。Internet 上所有的數據都以IP 數據包格式傳輸。IP 協(xié)議最大的特點(diǎn)是提供不可靠的和無(wú)連接的數據包傳送服務(wù)。IP 協(xié)議主要實(shí)現以下兩個(gè)子程序:

(1) void ip_send(UCHAR xdata*outbuf,ULONG ipaddr, UCHAR proto_ id,DINT len)//發(fā)送IP 數據;該子程序用來(lái)創(chuàng )建一個(gè)發(fā)送數據報。

(2) void ip_rcve(UCHAR xdata *inbuf) //接收IP 數據;該子程序檢測一個(gè)外來(lái)數據包,并對數據包作相應的處理。

單片機相關(guān)文章:單片機教程


單片機相關(guān)文章:單片機視頻教程


單片機相關(guān)文章:單片機工作原理




關(guān)鍵詞: Web 單片機 遠程監控系統

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>