VS2008中開發智能設備程序的一些總結


 

原文鏈接:http://blog.csdn.net/citybug_nj/article/details/2598705

程序中包括四個部分:

  1. 系統配置

這個部分用來配置系統中的相關參數,參數包括數據庫信息和串口的配置信息。這部分的主要技術是XML文件的讀取和寫入。

  1. 數據下載

從數據庫中下載數據到PDA,PDA上的保存也是使用數據庫。這部分的技術主要是PDA設備上的移動數據庫開發和使及用PDA連接PC數據庫

  1. 數據上傳

把PDA上的數據上傳到PC數據庫中,使用的技術和2相同。

  1. GPS數據獲取

通過外置藍牙GPS模塊獲取當時所在位置的經緯度,並將經緯度保存在PDA上的移動數據庫中。涉及到的技術有串口數據的讀取,GPS數據的解析。

2         開發環境

軟件環境: Visual studio 2008

PC數據庫: sql server

智能設備: Windows Mobile 6

3         建立工程

3.1      建立項目

建立工程的過程和VS建立其他工程步驟相同,通過vs2008中的菜單“文件-新建-項目 ”,建立一個新項目。

 

VS2008已經集成了智能設備的開發環境,根據開發語言的不同,在不同的開發語言樹中選擇“智能設備”,下方的名稱中填寫項目名稱,點擊“確定”按鈕,就建立了一個智能設備的程序項目。

3.2      建立調試環境

VS2008中已經包括了智能設備的仿真程序,編寫的程序可以通過PC機上的仿真程序進行調試,不必在PDA上逐個調試程序。

建立項目后,通過菜單“項目--項目屬性”中的“設備”頁中設置調試內容。

 

在下拉框中,選擇目標設備的類型。類型的選擇要根據PDA的操作系統進行確定,PDA上如果是中文操作系統,請選擇“CHS”打頭的選項。具體如何選擇,請根據PDA的操作系統進行。如果對選項中的內容不了解,請查閱其他資料。

    仿真程序的選擇和設置不僅僅只有這一種方式,也可以通過VS2008中的“工具-設備仿真器管理器”進行設置。

3.3      繪制窗體

智能設備的窗體和windows窗口的差別不是很大。在工程中選擇添加窗體后,VS中出現PDA屏幕模樣的模板。需要什么功能,在工具箱中把對應的控件拖到模板上即可。這部分的開發和普通的Windows程序開發沒有什么不同。

 

不同的部分就是菜單。智能設備的菜單中有缺省菜單,就是在屏幕底部有個菜單控件,可以通過增加菜單項的方式增加菜單。需要注意的是,一級菜單只能有兩個,而且設置的時候,只能先設置左邊的菜單項內容,才能設置右邊菜單項內容。

控件的使用也是有嚴格限制的。VS2008中能使用的控件分布在工具箱的“所有設備控件V2”、“公共設備控件 v2”、“設備容器 v2”、“設備菜單和工具欄V2”、“設備數據V2”、“設備組件V2”、“設備對話框V2”。使用控件的方式和Windows窗體的設計沒有什么不同。

4         調試

調試程序的方式同普通的程序調試差別不大,也通過單步調試等等的功能。唯一的差別就在於調試中程序在仿真器中運行。

 

4.1      其他文件

在調試中,程序如果只有一個EXE文件,而不涉及到其他文件,可以直接在仿真程序中運行。但是如果程序還有其他文件的話,需要把文件也要部署到PDA仿真器上。如何部署其他文件,請參考下面步驟:

  1. 通過仿真器上的菜單“文件――配置…”菜單設置共享文件夾。

 

 

通過后面的按鈕,瀏覽電腦中的磁盤,並選擇恰當的目錄。“共享文件夾”在設置完成后,將作為PDA仿真器的擴展存儲空間,仿真器中共享文件夾被命名為“Storage Card”。那么在仿真器中就可以直接操作共享文件夾中的文件。

