WinCE的开发板成本低廉,又可以很好的处理各种复杂的应用,再加上很多人能运用自己熟悉的语言进行快速开发,所以一直是广大系统集成开发商的首选。
使用WinCE作为智能家居的开发平台,可以快速方便的开发各类智能家居应用。并且可以很方便的将整个操作系统嵌入到墙面,让用户很方便的操作。
我们在这里举个Wince下控制4路电源开关和显示房间温度和湿度的例子。使用天邦登峰的Phidgets1014继电器(4路)和1125温度、湿度传感器不需要配置任何端口,把各部件插入WinCE控制板的USB口插槽内就可以使用了。所需要用到的硬件如下:
WinCE 控制板(学习板)(在各电子城都很容易买到) |
天邦登峰1014 - PhidgetInterfaceKit 0/0/4 (接口板-4口)http://www.dengfengsoft.com/ViewDetails206.aspx 产品编号: 1014 Ø 4 个继电 (Relay) 输出开关交直流电 Ø 等级为: 250VAC、10 Amps (100VDC、 5 Amps) 可以接200多个电灯泡和电器 Ø 直接连接到计算机的 USB 传输端口(无需配置端口,即插即用) 含USB连接线.
|
天邦登峰1125 温度湿度传感器:http://www.dengfengsoft.com/ViewDetails137.aspx |
所需要的软件:
天邦登峰Phidgets驱动
http://www.dengfengsoft.com/dengfengsoft_phidgets_drivers.html
1..Net Framework 3.5 (Windows 7 自带,Windows XP 请下载)
2. Visual Studio 2005 Express (下载)
本文范例源码(C#)
http://download.csdn.net/detail/soft2buy/5489609
操作步骤:
1. 在WinCE系统内安装天邦登峰Phidgets控制板驱动(在源码文件夹内 –点击install.CAB安装);可以把文件通过U盘插入wince板安装,也可以通过(Windows Mobile 设备中心,从你的Windows 系统把文件上传到wince板子内安装)
2. 本文的程序范例代码以C#为例,您可以在http://www.dengfengsoft.com/dengfengsoft_phidgets_programming_resources.html
找到更多编程语言的范例。在各编程语言的 InterfaceKit-full 文件夹里可以找到。
用Visual Studio 2008 新建一个项目工程命名为:SmartHome
在项目下新建一个文件夹“dll”用于存放WinCE下驱动的动态库
把“动态库”的文件夹内的文件全部拷贝到这个文件夹下,并在工程内添加对“Phidget21CE.NET.dll”文件的引用。
界面布局范例如上图所示。
关键代码如下:
连接Phidgets控制设备。(WinCE下的连接方式和在Windows平台下的连接方式略有区别,请仔细看代码。)
在窗体加载的时候根据各个控制板的序列号定义控制板(Phidgets板子上都有一个白色的标签,S/N:后面的那串数字就是控制板的序列号)
private void frmMain_Load(object sender, EventArgs e)
{
try
{
//初始化1014
ifkit_1014_1 = new InterfaceKit();
ifkit_1014_1.Attach += new AttachEventHandler(ifkit_1014_1_Attach);
ifkit_1014_1.open(SysInfo.SN_1014_1);// SysInfo.SN_1014_1是从配置文件获取的控制板序列号
//初始化1125
ifkit_1125 = new InterfaceKit();
ifkit_1125.Attach += new AttachEventHandler(ifkit_1125_Attach);
ifkit_1125.Detach += new DetachEventHandler(ifkit_1125_Detach);
ifkit_1125.SensorChange += new SensorChangeEventHandler(ifkit_1125_SensorChange);
ifkit_1125.InputChange += new InputChangeEventHandler(ifkit_1125_InputChange);
ifkit_1125.open(SysInfo.SN_1011); // SysInfo.SN_1011是从配置文件获取的控制板序列号
}
catch
{
MessageBox.Show("初始化设备失败!");
}
}
//1014的连接事件
private void ifkit_1014_1_Attach(object sender, AttachEventArgs e)
{
if (InvokeRequired)
Invoke(new AttachEventHandler(ifkit_1014_1_Attach),
new object[] { sender, e });
else
{
}
}
//1125的连接事件
#region 1125 events
private void ifkit_1125_Attach(object sender, AttachEventArgs e)
{
if (InvokeRequired)
Invoke(new AttachEventHandler(ifkit_1125_Attach),
new object[] { sender, e });
else
{
InterfaceKit ifkit_1125 = (InterfaceKit)sender;
ifkit_1125.ratiometric = true;
if (ifkit_1125.sensors.Count > 0)
{
for (int i = 0; i < ifkit_1125.sensors.Count; i++)
{
ifkit_1125.sensors[i].DataRate = 32;//数据传输率
ifkit_1125.sensors[i].Sensitivity = 5;//敏感度 1=1秒刷新一次,10=10秒刷新一次
}
}
}
}
void ifkit_1125_Detach(object sender, DetachEventArgs e)
{
if (InvokeRequired)
Invoke(new DetachEventHandler(ifkit_1125_Detach),
new object[] { sender, e });
else
{
//attachedLabel.Text = "Not Attached";
}
}
//接收并显示温度和湿度
void ifkit_1125_SensorChange(object sender, SensorChangeEventArgs e)
{
if (InvokeRequired)
Invoke(new SensorChangeEventHandler(ifkit_1125_SensorChange),
new object[] { sender, e });
else
{
switch (e.Index)
{
case 0:
double tmp = (e.Value * 0.22222) - 61.11;
lblTemp.Text = tmp.ToString("0.####") + "℃";
//sense0.Text = "" + e.Value;
break;
case 1:
double hum = (e.Value * 0.1906) - 40.2;
lblHumb.Text = hum.ToString("0.####") + "%湿度";
//sense1.Text = "" + e.Value;
break;
}
}
}
void ifkit_1125_InputChange(object sender, InputChangeEventArgs e)
{
if (InvokeRequired)
Invoke(new InputChangeEventHandler(ifkit_1125_InputChange),
new object[] { sender, e });
else
{
}
}
#endregion
//实现按钮开关电源事件:
private void bt1014_1_1__switchButtonClick(int switchStatus)
{
//switchStatus == 1 ? this.ifkit_1014_1.outputs[0] = true : this.ifkit_1014_1.outputs[0] = false;
try
{
if (switchStatus == 1)
{
this.ifkit_1014_1.outputs[0] = true;//打开电源
}
else
{
this.ifkit_1014_1.outputs[0] = false;//关闭电源
}
}
catch { }
}
天邦登峰Phidgets1014的连线及其使用方法请参考:
http://www.dengfengsoft.com/docs/web/dengfengsoft_phidgets1014.htm
本文完整源码和驱动文件(C#)
http://download.csdn.net/detail/soft2buy/5489609