999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于MFC的AUV多傳感器數據采集系統設計及測試

2014-12-18 11:53:51高菲張東昆侯建釗
現代電子技術 2014年24期
關鍵詞:多傳感器

高菲+張東昆+侯建釗

摘 ?要: 由于海底環境的復雜性與任務的多樣性,這就對AUV航向位姿環境等信息的實時性和可靠性提出很高的要求。為了降低海試成本和風險,以智能小車為硬件平臺,裝載AHRS、GPS、激光測距儀(LMS)等多個傳感器,組成數據采集系統,采用模塊化分布,使用多線程編程技術和串口通信技術,創建基于對話框的MFC應用程序,實現人機交互。

關鍵詞: AUV; 多傳感器; 串口通信; 多線程編程; MFC

中圖分類號: TN964?34 ? ? ? ? ? ? ? ? ? 文獻標識碼: A ? ? ? ? ? ? ? ? ? ? ? ? ? ?文章編號: 1004?373X(2014)24?0130?03

Design and test for AUV multi?sensor data acquisition system ?based on MFC

GAO Fei, ZHANG Dong?kun, HOU Jian?zhao

(College of Information Science and Engineering, Ocean University of China, Qingdao 266100, China)

Abstract: In the 21st century, the ocean resources have been attracting more and more attentions from human, and AUV research has gradually become the mainstream trend. A higher requirement for the real?time performance and reliability of the heading, altitudes and location information of AUV is proposed Due to the complexity of underwater environment and varieties of task. In order to reduce the test cost and risk on sea, an intelligent vehicle is taken as a platform with AHRS, GPS, laser range finder and several sensors to constitute a data acquisition system, and modular distribution, multi?thread programming technology and serial port communication technology are adopted to establish a MFC application program based on dialog box, so as to realize the human?computer interaction.

Keywords: AUV; multi?sensor; serial communication; multithread programming; MFC

眾所周知,海洋底部蘊藏著非常豐富的生物及礦產資源,自主式水下機器人(AUV)作為一種高技術手段,在海洋開發和利用中扮演重要的角色,受到各國特別是發達國家的高度重視。除了軍事海洋方面,學術界也對AUV進行了大量的研究工作[1]。2002年,Oxford的Paul Newman提出MOOS系統,每個傳感器作為獨立進程,通過數據庫MOOSDB按照UDP協議進行通信[2]。MIT的Benjamin在MOOS中加入IvP算法,實現AUV的自主決策[3]。

MIT的Albert S.Huang提出了LCM系統,利用模塊化分布,基于TCP/IP協議實現數據可靠傳輸[4]。該系統也采用模塊化分布模塊,但是采用多線程體系,通過RS 232串口通信協議傳輸數據。

1 ?數據采集系統簡介

數據采集系統主要包括4個模塊:控制界面、數據保存模塊、傳感器處理模塊、上層控制指令響應模塊。其中,主控界面是整個軟件系統的總控,為軟件的各個模塊提供接口,實現人機交互;保存模塊主要是將傳感器數據處理后保存到磁盤文件中;傳感器處理模塊又包括AHRS、HGPS、編碼器等子傳感器處理模塊,主要負責數據的接收處理;上層控制指令響應模塊用來解析控制指令控制傳感器的工作。

2 ?系統設計原理

(1) 基于對話框的MFC應用程序

微軟基礎類庫(Microsoft Foundation Class,MFC)是微軟為了簡化程序員的開發工作所開發的一套面向對象的函數庫,以類的形式提供給開發人員使用[5]。Windows系統的操作都是以消息形式存在的,MFC利用消息映射機制,在某特定類定義該消息響應函數,對消息進行處理。該系統中自定義WM_DIS***消息,在主線程中定義消息響應函數,處理和顯示傳感器數據。

(2) 多線程體系

采用多線程體系,一是因為多個線程占用同一進程的地址空間,占有的資源比較少,二是多個線程可以并發地同時運行,效率比較高[5?6]。在數據采集系統設計過程中,主線程負責主控界面的創建,在主線程中創建傳感器子線程和保存子線程,利用事件對象實現多線程同步,通過調用接口WaitSingleObject()等待事件對象變為有信號狀態[7]。

(3) RS 232串口通信

通信通過RS 232串口實現短距離數據傳輸,通信協議簡單易操作,串口通信主要分為4步:

① 打開串口;

② 配置串口;

③ 讀寫串口;

④ 關閉串口。

串口數據均是以字節為單位,可以直接調用Win32提供的API函數進行串口編程[8?9]。

3 ?軟件實現