這時候,就可以把其他和程序相關的文件拷貝到需要的地方。下面以一個XML文件為例。這個XML和程序的可執行程序在一個目錄下,用來保存程序的設置參數。XML文件在電腦上,程序中通過讀取可執行程序所在的目錄來指定XML文件的目錄。但是很不幸,仿真器在運行過程中,認為EXE可執行程序在“program files//項目名稱”這個目錄下,這個目錄是仿真器中的路徑,肯定是不會找到XML文件的。這就需要把XML文件也放置到“program files//項目名稱”目錄下面去。

 

在仿真器中點擊“開始-資源管理器”,打開后選擇“Storage Card”。在這個里面通過目錄-文件的方式選中文件,然后點擊下面的“菜單-編輯-復制”,將文件復制出來。

 

然后通過仿真器界面上的文件-目錄功能,找到“我的設備-program files-項目名稱”,進入以項目名稱為名稱的目錄,通過“文件-編輯-粘帖”,把文件拷貝到可執行程序所在的運行目錄下。

 

 

5         移動數據庫

在這個項目中,使用的是微軟的SQL SERVER Mobile Compact Editor 3.5。其他的數據庫還沒有使用過。僅僅就SQL SERVER Mobile Compact Editor 3.5的使用方法說明。

5.1      獲得SQL SERVER Mobile Compact Editor 3.5

SQL SERVER Mobile Compact Editor 3.5可以直接從微軟的網站上下載,網址為:http://www.microsoft.com/downloads/details.aspx?familyid=7849B34F-67AB-481F-A5A5-4990597B0297&displaylang=zh-cn

下載后在電腦上進行安裝。默認安裝到C:/Program Files/Microsoft SQL Server Compact Edition下。

3.5版本為最新版,增加了設置數據庫文件密碼的功能。也可以使用其他版本的SQL SERVER MOBILE替代。

5.2      在SQL SERVER MANAGER STUDIO中使用SQL SERVER MOBILE

 

在登錄部分,服務器類型選擇“SQL SERVER MOBILE”,數據庫文件通過下拉框中的“瀏覽更多…”選擇建立的數據庫文件,也可以通過選擇窗體中的“新建數據庫”建立新的數據庫。

 

 

輸入數據庫密碼,即可登錄到SQL SERVER MOBILE數據庫中。需要說明的是,3.5版本建立的數據庫,在SQL SERVER MANAGE STUDIO 2005中可能無法登錄。

5.3      Sql server mobile數據庫中建立數據表

Sql server mobile中建表可以通過sql server manage studio 2005中的建表向導進行建表,也可以通過sql語句進行建表。建表的時候需要注意字段類型和sql server中的字段類型並不相同,在sql server中能使用的字段類型,在sql server mobile中可能無法使用,在建表的過程中需要注意這點。

5.4      在智能設備上部署sql server Mobile數據庫

把建好的數據庫文件通過4.1中描述的方式,拷貝到相應的仿真器目錄下。這時候仿真器就可以連接並操作SQL SERVER MOBILE數據庫了。

但是如果使用PDA訪問SQL SERVER MOBILE,注意Windows Mobile中不包含數據庫引擎,需要額外的安裝四個包。如果不安裝這四個包,程序將無法連接和讀取SQL SERVER MOBILE數據庫。

這四個包在sql server mobile安裝目錄下,具體的是C:/Program Files/Microsoft SQL Server Compact Edition/v3.5/Devices/wce500/armv4i目錄下面,包括:

sqlce.dev.CHS.ppc.wce5.armv4i.CAB

sqlce.ppc.wce5.armv4i.CAB

sqlce.repl.ppc.wce5.armv4i.CAB

sqlce.wce5.armv4i.CAB

將這四個文件拷貝到仿真器上,並安裝。

安裝后,PDA的程序中增加了三個程序: sqlservercompact 3.5 Repl

SqlserverCompact 3.5 Tools CN

