VS2008中開發智能設備程序(手機軟件)的總結【轉】

         VS2008中開發智能設備程序(PDA手機軟件)的總結

1程序結構

程序中包括四個部分:

1.系統配置

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

2.數據下載

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

3.數據上傳

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

4.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;

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章