創建基于對話框的MFC程序,在對話框資源控添加控件,用于控制傳感器串口和顯示傳感器數據,系統對應的主控界面如圖2所示。

在主線程中初始化對話框界面,創建保存文件目錄,添加控件和消息響應函數,創建各傳感器和保存子線程,等待WM_DIS**消息到來,調用OnHandleMsg消息響應函數,處理數據并顯示在對話框中。主流程圖如圖3所示。

以AHRS為例,點擊AHRS的Open按鈕,創建AHRS傳感器子線程,代碼為:

//獲取AHRS串口號

m_nPortAHRS=((CComboBox*)GetDlgIte m(IDC_COM_Portnum))?>GetCurSel()+1;

//創建子線程

pThreadProc_AHRS=AfxBeginThread((AFX_THREADPROC)Threadproc_AHRS,

LPVOID(&m_nPortAHRS));

每個傳感器子線程實現步驟相似,其流程圖如圖4所示。

AHRS傳感器子線程設置事件掩碼,分配內存pstrMsgEnd_AHRS[]暫存從串口讀取的數據,當讀取數據檢驗有效,將保存事件hSave置為有信號狀態,代碼如下:

UNIT Threadproc_AHRS(LPVOID pParam)

{

hCommPort_AHRS=CreateFile(pstrCommPort,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0); ? ? ? ? ? ? ? ? ? ? //異步打開串口

//配置串口

SetCommState(hCommPort_AHRS,&dcb);

SetCommTimeouts(hCommPort_AHRS,&CommTimeouts);

SetCommMask(hCommPort_AHRS,EV_R

XCHAR);

WaitCommEvent(hCommPort_AHRS,&Event,&ovEol_AHRS); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//等待事件掩碼

ReadFile(hCommPort_AHRS,pstrMsgEnd_AHRS,dwReadThreshold_AHRS,&BytesRead,&ovEol_AHRS);

//讀串口數據

CheckAHRSMsg(); ? ? ? ? ? ? ? ? ? ? ? ? //檢驗數據是否有效

//如果數據有效

SetEvent(hSave);

::PostMessage(hWnd,WM_DISAHRS,(WPARAM)pstrMsgCopy_AHRS,(LPARAM)nMsgLength);//將消息傳遞主線程處理

}

點擊Save按鈕后,創建保存子線程,申請中轉區,將pDataBuffer中的數據暫存到中轉區,從中轉區讀取數據計算變量值,添加時標和系統時間,通過寫文件fwrite()函數將數據保存到磁盤中,通過時標和系統時間將各傳感器數據同步起來,實時監測機器人航姿和路徑。

4 ?結 ?語

經過反復測試,通過串口采集的數據很少出現丟失,實時性好,運行效率高,雖然發現程序中還是存在一定問題,但不影響該系統的運行,為了更好地適用于AUV,將對系統繼續擴展,加入聲吶,高度計,DVL,攝像頭等傳感器,對于同樣要考慮的怎么將水下數據送達岸基平臺,擬采用以太網Socket實現遠距離數據傳輸,對于傳感器的啟動和關閉也將以控制指令的形式通過寫串口加以實現[10]。

參考文獻

[1] 徐玉如,李彭超.水下機器人發展趨勢[J].自然雜志,2011(3):5?12.

[2] NEWMAN P M. MOOS: a mission oriented operating suite [R]. USA: Department of Ocean Engineering, MIT, 2008.

[3] BENJAMIN M R, NEWMAN P M, SCHMIDT H, et al. A tour of MOOS?IvP autonomy software modules, MIT?CSAIL?TR?2009?006 [R]. USA: MIT Computer Science and Artificial Intelligence Lab, 2009.

[4] HUANG A S, OLSON E, MOORE D C. Lightweight communications and marshalling for low latency inter?process communication, ? MIT?CSAIL?TR?2009?041 [R]. USA: MIT, 2009.

[5] 孫鑫,余安萍.VC++深入詳解[M].北京:電子工業出版社,2007.

[6] 侯俊杰.深入淺出MFC[M].武漢:華中科技大學出版社,2001.

[7] 齊林慶.自主式水下機器人測控系統軟件設計與實現[D].青島:中國海洋大學,2011.

[8] 龔建偉,熊光明.Visual C++/Turbo C串口通信編程實踐[M].北京:電子工業出版社,2007.

[9] 李日云,王來祿,劉匯江.利用Win32API通信函數實現串口通信[J].地球科學與環境學報,2004,26(3):61?63.