SqlserverCompact 3.5 Core

當不用移動數據庫時,可以卸載這三個程序。

6         智能設備連接操作PC數據庫

智能設備操作PC數據庫,有兩種方式:

一種是通過無線連接,一種是通過USB連接到電腦上。無線連接在普通環境下使用普遍性不足,很多情況下是通過USB數據線進行連接的。使用USB數據線連接,PC電腦上需要安裝同步工具,目前使用較多的為微軟的ActiveSync,下載地址是;

http://www.microsoft.com/downloads/details.aspx?FamilyID=cabdb564-ae94-4c02-abbc-cdece61231d4&DisplayLang=zh-cn

智能設備和PC同步后,就可以把智能設備看作一台電腦,可以連接數據庫。

7         數據庫連接字符串

7.1   Sql server mobile

在工程中增加引用,引用System.data.sqlserverCe

類中使用命名空間:System.data.sqlserverCe

數據庫鏈接類名、命令類名及記錄集類名中都使用包含Ce的類。

 

具體代碼如下:

using System;

 

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Data.SqlServerCe;

using System.Data.SqlClient;

 

namespace GPSDataReader

{

    public partial class frmDamUp : Form

    {

        SqlCeConnection ConnMobile;

        SqlCeCommand command;

 

        public frmDamUp()

        {

            InitializeComponent();

        }

 

        private void frmDamUp_Load(object sender, EventArgs e)

        {

         //獲取可執行程序所在目錄和數據庫文件

            string sFilePath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "//DamBase.sdf";

         //連接sql server Mobile數據庫的連接字符串

            string ConnStr = "Data Source=" + sFilePath + ";Persist Security Info=False;password=admin;";

         //建立鏈接

            ConnMobile = new SqlCeConnection(ConnStr);

            try

            {

                ConnMobile.Open();

            }

            catch (Exception ex)

            {

                MessageBox.Show("不能正確連接移動數據庫!" + ex.Message);

                this.Close();

            }

            command = new SqlCeCommand();

            command.Connection = ConnMobile;

 

            string sqlstr = "select * from DamInfo where IsUP='1'";

            command.CommandText = sqlstr ;

            SqlCeDataReader rs = command.ExecuteReader();

            while (rs.Read())

            {

                ListViewItem lv_Item = new ListViewItem();

                lv_Item.Text = rs["RSID"].ToString();

                lv_Item.SubItems.Add(rs["RSNM"].ToString());

                lv_Item.SubItems.Add(rs["DMPRV"].ToString());

                lv_Item.SubItems.Add(rs["DMCT"].ToString());

                lv_Item.SubItems.Add(rs["DMTW"].ToString());

                lv_Item.SubItems.Add(rs["EL"].ToString());

                lv_Item.SubItems.Add(rs["NL"].ToString());

                lv_Item.SubItems.Add("未上傳");

 

                lv_DamInfo.Items.Add(lv_Item);

            }

            rs.Close();

 

            if (lv_DamInfo.Items.Count == 0)

            {

                MessageBox.Show("沒有需要上傳的數據!");

                this.Close();

            }

        }

7.2      智能設備連接PC上的SQL SERVER

智能設備不支持OLEDB連接方式,只能使用SQLSERVER  .Net的連接方式。所以增加System.data.SqlClient引用。在需要連接的類中增加System.data.SqlClient命名空間。

代碼如下:

using System;

 

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Data.SqlServerCe;

using System.Data.SqlClient;

 

private void b_Down_Click(object sender, EventArgs e)

{

     string sqlstr;

 

     string Connstr = "user id=sa;password=2centit13;initial catalog=DamBase;Server=" + ConfigInfo.IP + ";Connect Timeout=30";

            SqlConnection Conn = new SqlConnection(Connstr);

            try

            {

                Conn.Open();

            }

            catch (Exception ex)

            {

                MessageBox.Show("無法連接到指定的PC數據庫!" + ex.Message);

                return;

            }

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM