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

基于Windows CE的嵌入式通訊錄軟件設計與實現

2013-01-19 03:05:42朱雅莉
衡陽師范學院學報 2013年3期
關鍵詞:嵌入式按鈕

李 浪,胡 駿,劉 輝,朱雅莉

(衡陽師范學院 計算機科學系,湖南 衡陽 421002)

0 引 言

嵌入式軟件廣泛應用于人民生活中的各個方面,如工業控制、消費電子、通信產業。Windows CE是微軟公司力推的嵌入式操作系統,由于微軟公司強大的影響力,基于Windows CE平臺的嵌入式軟件開發引起了IT界足夠重視與應用[1-2]。

本文詳細論述了在VS2008環境中基于Windows CE的通訊錄軟件設計與實現,對通訊錄程序主要界面及功能進行了設計,對程序關鍵模塊進行了實現,最后對嵌入式程序開發需要注意的要點進行了分析與討論。

1 嵌入式軟件開發流程

嵌入式軟件開發與通用軟件開發存在著一定區別,嵌入式應用軟件開發需要程序員對底層有一定了解,但隨著嵌入式軟件開發工具與技術的迅速發展,目前嵌入式軟件開發人員對底層及接口所需的了解程度要求越來越不高。嵌入式系統的層次結構如圖1。

圖1 嵌入式系統的層次結構圖

嵌入式軟件開發一般流程如圖2,其中與通用軟件開發體現區別的是即使應用程序調試通過,仍然需要把應用軟件下載到嵌入式系統板上進行整個系統的軟硬件測試。

2 基于Windows CE的通訊錄軟件設計與實現

2.1 程序主要界面以及功能介紹

在Windows CE 6.0(POCKET PC 2003)模擬器中打開通訊錄軟件界面如圖3所示,通訊錄軟件由三個編輯框和八個按鈕組成,按鈕分別為First(最前)、Last(最后)、Up(上移)、Down(下移)、Add(添加)、Delete(刪除)、Save(保存)和Edit(修改)。

2.2 各個主要功能模塊的實現

首先創建項目,根據程序的特性在VS2008中編譯語言選擇C++,調試環境為智能設備,MFC智能設備應用程序,在內置SDK中選擇平臺,默認平臺為Windows Mobile 5.0(PPC),此時可以添加一個Pocket PC 2003平臺。應用程序類型選擇基于對話框,MFC的使用則為在靜態庫中使用MFC[3-4]。

(1)首先將需要保存的記錄(姓名,電話,郵件)寫成一個結構體,其實現代碼如下:

typedef struct_CComData

TCHAR name[n];//n為自定義最長字符串長

TCHAR number[n];

TCHAR mail[n];

}CComData;

(2)建立需要保存記錄的文件地址(在實際編程中特別注意路徑要設置為根目錄,Windows CE下My Documents文件夾前不需要盤符,若擅自添加盤符則會導致文件創建失敗):

Const LPCTSTR FILEPATH=_T(“\My Documents\communication.dat”)

(3)在對話框中拖入所需要的控件,并且編輯好控件屬性,如圖4。

圖4 控件屬性編輯

(4)添加完畢后需要編寫相應的函數。首先編寫OnInitDialog()函數,OnInitDialog()函數用來判定在打開程序時是否能打開文件已經存在的記錄,如果無法打開文件,則按照路徑創建該文件,創建失敗時則提示錯誤,如果可以打開已經存在的記錄,則顯示第一條記錄。

(5)編寫SetControlEnable()函數,該函數主要用來設置輸入框,指針及操作按鈕的有效性。

(6)編寫SetButtonEnable()函數,用來移動記錄時設置指針的有效性。如當文件記錄小于兩條時,則四個指針按鈕都為不可用。

void CLCComDlg::SetButtonEnable(int aValue)

if(m_lstCom.GetCount()<2)

((CButton*)GetDlgItem(IDC_BUT

TON_FIRST))->EnableWindow(FALSE);((CButton*)GetDlgItem(IDC_BUT

TON_UP))->EnableWindow(FALSE);((CButton*)GetDlgItem(IDC_BUT

TON_DOWN))->EnableWindow(FALSE);((CButton*)GetDlgItem(IDC_BUT

TON_LAST))->EnableWindow(FALSE);

