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;

??????????? }

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252550.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252550.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252550.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

go語言值得學習的開源項目推薦

谷歌官方維護了一個基于go語言的開源項目列表: https://github.com/golang/go/wiki/Projects 其中有非常多的優秀項目值得學習,有幾百行代碼適合新手閱讀的項目,也有大型如nsq、docker等的項目。 下面推薦幾款適合學習的項目: 1、…

部分Nand flash uboot 命令詳解

nand info & nand device顯示flash的信息: DM365 :>nand info Device 0: NAND 32MiB 3,3V 8-bit, sector size 16 KiB DM365 :>nand device Device 0: NAND 32MiB 3,3V 8-bitnand read(.oob) addr off size 不管是讀取data, 使用nand read,還是…

java7

第八章 數組 1.數組的聲明定義 數據類型[]變量名 new 數據類型[長度]; 列:int[]ary new int[5]; 2.取值,賦值 取值:數據名[下標]; 列:int a ary[1]; 賦值:變量數據名[…

BZOJ 3564 信號增幅儀

題目鏈接:http://www.lydsy.com/JudgeOnline/problem.php?id3564 題意:給出平面上n個點,畫出一個橢圓,橢圓的長軸是短軸的p倍,且長軸的方向為x軸逆時針旋轉a度。求這個橢圓短軸的最小值使得可以覆蓋所以點。 思路&…

CentOS 7 搭建JAVA環境

安裝環境: LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.3.1611 (Core) Release: 7.3.1611 Codename: Core 開始 運行java -version 檢查系統是否安裝JRE 或JDK,有則卸載系統自帶JAVA包輸…

串口波形分析

UART口發出數據按字節發送,發送數據8bit,實際量出波形為10bit,軟件底層驅動會自動加上起始位和停止位各1bit,起始位為0,停止位為1。下圖為用串口工具發送的數據和用示波器所量波形。 發送數據:0x34 0x43 示…

SpringBoot之MongoTemplate的查詢可以怎么耍

學習一個新的數據庫,一般怎么下手呢?基本的CURD沒跑了,當可以熟練的增、刪、改、查一個數據庫時,可以說對這個數據庫算是入門了,如果需要更進一步的話,就需要了解下數據庫的特性,比如索引、事物…

這可能是我見過最詳細的快速排序!

關于快速排序,網上,和維基都有完成的解釋,他們都是。。。。。。,俺覺得都是,太過于總結話語在概述一些東西; 而我卻從最本質的東西,一步一步的深入;在深入的學習過程中,我…

LINQ to SQL 實現 GROUP BY、聚合、ORDER BY

前言 本示例主要實現 LINQ 查詢,先分組,再聚合,最后在排序。示例很簡單,但是使用 LINQ 卻生成了不同的 SQL 實現。 1) 采用手動編寫 SQL 實現 SELECT ROW_NUMBER() OVER(ORDER BY T.RealTotal DESC) AS SN, * FROM ( SELECT (S…

Mysql之事務

什么是事務 假如你下了一筆訂單,會有以下數據庫操作: 1. 生成一筆訂單記錄 2. 減少庫存 3. 從你的賬戶中減少金額 4. 生成支付記錄 這邊的四個操作缺一不可,一旦某一個操作出現異常,則全部操作都需要全部回滾。而事務的作…

JVM垃圾回收機制總結

對于垃圾回收機制我先拋出三個問題: ①哪些內存需要回收? ②什么時候回收? ③如何回收? 下面我們主要針對這三個問題來研究JVM GC 一、哪些內存需要回收? 1.JAVA使用可達性分析法來判斷對象是否需要回收。 這個算法的基…

虛擬機增加內存方法

樓主由于要在虛擬機里面裝一個oracle,在安裝過程中,提示物理內存不符合最低標準,如圖1. 圖1 因為懶得新建一個虛擬機了,所以考慮給虛擬機新增磁盤空間。 首先說明,新增磁盤空間,必須保證當前虛擬機里每個新…

myBatis xml if、where、if-else?、foreach 心得

MyBatis 的強大特性之一便是它的動態 SQL。如果你有使用 JDBC 或其它類似框架的經驗,你就能體會到根據不同條件拼接 SQL 語句的痛苦。例如拼接時要確保不能忘記添加必要的空格,還要注意去掉列表最后一個列名的逗號。利用動態 SQL 這一特性可以徹底擺脫這…

bzoj千題計劃213:bzoj2660: [Beijing wc2012]最多的方案

http://www.lydsy.com/JudgeOnline/problem.php?id2660 很容易想到是先把n表示成最大的兩個斐波那契數相加,然后再拆分這兩個斐波那契數 把數表示成斐波那契進制的形式,第i位表示有沒有第i個斐波那契數 比如16133 001001 那么拆分一個數就是把一個1…

面對對象-封裝

private 私有的 package/friendly/default 不寫 protected 受保護的 public 公共的 那么什么情況該用什么修飾符呢?從作用域來看,public能夠適用所有的情況。 但是大家在工作的時候,又不會真正全部都適用public,那么到底什么情況改用什么修飾…

本文詳解5G是個什么鬼,程序員都準備好了嗎?

無線移動通訊發展歷史 最近5G的概念炒的如火如荼,為此,華為和高通還干了一仗。這篇文章從技術層面給大家分析,什么是5G,它和4G比,高級在哪里? 我們來看看移動互聯網的技術發展: 然后我們在來看看…

安裝kerberos報錯 error: command 'gcc' failed with exit status 1

pip install kerberos 報錯:error: command gcc failed with exit status 1 安裝環境工具 yum install gcc libffi-devel python-devel openssl-devel 再次安裝kerberos安裝成功 轉載于:https://www.cnblogs.com/panbc/p/8268574.html

jquery正則表達式驗證:驗證全是數字

需求說明: 前端頁面使用正則表達式驗證輸入框中輸入的內容全是數字。 代碼說明: 這里只介紹正則表達式,其他部分的代碼不做介紹。如果有其他需要自行修改即可。 步驟一:建立一個頁面可以是html、jsp等,引入jquery-3.2.…

0613課堂匯總

一: 數據類型: 基本數據類型{byte(8)/short(16)/char(16)/int(32)/float(32)/long(64)/double(64)/boolean(1)}引用數據類型{*除了基本數據類型都是引用數據類型 *包括API中的類(String,File)*自定義的類(Personal A…

Istio流量管理實踐之(5): 使用cert-manager部署Istio自定義入口網關及進行證書管理...

Istio Gateway提供多個自定義入口網關的支持能力,通過開放一系列端口用于承載網格邊緣的進入連接,同時可以使用不同loadbalancer來隔離不同的入口流量。cert-manager可用于使用存儲在Kubernetes Secret資源中的任意簽名密鑰對來獲取證書。本文提供了手動…