[10] 張鵬,張水平,安紅征.基于UDP與串口通信的訓練臺監控系統[J].通信技術,2008,41(1):159?161.

(3) RS 232串口通信

通信通過RS 232串口實現短距離數據傳輸,通信協議簡單易操作,串口通信主要分為4步:

① 打開串口;

② 配置串口;

③ 讀寫串口;

④ 關閉串口。

串口數據均是以字節為單位,可以直接調用Win32提供的API函數進行串口編程[8?9]。

3 ?軟件實現

創建基于對話框的MFC程序,在對話框資源控添加控件,用于控制傳感器串口和顯示傳感器數據,系統對應的主控界面如圖2所示。

在主線程中初始化對話框界面,創建保存文件目錄,添加控件和消息響應函數,創建各傳感器和保存子線程,等待WM_DIS**消息到來,調用OnHandleMsg消息響應函數,處理數據并顯示在對話框中。主流程圖如圖3所示。

以AHRS為例,點擊AHRS的Open按鈕,創建AHRS傳感器子線程,代碼為:

//獲取AHRS串口號

m_nPortAHRS=((CComboBox*)GetDlgIte m(IDC_COM_Portnum))?>GetCurSel()+1;

//創建子線程

pThreadProc_AHRS=AfxBeginThread((AFX_THREADPROC)Threadproc_AHRS,

LPVOID(&m_nPortAHRS));

每個傳感器子線程實現步驟相似,其流程圖如圖4所示。

AHRS傳感器子線程設置事件掩碼,分配內存pstrMsgEnd_AHRS[]暫存從串口讀取的數據,當讀取數據檢驗有效,將保存事件hSave置為有信號狀態,代碼如下:

UNIT Threadproc_AHRS(LPVOID pParam)

{

hCommPort_AHRS=CreateFile(pstrCommPort,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0); ? ? ? ? ? ? ? ? ? ? //異步打開串口

//配置串口

SetCommState(hCommPort_AHRS,&dcb);

SetCommTimeouts(hCommPort_AHRS,&CommTimeouts);

SetCommMask(hCommPort_AHRS,EV_R

XCHAR);

WaitCommEvent(hCommPort_AHRS,&Event,&ovEol_AHRS); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//等待事件掩碼

ReadFile(hCommPort_AHRS,pstrMsgEnd_AHRS,dwReadThreshold_AHRS,&BytesRead,&ovEol_AHRS);

//讀串口數據

CheckAHRSMsg(); ? ? ? ? ? ? ? ? ? ? ? ? //檢驗數據是否有效

//如果數據有效

SetEvent(hSave);

::PostMessage(hWnd,WM_DISAHRS,(WPARAM)pstrMsgCopy_AHRS,(LPARAM)nMsgLength);//將消息傳遞主線程處理

}

點擊Save按鈕后,創建保存子線程,申請中轉區,將pDataBuffer中的數據暫存到中轉區,從中轉區讀取數據計算變量值,添加時標和系統時間,通過寫文件fwrite()函數將數據保存到磁盤中,通過時標和系統時間將各傳感器數據同步起來,實時監測機器人航姿和路徑。

4 ?結 ?語

經過反復測試,通過串口采集的數據很少出現丟失,實時性好,運行效率高,雖然發現程序中還是存在一定問題,但不影響該系統的運行,為了更好地適用于AUV,將對系統繼續擴展,加入聲吶,高度計,DVL,攝像頭等傳感器,對于同樣要考慮的怎么將水下數據送達岸基平臺,擬采用以太網Socket實現遠距離數據傳輸,對于傳感器的啟動和關閉也將以控制指令的形式通過寫串口加以實現[10]。

參考文獻

[1] 徐玉如,李彭超.水下機器人發展趨勢[J].自然雜志,2011(3):5?12.

[2] NEWMAN P M. MOOS: a mission oriented operating suite [R]. USA: Department of Ocean Engineering, MIT, 2008.

[3] BENJAMIN M R, NEWMAN P M, SCHMIDT H, et al. A tour of MOOS?IvP autonomy software modules, MIT?CSAIL?TR?2009?006 [R]. USA: MIT Computer Science and Artificial Intelligence Lab, 2009.

[4] HUANG A S, OLSON E, MOORE D C. Lightweight communications and marshalling for low latency inter?process communication, ? MIT?CSAIL?TR?2009?041 [R]. USA: MIT, 2009.

[5] 孫鑫,余安萍.VC++深入詳解[M].北京:電子工業出版社,2007.

[6] 侯俊杰.深入淺出MFC[M].武漢:華中科技大學出版社,2001.