(7)針對Add按鈕,編寫OnButtonAdd()。將輸入框設為可用,清除輸入框內容使之處于輸入狀態。

m_operID=0;

m_Name=_T("");

m_Number=_T("");

m_Mail=_T("");

UpdateData(FALSE);

SetControlEnable(TRUE);

(8)編寫OnButtonDelete()函數,首先要從m_ListCom鏈表中刪除這條記錄,刪除之后判定是否還有其他記錄,如果有的話顯示它前面的一條記錄,沒有則顯示空,并且輸入框狀態不可用。重新遍歷鏈表并且按照路徑創建文件,將鏈表的記錄一條條地寫進文件中。

if(m_lstCom.IsEmpty())

AfxMessageBox(_T("There is no Data!"));

return;

//先從隊列中移除

POSITION pos=m_lstCom.FindIndex(m_iCurPos);

m_lstCom.RemoveAt(pos);

if(m_iCurPos!=0)

m_iCurPos--;

if(!m_lstCom.IsEmpty())

pos=m_lstCom.FindIndex(m_iCur-Pos);

CComData ComData=m_lstCom.GetAt(pos);

//更新顯示

m_Name=ComData.name;

m_Number=ComData.number;

m_Mail=ComData.mail;

UpdateData(FALSE);

else

//更新顯示

m_Name=_T("");

m_Number=_T("");

m_Mail=_T("");

UpdateData(FALSE);

SetControlEnable(FALSE);//設置移動指針按鈕有效性

SetButtonEnable(m_iCurPos);//將文件重寫

CComData ComData;

CFile ComFile;

ComFile.Open(FILEPATH,CFile::modeCreate|CFile::modeWrite);

pos=m_lstCom.GetHeadPosition();

for(int i=0;i<m_lstCom.GetCount();++i)

ComData=m_lstCom.GetNext(pos);

ComFile.Write(&ComData,sizeof(ComData));

ComFile.Close();

(9)編寫OnButtonEdit()函數,若鏈表隊列中沒有數據,則提示錯誤,否則將輸入框的狀態改為可用,并設置m_operID為編輯操作。

if(m_lstCom.IsEmpty())

AfxMessageBox(_T("No record to edit!"));

return;

m_operID=1;//表示編輯操作

//UpdateData(FALSE);

SetControlEnable(TRUE);

(10)編寫OnButtonSave()函數,根據m_oper-ID來判定是添加操作之后進行的保存操作,還是編輯之后進行的保存操作。如果是添加操作之后進行的保存,那么將輸入的記錄復制到結構體中相應的數組中,然后打開文件,將文件指針移至最末端,把該條記錄寫入即可。如果是編輯之后進行的保存操作,則將輸入的記錄復制到結構體中相應的數組中后根據m_iCuiPos來找到該條記錄在文件存取的位置,重寫該條記錄之后再進行保存即可。

(11)操作按鈕函數編寫完成之后,編寫指針按鈕。向上移動一條記錄時先將m_iCurPos減一,表示向上移動一條記錄,然后根據m_iCurPos做索引來找到相對應的在m_lstCom中的記錄,再將這條記錄復制給輸入框變量并顯示,同時設置按鈕有效性。

3 分析與討論

編寫消息處理函數時出現了不響應或者是部分模塊失效的情況,則需要使用afxmessagebox來解決,它是基于框架的函數,使用起來非常方便。Windows CE下My Documents默認的路徑為C盤根目錄,而編寫程序時就需要將路徑改為根目錄。

傳統的Windows CE開發方式,首先需要在PC上進行Windows CE開發環境的搭建,經過軟件安裝,Service Pack補丁包安裝和Platform Builder for CE 6.0的安裝等繁瑣過程,安裝完畢后還需對開發環境進行定制,在這期間由于開發人員的PC配置,軟件環境,安裝包完整性等不確定差異,極易造成各種兼容性問題,導致開發環境搭建失敗,而VS2008中內置了Windows CE(POCKET PC 2003/MOBILE 5.0)的SDK(軟件開發工具包),直接提供完整的開發環境,解決了由于開發人員PC配置等差異帶來的兼容性問題,為基于Windows CE嵌入式編程帶來了相當便利。這也是本文的一個重要目的,就是敘述把傳統的Windows CE5.0環境下的嵌入式編程移植到VS2008下開發,而且從本文的移植過程可以得出程序移植所需實質性改動并不大。

