一、软件安装
1、安装Visual Studio2008
2、安装 Microsoft ActiveSync
3、安装 Microsoft SqlServer2005数据库
4、安装IIS 5.x
二、创建智能设备项目
1、文件---新建---项目---智能设备---智能设备项目,如下图:
2、点击确定------进入 “添加新智能设备项目”页面------选择 “设备应用程序”,如下图:
3、点击 “确定”---进入项目页面,现在可以在Form框里拖放工具箱里的控件了,如下图:
4、在 vs2008菜单中选择“工具”---“设备仿真器管理器”-----进入到“设备仿真器管理器 ”页面,如下图:
5、选择和vs2008开发环境相应的 仿真器设备,这里选择“CHS Windows Mobile 5.0 Pocket PC R2 Emulator” ,右键----“连接”,出现如下画面:
6、在选择的“CHS Windows Mobile 5.0 Pocket PC R2 Emulator” 的仿真器设备上 右键----“插入底座” ,仿真器部署完毕,如下图所示,现在可以点击vs2008中的“生成解决方案”-----“启动调试” 来运行程序。
三、使用同步软件ActiveSync将智能设备与PC机同步
1、打开ActiveSync软件,点击---“文件”----“连接设置”---进入连接设置页面,在连接设置页面中选择“允许连接到以下其中一个端口”----选择“DMA”---确定。如下图:
2、在vs2008中,“工具”-----“设备仿真器管理器”-----这里选择“CHS Windows Mobile 5.0 Pocket PC R2 Emulator” ,右键----“连接”,在模拟器启动后再次选择“CHS Windows Mobile 5.0 Pocket PC R2 Emulator” 右键------“插入底座” ,会出现ActiveSync软件的同步设置向导,在同步设置向导中最终点击完成。现在就可以利用同步软件ActiveSync连接到模拟器,实现数据同步。如下图:
3、在模拟器Pocket PC --WM5.0 中,“开始”----“设置”----“连接”-----“网卡”-----“默认单位设置”----“AsyncMac NDISWAN Miniport”-----“使用服务器分配的IP地址”----“OK”-----“OK”。
4、在模拟器Pocket PC --WM5.0 中,“开始”----“设置”----“连接”----“连接”-----“高级”----“选择网络”----在程序自动连接到Internet时,使用:选择“单位设置”-----“OK”-----“OK”。
5、在模拟器Pocket PC --WM5.0 中,“开始”----“Inernet Explorer”----出现如下图。如果没有成功,在设备仿真器管理器中重新连接,插入底座,重试一遍。
四、智能设备中SqlCe数据库软件的安装、数据库表的创建
1、微软推出的针对嵌入式软件的数据库为SqlCe,如果在pc 上已经安装了SqlServer2005,SqlCe一般存在于SqlServer2005安装后的文件中。也可以直接下载SqlCe安装包。本次使用的是存在于SqlServer2005安装后的文件中SqlCe,如图所示:
2、在已经经过配置,使用同步软件ActiveSync将智能设备与PC同步后,在ActiveSync软件中点击 "浏览",出现如图界面:
3、直接把上述三个SqlCe安装包复制粘贴到移动设备里面。
4、在模拟器Pocket PC --WM5.0 中,"开始"----"程序"----"资源管理器" 里面找到刚才复制的那三个SqlCe安装包,依次分别双击安装。安装完成后就会在开始菜单中出现一个"Query Analyzer3.5 "查询分析器。单击"Query Analyzer3.5"进入到如下画面:
5、在Query Analyzer3.5单击下面的三角型按钮
,进入Connect to SqlServer Compact页面,点击"New Database",选择相应的Sort,在Path中输入数据库名称或路径加数据库名称(注意输入法改成英文),在Password中输入密码。如下图所示,然后点击Create即可创建数据库如下图。
6、点击
进入Table Definition页面,在Name中输入表名,如Student,点击"Insert Column" 输入Student表中的每个字段(注意输入法改成英文),最终如下图:
五、智能设备中SqlCe数据库的编程
1、在Form中添加三个button按钮 和 一个DataGrid控件。如图所示:
2、添加 System.Data.SqlClient 和 System.Data.SqlServerCe 引用,运行效果如下:
添加的代码如下:
private void btn_Add_Click(object sender, EventArgs e)//添加
{
//连接sql server Mobile数据库的连接字符串
string connString = "Data Source='My Documents\\Test.sdf'; LCID=1033; Password=\"123456\"; Encrypt = TRUE;";
//建立链接
SqlCeConnection ConnMobile = new SqlCeConnection(connString);
try
{
ConnMobile.Open();
}
catch (Exception ex)
{
MessageBox.Show("不能正确连接数据库!" + ex.Message);
this.Close();
throw;
}
string sql = "Insert into Student (ID,Name,Age) values (1,'小明',18)";
SqlCeCommand command = new SqlCeCommand(sql, ConnMobile);
int r = command.ExecuteNonQuery();
if (r > 0)
{
MessageBox.Show("添加数据成功!");
}
}
查询的代码如下:
private void btn_Search_Click(object sender, EventArgs e)//查询
{
string connString = "Data Source='My Documents\\Test.sdf'; LCID=1033; Password=\"123456\"; Encrypt = TRUE;";
SqlCeConnection ConnMobile = new SqlCeConnection(connString);
try
{
ConnMobile.Open();
}
catch (Exception ex)
{
MessageBox.Show("不能正确连接数据库!" + ex.Message);
this.Close();
throw;
}
string sql2 = "select * from Student ";
DataSet ds2 = new DataSet();
SqlCeDataAdapter command = new SqlCeDataAdapter(sql2, ConnMobile);
command.Fill(ds2, "ds");
dataGrid1.DataSource = ds2.Tables[0];
}
六、智能设备仿真器与WebService通信
1、在vs2008中 ,文件---新建----项目-----visual C#-----Web----ASP.NET Web服务应用程序,如下图:
2、在安装IIS的PC上,我的电脑----管理----Internet信息服务----网站----默认网站----在"默认网站"上新建 "虚拟目录",并进行相应的权限配置,虚拟目录的本地路径选择上面建立的WebService路径。如下图:
3、在智能设备项目中选中 "SmartDeviceProject" 右键---添加Web引用,在URL中填上相应的http地址,也可以修改web应用名,如下图:
4、然后点击"添加引用",出现web References,如下图:
5、在已经经过配置,使用同步软件ActiveSync将智能设备与PC同步后,在上面的Form框中的 与WebServer通信按钮下添加代码如下:
private void button3_Click(object sender, EventArgs e)//与WebService通信
{
//添加Web引用的 Web引用名是什么就写什么,这里是localhost,可以改其他名字
localhost.Service1 ws = new SmartDeviceProject.localhost.Service1();
MessageBox.Show(ws.HelloWorld());
}
最终效果如下图:
6、如果出现"无法连接远程网络"等类似错误,使用同步软件ActiveSync在vs2008的设备仿真器管理器中重新连接、插入底座。
7、所开发的程序文件存放在 模拟器Pocket PC --WM5.0 中,“开始”----“程序”---“资源管理器”---“Program Files”中,双击就可以打开,本文所制作的软件如下图:
七、全部代码
using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data.SqlServerCe;
namespace SmartDeviceProject
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btn_Add_Click(object sender, EventArgs e)//添加
{
//连接sql server Mobile数据库的连接字符串
string connString = "Data Source='My Documents\\Test.sdf'; LCID=1033; Password=\"123456\"; Encrypt = TRUE;";
//建立链接
SqlCeConnection ConnMobile = new SqlCeConnection(connString);
try
{
ConnMobile.Open();
}
catch (Exception ex)
{
MessageBox.Show("不能正确连接数据库!" + ex.Message);
this.Close();
throw;
}
string sql = "Insert into Student (ID,Name,Age) values (1,'小明',18)";
SqlCeCommand command = new SqlCeCommand(sql, ConnMobile);
int r = command.ExecuteNonQuery();
if (r > 0)
{
MessageBox.Show("添加数据成功!");
}
}
private void btn_Search_Click(object sender, EventArgs e)//查询
{
string connString = "Data Source='My Documents\\Test.sdf'; LCID=1033; Password=\"123456\"; Encrypt = TRUE;";
SqlCeConnection ConnMobile = new SqlCeConnection(connString);
try
{
ConnMobile.Open();
}
catch (Exception ex)
{
MessageBox.Show("不能正确连接数据库!" + ex.Message);
this.Close();
throw;
}
string sql2 = "select * from Student ";
DataSet ds2 = new DataSet();
SqlCeDataAdapter command = new SqlCeDataAdapter(sql2, ConnMobile);
command.Fill(ds2, "ds");
dataGrid1.DataSource = ds2.Tables[0];
}
private void button3_Click(object sender, EventArgs e)//与WebService通信
{
//添加Web引用的 Web引用名是什么就写什么,这里是localhost,可以改其他名字
localhost.Service1 ws = new SmartDeviceProject.localhost.Service1();
MessageBox.Show(ws.HelloWorld());
}
}
}