[7] 齊林慶.自主式水下機器人測控系統軟件設計與實現[D].青島:中國海洋大學,2011.

[8] 龔建偉,熊光明.Visual C++/Turbo C串口通信編程實踐[M].北京:電子工業出版社,2007.

[9] 李日云,王來祿,劉匯江.利用Win32API通信函數實現串口通信[J].地球科學與環境學報,2004,26(3):61?63.

[10] 張鵬,張水平,安紅征.基于UDP與串口通信的訓練臺監控系統[J].通信技術,2008,41(1):159?161.

(3) RS 232串口通信

通信通過RS 232串口實現短距離數據傳輸,通信協議簡單易操作,串口通信主要分為4步:

① 打開串口;

② 配置串口;

③ 讀寫串口;

④ 關閉串口。

串口數據均是以字節為單位,可以直接調用Win32提供的API函數進行串口編程[8?9]。

3 ?軟件實現

創建基于對話框的MFC程序,在對話框資源控添加控件,用于控制傳感器串口和顯示傳感器數據,系統對應的主控界面如圖2所示。

在主線程中初始化對話框界面,創建保存文件目錄,添加控件和消息響應函數,創建各傳感器和保存子線程,等待WM_DIS**消息到來,調用OnHandleMsg消息響應函數,處理數據并顯示在對話框中。主流程圖如圖3所示。

以AHRS為例,點擊AHRS的Open按鈕,創建AHRS傳感器子線程,代碼為:

//獲取AHRS串口號

m_nPortAHRS=((CComboBox*)GetDlgIte m(IDC_COM_Portnum))?>GetCurSel()+1;

//創建子線程

pThreadProc_AHRS=AfxBeginThread((AFX_THREADPROC)Threadproc_AHRS,

LPVOID(&m_nPortAHRS));

每個傳感器子線程實現步驟相似,其流程圖如圖4所示。

AHRS傳感器子線程設置事件掩碼,分配內存pstrMsgEnd_AHRS[]暫存從串口讀取的數據,當讀取數據檢驗有效,將保存事件hSave置為有信號狀態,代碼如下:

UNIT Threadproc_AHRS(LPVOID pParam)

{

hCommPort_AHRS=CreateFile(pstrCommPort,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0); ? ? ? ? ? ? ? ? ? ? //異步打開串口

//配置串口

SetCommState(hCommPort_AHRS,&dcb);

SetCommTimeouts(hCommPort_AHRS,&CommTimeouts);

SetCommMask(hCommPort_AHRS,EV_R

XCHAR);

WaitCommEvent(hCommPort_AHRS,&Event,&ovEol_AHRS); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//等待事件掩碼

ReadFile(hCommPort_AHRS,pstrMsgEnd_AHRS,dwReadThreshold_AHRS,&BytesRead,&ovEol_AHRS);

//讀串口數據

CheckAHRSMsg(); ? ? ? ? ? ? ? ? ? ? ? ? //檢驗數據是否有效

//如果數據有效

SetEvent(hSave);

::PostMessage(hWnd,WM_DISAHRS,(WPARAM)pstrMsgCopy_AHRS,(LPARAM)nMsgLength);//將消息傳遞主線程處理

}

點擊Save按鈕后,創建保存子線程,申請中轉區,將pDataBuffer中的數據暫存到中轉區,從中轉區讀取數據計算變量值,添加時標和系統時間,通過寫文件fwrite()函數將數據保存到磁盤中,通過時標和系統時間將各傳感器數據同步起來,實時監測機器人航姿和路徑。

4 ?結 ?語

經過反復測試,通過串口采集的數據很少出現丟失,實時性好,運行效率高,雖然發現程序中還是存在一定問題,但不影響該系統的運行,為了更好地適用于AUV,將對系統繼續擴展,加入聲吶,高度計,DVL,攝像頭等傳感器,對于同樣要考慮的怎么將水下數據送達岸基平臺,擬采用以太網Socket實現遠距離數據傳輸,對于傳感器的啟動和關閉也將以控制指令的形式通過寫串口加以實現[10]。

參考文獻

[1] 徐玉如,李彭超.水下機器人發展趨勢[J].自然雜志,2011(3):5?12.

[2] NEWMAN P M. MOOS: a mission oriented operating suite [R]. USA: Department of Ocean Engineering, MIT, 2008.

[3] BENJAMIN M R, NEWMAN P M, SCHMIDT H, et al. A tour of MOOS?IvP autonomy software modules, MIT?CSAIL?TR?2009?006 [R]. USA: MIT Computer Science and Artificial Intelligence Lab, 2009.

