結合前幾日開發的《全國大壩基礎數據庫採集端》中的PDA程序開發過程,對VS2008開發智能設備上的程序做個小總結

結合前幾日開發的《全國大壩基礎數據庫採集端》中的PDA程序開發過程,對VS2008開發智能設備上的程序做個小總結。
程序中包括四個部分:
1. 系統配置
這個部分用來配置系統中的相關參數,參數包括數據庫信息和串口的配置信息。這部分的主要技術是XML文件的讀取和寫入。
2. 數據下載
從數據庫中下載數據到PDA,PDA上的保存也是使用數據庫。這部分的技術主要是PDA設備上的移動數據庫開發和使及用PDA連接PC數據庫
3. 數據上傳
把PDA上的數據上傳到PC數據庫中,使用的技術和2相同。
4. GPS 數據獲取
通過外置藍牙GPS模塊獲取當時所在位置的經緯度,並將經緯度保存在PDA上的移動數據庫中。涉及到的技術有串口數據的讀取,GPS數據的解析。
軟件環境: Visual studio 2008
PC 數據庫: sql server
智能設備: Windows Mobile 6
建立工程的過程和VS建立其他工程步驟相同,通過vs2008中的菜單“文件-新建-項目 ”,建立一個新項目。
VS2008 已經集成了智能設備的開發環境,根據開發語言的不同,在不同的開發語言樹中選擇“智能設備”,下方的名稱中填寫項目名稱,點擊“確定”按鈕,就建立了一個智能設備的程序項目。
VS2008 中已經包括了智能設備的仿真程序,編寫的程序可以通過PC機上的仿真程序進行調試,不必在PDA上逐個調試程序。
建立項目後,通過菜單“項目--項目屬性”中的“設備”頁中設置調試內容。
在下拉框中,選擇目標設備的類型。類型的選擇要根據PDA的操作系統進行確定,PDA上如果是中文操作系統,請選擇“CHS”打頭的選項。具體如何選擇,請根據PDA的操作系統進行。如果對選項中的內容不瞭解,請查閱其他資料。
   仿真程序的選擇和設置不僅僅只有這一種方式,也可以通過VS2008中的“工具-設備仿真器管理器”進行設置。
智能設備的窗體和windows窗口的差別不是很大。在工程中選擇添加窗體後,VS中出現PDA屏幕模樣的模板。需要什麼功能,在工具箱中把對應的控件拖到模板上即可。這部分的開發和普通的Windows程序開發沒有什麼不同。
不同的部分就是菜單。智能設備的菜單中有缺省菜單,就是在屏幕底部有個菜單控件,可以通過增加菜單項的方式增加菜單。需要注意的是,一級菜單只能有兩個,而且設置的時候,只能先設置左邊的菜單項內容,才能設置右邊菜單項內容。
控件的使用也是有嚴格限制的。VS2008中能使用的控件分佈在工具箱的“所有設備控件V2 、“公共設備控件 v2 、“設備容器 v2 、“設備菜單和工具欄V2 、“設備數據V2 、“設備組件V2 、“設備對話框V2 。使用控件的方式和Windows 窗體的設計沒有什麼不同。
調試程序的方式同普通的程序調試差別不大,也通過單步調試等等的功能。唯一的差別就在於調試中程序在仿真器中運行。
在調試中,程序如果只有一個EXE文件,而不涉及到其他文件,可以直接在仿真程序中運行。但是如果程序還有其他文件的話,需要把文件也要部署到PDA仿真器上。如何部署其他文件,請參考下面步驟:
1. 通過仿真器上的菜單“文件 ―― 配置…”菜單設置共享文件夾。
通過後面的按鈕,瀏覽電腦中的磁盤,並選擇恰當的目錄。“共享文件夾”在設置完成後,將作爲PDA仿真器的擴展存儲空間,仿真器中共享文件夾被命名爲“Storage Card”。那麼在仿真器中就可以直接操作共享文件夾中的文件。
這時候,就可以把其他和程序相關的文件拷貝到需要的地方。下面以一個XML文 件爲例。這個XML和程序的可執行程序在一個目錄下,用來保存程序的設置參數。XML文件在電腦上,程序中通過讀取可執行程序所在的目錄來指定XML文件 的目錄。但是很不幸,仿真器在運行過程中,認爲EXE可執行程序在“program files//項目名稱”這個目錄下,這個目錄是仿真器中的路徑,肯定是不會找到XML文件的。這就需要把XML文件也放置到“program files//項目名稱”目錄下面去。
在仿真器中點擊“開始-資源管理器”,打開後選擇“Storage Card”。在這個裏面通過目錄-文件的方式選中文件,然後點擊下面的“菜單-編輯-複製”,將文件複製出來。
然後通過仿真器界面上的文件-目錄功能,找到“我的設備-program files-項目名稱”,進入以項目名稱爲名稱的目錄,通過“文件-編輯-粘帖”,把文件拷貝到可執行程序所在的運行目錄下。
在這個項目中,使用的是微軟的SQL SERVER Mobile Compact Editor 3.5。其他的數據庫還沒有使用過。僅僅就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替代。
在登錄部分,服務器類型選擇“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中可能無法使用,在建表的過程中需要注意這點。
把建好的數據庫文件通過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
當不用移動數據庫時,可以卸載這三個程序。
智能設備操作PC數據庫,有兩種方式:
一種是通過無線連接,一種是通過USB連接到電腦上。無線連接在普通環境下使用普遍性不足,很多情況下是通過USB數據線進行連接的。使用USB數據線連接,PC電腦上需要安裝同步工具,目前使用較多的爲微軟的 ActiveSync ,下載地址是;
智能設備和PC同步後,就可以把智能設備看作一臺電腦,可以連接數據庫。
在工程中增加引用,引用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;
            }
}
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章