單網(wǎng)絡(luò)節(jié)點(diǎn)在WinCE系統(tǒng)下的程序設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1.單網(wǎng)絡(luò)節(jié)點(diǎn)系統(tǒng)
所謂節(jié)點(diǎn)簡(jiǎn)單而言就是指的具有收發(fā)數(shù)據(jù)功能的電腦或其他設(shè)備。一個(gè)好的節(jié)點(diǎn)既需要選擇好的硬件的支持,也需要選擇適合的軟件控制[1],本文選擇S3C6410的Arm11芯片作為節(jié)點(diǎn)CPU,選擇WindowsCE 6.0作為運(yùn)行在ARM上的嵌入式操作系統(tǒng),通過網(wǎng)口,串口,SD卡完成相應(yīng)的數(shù)據(jù)通信功能。本文研究的節(jié)點(diǎn)硬件結(jié)構(gòu)框圖如圖1所示。
2.WinCE下網(wǎng)口數(shù)據(jù)傳輸程序設(shè)計(jì)
2.1 網(wǎng)口服務(wù)器程序設(shè)計(jì)
在利用套接字進(jìn)行網(wǎng)絡(luò)通信的實(shí)際應(yīng)用中,一般采用的是服務(wù)器/客戶端[2]
的模式,在本文的設(shè)計(jì)中,既研究了以PC機(jī)作為服務(wù)器端,以ARM作為客戶端,又研究了以ARM作為服務(wù)器端,以PC機(jī)作為客戶端。本文服務(wù)器設(shè)計(jì)的基本流程為:
利用函數(shù)socket()創(chuàng)建一個(gè)套接字,然后利用函數(shù)bind()將該套接字與本地(PC機(jī))的IP地址和端口號(hào)綁定,接著利用函數(shù)listen()使該套接字處于監(jiān)聽狀態(tài),然后當(dāng)?shù)却娇蛻舳说倪B接信號(hào)后,利用函數(shù)accept()與客戶端連接,最后利用函數(shù)send()和函數(shù)recv()進(jìn)行通信工作。當(dāng)結(jié)束通信后,再利用函數(shù)closesocket()將套接字關(guān)閉。
2.2 本文的服務(wù)器端程序設(shè)計(jì)思想
本文的服務(wù)器端程序設(shè)計(jì)思想如圖2所示。
3.WinCE下AD數(shù)據(jù)采集程序設(shè)計(jì)
3.1 ARM板AD采集器驅(qū)動(dòng)程序設(shè)計(jì)
流接口驅(qū)動(dòng)就是通過調(diào)用動(dòng)態(tài)連接庫的方式來加載硬件的功能,它由設(shè)備管理器直接調(diào)用。WinCE系統(tǒng)下的流接口驅(qū)動(dòng)編寫,有著固定的接口入口點(diǎn),其接口點(diǎn)是一系列的類似于XXX_Open()結(jié)構(gòu)的函數(shù)集。由這些函數(shù)集來調(diào)用系統(tǒng)的文件API函數(shù)和相應(yīng)的組件。本文設(shè)計(jì)的是AD采集器的流接口驅(qū)動(dòng),接口入口點(diǎn)(即函數(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ù)用于對(duì)AD采集器進(jìn)行I/O操作,被系統(tǒng)的文件API函數(shù)DeviceIOControl()調(diào)用。
需要提出來的是本文研究的A D采集器不涉及到電源管理和設(shè)備指針的操作。
而需要用到這兩個(gè)方面操作的流接口設(shè)備驅(qū)動(dòng)程序,還需要添加函數(shù)XXX_Seek(),函數(shù)X X X _ P o w e r D o w n ( ) 和函數(shù)X X X _PowerUp()。其作用分別是對(duì)XXX設(shè)備進(jìn)行移動(dòng)數(shù)據(jù)指針,休眠和恢復(fù)電源。
3.2 WinCE下四通道AD采集應(yīng)用程序設(shè)計(jì)
本研究采用的ARM提供了四個(gè)外部的AD通道,可以利用這些通道實(shí)現(xiàn)四路對(duì)模擬數(shù)據(jù)的采集功能。通過EVC++編寫應(yīng)用軟件調(diào)用AD流接口驅(qū)動(dòng)程序,實(shí)現(xiàn)對(duì)模擬信號(hào)的采集,將采集的數(shù)據(jù)通過網(wǎng)口發(fā)送到PC機(jī)端。該設(shè)計(jì)采用多線程方式,使AD采集,數(shù)據(jù)處理,網(wǎng)口通信模塊化,并采用雙buff采集和發(fā)送的交互方式,保證了數(shù)據(jù)的不丟失性。網(wǎng)口通信模塊直接運(yùn)用前面設(shè)計(jì)的網(wǎng)口通信流程,數(shù)據(jù)處理模塊主要是對(duì)采集得到的數(shù)字信號(hào)數(shù)據(jù)由分線程向外部buff傳輸,便于通信模塊的使用。AD采集模塊在線程內(nèi)調(diào)用驅(qū)動(dòng)程序,實(shí)現(xiàn)AD采集器的讀取數(shù)據(jù)功能。
3.3 四通道AD數(shù)據(jù)采集實(shí)驗(yàn)實(shí)現(xiàn)及調(diào)試
利用以上的設(shè)計(jì)思路,本文實(shí)現(xiàn)了WinCE系統(tǒng)下AD數(shù)據(jù)采集的系統(tǒng)設(shè)計(jì),其調(diào)試過程和實(shí)驗(yàn)結(jié)果如下:
首先將編寫好的驅(qū)動(dòng)程序加載到Win-CE6.0系統(tǒng)的內(nèi)核中,重新編譯系統(tǒng),啟動(dòng)新編譯成功的WinCE系統(tǒng),可以在Windows文件夾下看到已經(jīng)加載進(jìn)去的驅(qū)動(dòng)程序生成的動(dòng)態(tài)鏈接庫。
然后將編寫好的對(duì)采集數(shù)據(jù)進(jìn)行波形處理的網(wǎng)絡(luò)程序在PC端啟動(dòng),再將編寫好的四通道采集程序下載到ARM板中并啟動(dòng),設(shè)置好采樣率和采樣通道,輸入通道選擇0,采樣頻率設(shè)置為400000hz(該AD采集器最大采樣頻率為500khz)。調(diào)好信號(hào)源,選擇正弦波,將信號(hào)電壓幅度設(shè)為1.5v,最低電壓為0v,信號(hào)頻率為3000hz,輸出信號(hào)線連接到ARM板的AD第0號(hào)通道接口,啟動(dòng)信號(hào)輸入,在ARM端得到如圖3的調(diào)試截圖。
這是本文設(shè)計(jì)的運(yùn)行在ARM板上的AD采集應(yīng)用程序,可以通過啟動(dòng),停止,關(guān)閉按鈕來啟動(dòng)AD采集,暫停AD采集,關(guān)閉AD采集器的功能,還可以通過輸入通道號(hào)碼來選擇采樣的通道,輸入采樣率來選擇采樣頻率。而上方控件顯示的是一次采集的字節(jié)數(shù)目,在這里是2048字節(jié),與程序?qū)嶋H設(shè)計(jì)的一致。通過AD采集器的正確工作,不僅說明了應(yīng)用程序設(shè)計(jì)的正確性,同時(shí)也體現(xiàn)了AD采集器驅(qū)動(dòng)程序設(shè)計(jì)的正確性。
4.結(jié)束語
本文通過研究WinCE下的網(wǎng)口通信,串口通信,SD卡數(shù)據(jù)存取和AD數(shù)據(jù)采集程序設(shè)計(jì),系統(tǒng)地提供了Wince嵌入式系統(tǒng)下數(shù)據(jù)通信的一般編程方法。本論文實(shí)現(xiàn)了水下通信網(wǎng)絡(luò)單節(jié)點(diǎn)內(nèi)部數(shù)據(jù)的交互,主要包含以下內(nèi)容:完成了ARM板通過網(wǎng)口與DSP通信的程序設(shè)計(jì);完成了ARM板通過串口同時(shí)與PC機(jī)和姿態(tài)方位儀的數(shù)據(jù)通信的程序設(shè)計(jì);完成了ARM板對(duì)SD卡的操作,實(shí)現(xiàn)了將DSP通過網(wǎng)口傳輸來的數(shù)據(jù)自動(dòng)的儲(chǔ)存在SD卡中,并能讀取SD卡中的數(shù)據(jù);完成了ARM11流接口AD驅(qū)動(dòng)程序的設(shè)計(jì)和AD采集應(yīng)用程序的設(shè)計(jì)。