[4] HUANG A S, OLSON E, MOORE D C. Lightweight communications and marshalling for low latency inter?process communication, ? MIT?CSAIL?TR?2009?041 [R]. USA: MIT, 2009.

[5] 孫鑫,余安萍.VC++深入詳解[M].北京:電子工業出版社,2007.

[6] 侯俊杰.深入淺出MFC[M].武漢:華中科技大學出版社,2001.

[7] 齊林慶.自主式水下機器人測控系統軟件設計與實現[D].青島:中國海洋大學,2011.

[8] 龔建偉,熊光明.Visual C++/Turbo C串口通信編程實踐[M].北京:電子工業出版社,2007.

[9] 李日云,王來祿,劉匯江.利用Win32API通信函數實現串口通信[J].地球科學與環境學報,2004,26(3):61?63.

[10] 張鵬,張水平,安紅征.基于UDP與串口通信的訓練臺監控系統[J].通信技術,2008,41(1):159?161.

猜你喜歡
多傳感器
基于多傳感器數據融合在家庭智能防盜系統中的應用
價值工程(2017年9期)2017-04-18 10:15:13
基于多傳感器信息融合的移動機器人定位技術的研究
多傳感器數據融合的動態系統故障診斷技術
多傳感器數據融合技術在機房監控系統中的應用
基于智能粒子濾波的多傳感器信息融合算法
多傳感器圖像融合技術
一種基于多傳感器的PM2.5數據分析系統
船舶動力定位中的數據融合技術文獻綜述
科技視界(2016年14期)2016-06-08 13:24:00
基于多傳感器數據融合的助行機器人防摔倒技術研究
多傳感器數據融合技術研究與展望
物聯網技術(2015年5期)2015-07-18 13:08:22
主站蜘蛛池模板: 人妻少妇乱子伦精品无码专区毛片| 亚洲人成网站日本片| 一本一本大道香蕉久在线播放| 国产91精品久久| 激情国产精品一区| 伊人久久大香线蕉综合影视| 久久国产精品麻豆系列| 欧美自慰一级看片免费| 亚洲无码高清免费视频亚洲| 九色视频线上播放| 视频二区欧美| 国产精品亚洲片在线va| 91精品国产情侣高潮露脸| 日韩无码白| 国产男女XX00免费观看| 日日拍夜夜操| 午夜不卡福利| 91偷拍一区| 成人久久精品一区二区三区| 伊人蕉久影院| 日韩成人在线视频| 国产欧美一区二区三区视频在线观看| 亚洲天堂网站在线| 欧美三级自拍| 亚洲综合欧美在线一区在线播放| 国产噜噜噜视频在线观看| 九九久久精品免费观看| 久久这里只有精品8| 毛片大全免费观看| 亚洲第一黄片大全| 亚洲高清无在码在线无弹窗| 亚洲第一区精品日韩在线播放| 中文字幕亚洲专区第19页| 亚洲不卡av中文在线| 久久久久亚洲精品成人网 | 2022国产无码在线| 97se亚洲综合在线天天| 中文字幕av一区二区三区欲色| 午夜视频www| 国产精品福利在线观看无码卡| 99免费在线观看视频| 一本综合久久| 国产精品一区二区不卡的视频| av大片在线无码免费| 99视频精品在线观看| AV不卡无码免费一区二区三区| 欧美色视频网站| 国产激情在线视频| 欧美亚洲一二三区 | 高清国产va日韩亚洲免费午夜电影| 少妇精品网站| a天堂视频| 欧美一级片在线| 亚洲色图欧美在线| 日韩无码视频播放| 人妻一本久道久久综合久久鬼色| 亚洲av片在线免费观看| 欧美伊人色综合久久天天| 国产精品视频观看裸模| 69国产精品视频免费| 国产亚洲精品自在久久不卡| 亚洲日本一本dvd高清| 97成人在线视频| 亚洲欧美色中文字幕| 美女扒开下面流白浆在线试听 | 亚洲欧美国产高清va在线播放| 国产精品jizz在线观看软件| 日韩国产精品无码一区二区三区| 99无码中文字幕视频| 免费A级毛片无码无遮挡| 国产精品不卡永久免费| 人妻丰满熟妇αv无码| 欧美区一区| 亚洲国产日韩欧美在线| 在线视频精品一区| 亚洲欧美精品一中文字幕| 54pao国产成人免费视频| 国产精品欧美亚洲韩国日本不卡| 国产美女免费| 91小视频在线播放| 青草视频在线观看国产| 日韩福利在线观看|