新聞中心

EEPW首頁 > 電源與新能源 > 設(shè)計應(yīng)用 > 單網(wǎng)絡(luò)節(jié)點在WinCE系統(tǒng)下的程序設(shè)計

單網(wǎng)絡(luò)節(jié)點在WinCE系統(tǒng)下的程序設(shè)計

作者: 時間:2014-02-16 來源:網(wǎng)絡(luò) 收藏

1.系統(tǒng)

所謂節(jié)點簡單而言就是指的具有收發(fā)數(shù)據(jù)功能的電腦或其他設(shè)備。一個好的節(jié)點既需要選擇好的硬件的支持,也需要選擇適合的軟件控制[1],本文選擇S3C6410的Arm11芯片作為節(jié)點CPU,選擇WindowsCE 6.0作為運行在ARM上的嵌入式操作系統(tǒng),通過網(wǎng)口,串口,SD卡完成相應(yīng)的數(shù)據(jù)通信功能。本文研究的節(jié)點硬件結(jié)構(gòu)框圖如圖1所示。

單網(wǎng)絡(luò)節(jié)點在WinCE系統(tǒng)下的程序設(shè)計

2.WinCE下網(wǎng)口數(shù)據(jù)傳輸程序設(shè)計

2.1 網(wǎng)口服務(wù)器程序設(shè)計

在利用套接字進行網(wǎng)絡(luò)通信的實際應(yīng)用中,一般采用的是服務(wù)器/客戶端[2]

的模式,在本文的設(shè)計中,既研究了以PC機作為服務(wù)器端,以ARM作為客戶端,又研究了以ARM作為服務(wù)器端,以PC機作為客戶端。本文服務(wù)器設(shè)計的基本流程為:

利用函數(shù)socket()創(chuàng)建一個套接字,然后利用函數(shù)bind()將該套接字與本地(PC機)的IP地址和端口號綁定,接著利用函數(shù)listen()使該套接字處于監(jiān)聽狀態(tài),然后當(dāng)?shù)却娇蛻舳说倪B接信號后,利用函數(shù)accept()與客戶端連接,最后利用函數(shù)send()和函數(shù)recv()進行通信工作。當(dāng)結(jié)束通信后,再利用函數(shù)closesocket()將套接字關(guān)閉。

2.2 本文的服務(wù)器端程序設(shè)計思想

本文的服務(wù)器端程序設(shè)計思想如圖2所示。

