• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Windows CE的嵌入式通訊錄軟件設(shè)計(jì)與實(shí)現(xiàn)

      2013-01-19 03:05:42朱雅莉
      關(guān)鍵詞:輸入框嵌入式軟件鏈表

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

      (衡陽(yáng)師范學(xué)院 計(jì)算機(jī)科學(xué)系,湖南 衡陽(yáng) 421002)

      0 引 言

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

      本文詳細(xì)論述了在VS2008環(huán)境中基于Windows CE的通訊錄軟件設(shè)計(jì)與實(shí)現(xiàn),對(duì)通訊錄程序主要界面及功能進(jìn)行了設(shè)計(jì),對(duì)程序關(guān)鍵模塊進(jìn)行了實(shí)現(xiàn),最后對(duì)嵌入式程序開(kāi)發(fā)需要注意的要點(diǎn)進(jìn)行了分析與討論。

      1 嵌入式軟件開(kāi)發(fā)流程

      嵌入式軟件開(kāi)發(fā)與通用軟件開(kāi)發(fā)存在著一定區(qū)別,嵌入式應(yīng)用軟件開(kāi)發(fā)需要程序員對(duì)底層有一定了解,但隨著嵌入式軟件開(kāi)發(fā)工具與技術(shù)的迅速發(fā)展,目前嵌入式軟件開(kāi)發(fā)人員對(duì)底層及接口所需的了解程度要求越來(lái)越不高。嵌入式系統(tǒng)的層次結(jié)構(gòu)如圖1。

      圖1 嵌入式系統(tǒng)的層次結(jié)構(gòu)圖

      嵌入式軟件開(kāi)發(fā)一般流程如圖2,其中與通用軟件開(kāi)發(fā)體現(xiàn)區(qū)別的是即使應(yīng)用程序調(diào)試通過(guò),仍然需要把應(yīng)用軟件下載到嵌入式系統(tǒng)板上進(jìn)行整個(gè)系統(tǒng)的軟硬件測(cè)試。

      2 基于Windows CE的通訊錄軟件設(shè)計(jì)與實(shí)現(xiàn)

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

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

      2.2 各個(gè)主要功能模塊的實(shí)現(xiàn)

      首先創(chuàng)建項(xiàng)目,根據(jù)程序的特性在VS2008中編譯語(yǔ)言選擇C++,調(diào)試環(huán)境為智能設(shè)備,MFC智能設(shè)備應(yīng)用程序,在內(nèi)置SDK中選擇平臺(tái),默認(rèn)平臺(tái)為Windows Mobile 5.0(PPC),此時(shí)可以添加一個(gè)Pocket PC 2003平臺(tái)。應(yīng)用程序類型選擇基于對(duì)話框,MFC的使用則為在靜態(tài)庫(kù)中使用MFC[3-4]。

      (1)首先將需要保存的記錄(姓名,電話,郵件)寫(xiě)成一個(gè)結(jié)構(gòu)體,其實(shí)現(xiàn)代碼如下:

      typedef struct_CComData

      TCHAR name[n];//n為自定義最長(zhǎng)字符串長(zhǎng)

      TCHAR number[n];

      TCHAR mail[n];

      }CComData;

      (2)建立需要保存記錄的文件地址(在實(shí)際編程中特別注意路徑要設(shè)置為根目錄,Windows CE下My Documents文件夾前不需要盤(pán)符,若擅自添加盤(pán)符則會(huì)導(dǎo)致文件創(chuàng)建失?。?/p>

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

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

      圖4 控件屬性編輯

      (4)添加完畢后需要編寫(xiě)相應(yīng)的函數(shù)。首先編寫(xiě)OnInitDialog()函數(shù),OnInitDialog()函數(shù)用來(lái)判定在打開(kāi)程序時(shí)是否能打開(kāi)文件已經(jīng)存在的記錄,如果無(wú)法打開(kāi)文件,則按照路徑創(chuàng)建該文件,創(chuàng)建失敗時(shí)則提示錯(cuò)誤,如果可以打開(kāi)已經(jīng)存在的記錄,則顯示第一條記錄。

      (5)編寫(xiě)SetControlEnable()函數(shù),該函數(shù)主要用來(lái)設(shè)置輸入框,指針及操作按鈕的有效性。

      (6)編寫(xiě)SetButtonEnable()函數(shù),用來(lái)移動(dòng)記錄時(shí)設(shè)置指針的有效性。如當(dāng)文件記錄小于兩條時(shí),則四個(gè)指針按鈕都為不可用。

      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)針對(duì)Add按鈕,編寫(xiě)OnButtonAdd()。將輸入框設(shè)為可用,清除輸入框內(nèi)容使之處于輸入狀態(tài)。

      m_operID=0;

      m_Name=_T("");

      m_Number=_T("");

      m_M(jìn)ail=_T("");

      UpdateData(FALSE);

      SetControlEnable(TRUE);

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

      if(m_lstCom.IsEmpty())

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

      return;

      //先從隊(duì)列中移除

      POSITION pos=m_lstCom.FindIndex(m_iCurPos);

      m_lstCom.RemoveAt(pos);

      if(m_iCurPos?。?)

      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_M(jìn)ail=ComData.mail;

      UpdateData(FALSE);

      else

      //更新顯示

      m_Name=_T("");

      m_Number=_T("");

      m_M(jìn)ail=_T("");

      UpdateData(FALSE);

      SetControlEnable(FALSE);//設(shè)置移動(dòng)指針按鈕有效性

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

      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)編寫(xiě)OnButtonEdit()函數(shù),若鏈表隊(duì)列中沒(méi)有數(shù)據(jù),則提示錯(cuò)誤,否則將輸入框的狀態(tài)改為可用,并設(shè)置m_operID為編輯操作。

      if(m_lstCom.IsEmpty())

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

      return;

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

      //UpdateData(FALSE);

      SetControlEnable(TRUE);

      (10)編寫(xiě)OnButtonSave()函數(shù),根據(jù)m_oper-ID來(lái)判定是添加操作之后進(jìn)行的保存操作,還是編輯之后進(jìn)行的保存操作。如果是添加操作之后進(jìn)行的保存,那么將輸入的記錄復(fù)制到結(jié)構(gòu)體中相應(yīng)的數(shù)組中,然后打開(kāi)文件,將文件指針移至最末端,把該條記錄寫(xiě)入即可。如果是編輯之后進(jìn)行的保存操作,則將輸入的記錄復(fù)制到結(jié)構(gòu)體中相應(yīng)的數(shù)組中后根據(jù)m_iCuiPos來(lái)找到該條記錄在文件存取的位置,重寫(xiě)該條記錄之后再進(jìn)行保存即可。

      (11)操作按鈕函數(shù)編寫(xiě)完成之后,編寫(xiě)指針按鈕。向上移動(dòng)一條記錄時(shí)先將m_iCurPos減一,表示向上移動(dòng)一條記錄,然后根據(jù)m_iCurPos做索引來(lái)找到相對(duì)應(yīng)的在m_lstCom中的記錄,再將這條記錄復(fù)制給輸入框變量并顯示,同時(shí)設(shè)置按鈕有效性。

      3 分析與討論

      編寫(xiě)消息處理函數(shù)時(shí)出現(xiàn)了不響應(yīng)或者是部分模塊失效的情況,則需要使用afxmessagebox來(lái)解決,它是基于框架的函數(shù),使用起來(lái)非常方便。Windows CE下My Documents默認(rèn)的路徑為C盤(pán)根目錄,而編寫(xiě)程序時(shí)就需要將路徑改為根目錄。

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

      [1]臧佳鋒,戴月明.基于Windows CE的嵌入式電子郵件系統(tǒng)設(shè) 計(jì) 與 實(shí) 現(xiàn)[J].微 計(jì) 算 機(jī) 信 息,2006,22(2-2):89-92

      [2]曾喆,李濤,朱才連.基于Windows CE的嵌入式導(dǎo)航軟件設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2004,24(6):357-359.

      [3]李浪,劉宏,熊江.嵌入式軟件開(kāi)發(fā)實(shí)用教程[M].武漢:華中科技大學(xué)出版社,2011.7.

      [4]彭蔓蔓,李浪.嵌入式系統(tǒng)導(dǎo)論[M].北京:人民郵電大學(xué)出版社,2008.

      猜你喜歡
      輸入框嵌入式軟件鏈表
      基于GGB的拖動(dòng)交互式練習(xí)題
      拍一拍,圖片識(shí)文字
      基于二進(jìn)制鏈表的粗糙集屬性約簡(jiǎn)
      跟麥咭學(xué)編程
      實(shí)時(shí)嵌入式軟件的測(cè)試技術(shù)
      輸入框設(shè)計(jì)中需注意的9個(gè)細(xì)節(jié)
      基于鏈表多分支路徑樹(shù)的云存儲(chǔ)數(shù)據(jù)完整性驗(yàn)證機(jī)制
      全景相機(jī)遙控器嵌入式軟件V1.0 相關(guān)操作分析
      電子制作(2017年17期)2017-12-18 06:40:56
      自編翻譯程序
      CHIP新電腦(2015年10期)2015-10-15 12:48:23
      基于Eclipse的航天嵌入式軟件集成開(kāi)發(fā)環(huán)境設(shè)計(jì)與實(shí)現(xiàn)
      许昌县| 婺源县| 西盟| 韩城市| 黑山县| 山阴县| 苗栗县| 新邵县| 绥中县| 固镇县| 清丰县| 华宁县| 临西县| 乐业县| 梁平县| 车险| 大厂| 六枝特区| 峨边| 南安市| 宜兴市| 黎城县| 甘德县| 精河县| 贵南县| 安多县| 韶关市| 富阳市| 泽库县| 高淳县| 邵阳县| 肇州县| 昌都县| 邵东县| 密山市| 旺苍县| 巨野县| 漠河县| 斗六市| 垣曲县| 扎兰屯市|