[1]臧佳鋒,戴月明.基于Windows CE的嵌入式電子郵件系統設 計 與 實 現[J].微 計 算 機 信 息,2006,22(2-2):89-92

[2]曾喆,李濤,朱才連.基于Windows CE的嵌入式導航軟件設計與實現[J].計算機應用,2004,24(6):357-359.

[3]李浪,劉宏,熊江.嵌入式軟件開發實用教程[M].武漢:華中科技大學出版社,2011.7.

[4]彭蔓蔓,李浪.嵌入式系統導論[M].北京:人民郵電大學出版社,2008.

猜你喜歡
嵌入式按鈕
這些按鈕能隨便按嗎?
哪個是門鈴真正的按鈕
當你面前有個按鈕
TS系列紅外傳感器在嵌入式控制系統中的應用
電子制作(2019年7期)2019-04-25 13:17:14
嵌入式系統通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
搭建基于Qt的嵌入式開發平臺
死循環
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
內心不能碰的按鈕
商業評論(2014年9期)2015-02-28 04:32:41
Altera加入嵌入式視覺聯盟
主站蜘蛛池模板: 亚洲av成人无码网站在线观看| 免费久久一级欧美特大黄| 青青草a国产免费观看| 亚洲综合精品第一页| 亚洲资源站av无码网址| 国产区福利小视频在线观看尤物 | 亚洲精品无码抽插日韩| 国产精欧美一区二区三区| 亚洲视频免| 午夜丁香婷婷| 国产女人爽到高潮的免费视频| 伊人91在线| 熟妇丰满人妻| 欧美 亚洲 日韩 国产| 国产在线精品99一区不卡| 亚洲欧美h| 91一级片| 国产99在线观看| 亚洲综合专区| 久久99国产综合精品1| 婷婷五月在线| 精品国产自在现线看久久| 久久狠狠色噜噜狠狠狠狠97视色| 国产精品浪潮Av| 亚洲欧洲一区二区三区| 中文字幕亚洲精品2页| 国产网友愉拍精品| www亚洲天堂| 美女免费黄网站| 永久在线播放| 九九热这里只有国产精品| 亚洲一级色| 2020精品极品国产色在线观看| 亚洲激情99| 毛片在线播放网址| 大学生久久香蕉国产线观看| 国内精品久久久久久久久久影视| 无码粉嫩虎白一线天在线观看| 91福利免费视频| 国产亚洲精| 亚洲第一网站男人都懂| 欧美精品1区| 国产91丝袜在线观看| 在线免费观看AV| 伊人网址在线| 国产99视频精品免费视频7| 亚洲综合片| 亚洲啪啪网| 国产无码精品在线| 欧美A级V片在线观看| 亚洲最猛黑人xxxx黑人猛交| 欧美日韩一区二区在线播放 | 日韩欧美国产综合| 99人体免费视频| 黄片在线永久| 亚洲高清国产拍精品26u| 操国产美女| 免费 国产 无码久久久| 国产一区三区二区中文在线| 99精品国产高清一区二区| 91无码国产视频| 色呦呦手机在线精品| 久综合日韩| 69国产精品视频免费| 久久午夜影院| 免费A∨中文乱码专区| 国产成人调教在线视频| 国产成人三级在线观看视频| 国产精品黑色丝袜的老师| 五月天婷婷网亚洲综合在线| 欧美日韩中文国产va另类| 97国产在线视频| 精品福利网| 国产一在线| 久久久久久久蜜桃| 在线视频一区二区三区不卡| 欧日韩在线不卡视频| 欧美日韩精品一区二区在线线| 搞黄网站免费观看| 亚洲一级毛片在线观播放| 国产色伊人| 久久久亚洲国产美女国产盗摄|