單網(wǎng)絡(luò)節(jié)點在WinCE系統(tǒng)下的程序設(shè)計
3.WinCE下AD數(shù)據(jù)采集程序設(shè)計
3.1 ARM板AD采集器驅(qū)動程序設(shè)計
流接口驅(qū)動就是通過調(diào)用動態(tài)連接庫的方式來加載硬件的功能,它由設(shè)備管理器直接調(diào)用。下的流接口驅(qū)動編寫,有著固定的接口入口點,其接口點是一系列的類似于XXX_Open()結(jié)構(gòu)的函數(shù)集。由這些函數(shù)集來調(diào)用系統(tǒng)的文件API函數(shù)和相應(yīng)的組件。本文設(shè)計的是AD采集器的流接口驅(qū)動,接口入口點(即函數(shù)集)和用途如下所描述:
(1)函數(shù)ADC_Init(),該函數(shù)用于初始化AD采集器設(shè)備,為系統(tǒng)的設(shè)備管理器所調(diào)用。
(2)函數(shù)ADC_Denit(),該函數(shù)用于卸載AD采集器設(shè)備,為系統(tǒng)的設(shè)備管理器所調(diào)用。
(3)函數(shù)ADC_Open(),該函數(shù)用于打開AD采集器設(shè)備,被系統(tǒng)的文件API函數(shù)CreateFile()調(diào)用。
(4)函數(shù)ADC_Close(),該函數(shù)用于關(guān)閉AD采集器設(shè)備,被系統(tǒng)的文件API函數(shù)CloseHandle()調(diào)用。
(5)函數(shù)ADC_Read(),該函數(shù)用于從AD采集器讀取數(shù)據(jù),被系統(tǒng)的文件API函數(shù)ReadFile()調(diào)用。
(6)函數(shù)ADC_Write(),該函數(shù)用于向AD采集器寫入數(shù)據(jù),被系統(tǒng)的文件API函數(shù)WriteFile()調(diào)用。
(7)函數(shù)ADC_IOControl(),該函數(shù)用于對AD采集器進行I/O操作,被系統(tǒng)的文件API函數(shù)DeviceIOControl()調(diào)用。
需要提出來的是本文研究的A D采集器不涉及到電源管理和設(shè)備指針的操作。
而需要用到這兩個方面操作的流接口設(shè)備驅(qū)動程序,還需要添加函數(shù)XXX_Seek(),函數(shù)X X X _ P o w e r D o w n ( ) 和函數(shù)X X X _PowerUp()。其作用分別是對XXX設(shè)備進行移動數(shù)據(jù)指針,休眠和恢復(fù)電源。
3.2 WinCE下四通道AD采集應(yīng)用程序設(shè)計
本研究采用的ARM提供了四個外部的AD通道,可以利用這些通道實現(xiàn)四路對模擬數(shù)據(jù)的采集功能。通過EVC++編寫應(yīng)用軟件調(diào)用AD流接口驅(qū)動程序,實現(xiàn)對模擬信號的采集,將采集的數(shù)據(jù)通過網(wǎng)口發(fā)送到PC機端。該設(shè)計采用多線程方式,使AD采集,數(shù)據(jù)處理,網(wǎng)口通信模塊化,并采用雙buff采集和發(fā)送的交互方式,保證了數(shù)據(jù)的不丟失性。網(wǎng)口通信模塊直接運用前面設(shè)計的網(wǎng)口通信流程,數(shù)據(jù)處理模塊主要是對采集得到的數(shù)字信號數(shù)據(jù)由分線程向外部buff傳輸,便于通信模塊的使用。AD采集模塊在線程內(nèi)調(diào)用驅(qū)動程序,實現(xiàn)AD采集器的讀取數(shù)據(jù)功能。
3.3 四通道AD數(shù)據(jù)采集實驗實現(xiàn)及調(diào)試
利用以上的設(shè)計思路,本文實現(xiàn)了下AD數(shù)據(jù)采集的系統(tǒng)設(shè)計,其調(diào)試過程和實驗結(jié)果如下:
首先將編寫好的驅(qū)動程序加載到Win-CE6.0系統(tǒng)的內(nèi)核中,重新編譯系統(tǒng),啟動新編譯成功的,可以在Windows文件夾下看到已經(jīng)加載進去的驅(qū)動程序生成的動態(tài)鏈接庫。
然后將編寫好的對采集數(shù)據(jù)進行波形處理的網(wǎng)絡(luò)程序在PC端啟動,再將編寫好的四通道采集程序下載到ARM板中并啟動,設(shè)置好采樣率和采樣通道,輸入通道選擇0,采樣頻率設(shè)置為400000hz(該AD采集器最大采樣頻率為500khz)。調(diào)好信號源,選擇正弦波,將信號電壓幅度設(shè)為1.5v,最低電壓為0v,信號頻率為3000hz,輸出信號線連接到ARM板的AD第0號通道接口,啟動信號輸入,在ARM端得到如圖3的調(diào)試截圖。
單網(wǎng)絡(luò)節(jié)點在WinCE系統(tǒng)下的程序設(shè)計
這是本文設(shè)計的運行在ARM板上的AD采集應(yīng)用程序,可以通過啟動,停止,關(guān)閉按鈕來啟動AD采集,暫停AD采集,關(guān)閉AD采集器的功能,還可以通過輸入通道號碼來選擇采樣的通道,輸入采樣率來選擇采樣頻率。而上方控件顯示的是一次采集的字節(jié)數(shù)目,在這里是2048字節(jié),與程序?qū)嶋H設(shè)計的一致。通過AD采集器的正確工作,不僅說明了應(yīng)用程序設(shè)計的正確性,同時也體現(xiàn)了AD采集器驅(qū)動程序設(shè)計的正確性。
4.結(jié)束語
本文通過研究WinCE下的網(wǎng)口通信,串口通信,SD卡數(shù)據(jù)存取和AD數(shù)據(jù)采集程序設(shè)計,系統(tǒng)地提供了Wince嵌入式系統(tǒng)下數(shù)據(jù)通信的一般編程方法。本論文實現(xiàn)了水下通信網(wǎng)絡(luò)單節(jié)點內(nèi)部數(shù)據(jù)的交互,主要包含以下內(nèi)容:完成了ARM板通過網(wǎng)口與DSP通信的程序設(shè)計;完成了ARM板通過串口同時與PC機和姿態(tài)方位儀的數(shù)據(jù)通信的程序設(shè)計;完成了ARM板對SD卡的操作,實現(xiàn)了將DSP通過網(wǎng)口傳輸來的數(shù)據(jù)自動的儲存在SD卡中,并能讀取SD卡中的數(shù)據(jù);完成了ARM11流接口AD驅(qū)動程序的設(shè)計和AD采集應(yīng)用程序的設(shè)計。


評論


技術(shù)專區(qū)

關(guān)閉