如何在WinCE平台下开发智能家居应用
来源:互联网 发布:vb与三菱plc通讯 编辑:程序博客网 时间:2024/06/05 04:36
WinCE的开发板成本低廉,又可以很好的处理各种复杂的应用,再加上很多人能运用自己熟悉的语言进行快速开发,所以一直是广大系统集成开发商的首选。
使用WinCE作为智能家居的开发平台,可以快速方便的开发各类智能家居应用。并且可以很方便的将整个操作系统嵌入到墙面,让用户很方便的操作。
我们在这里举个Wince下控制4路电源开关和显示房间温度和湿度的例子。使用天邦登峰的Phidgets1014继电器(4路)和1125温度、湿度传感器不需要配置任何端口,把各部件插入WinCE控制板的USB口插槽内就可以使用了。所需要用到的硬件如下:
WinCE 控制板(学习板)(在各电子城都很容易买到)
Phidgets 1014 - PhidgetInterfaceKit 0/0/4 (接口板-4口)
http://www.guigujianwen.com/2016/06/24/1014_2-phidgetinterfacekit-004/产品编号: 1014
Ø 4 个继电 (Relay) 输出开关交直流电
Ø 等级为: 250VAC、10 Amps (100VDC、 5 Amps) 可以接200多个电灯泡和电器
Ø 直接连接到计算机的 USB 传输端口(无需配置端口,即插即用)
含USB连接线.
Phidgets 1125 温度湿度传感器:http://www.guigujianwen.com/category/phidgets/
所需要的软件:
Phidgets驱动
http://www.guigujianwen.com/2016/06/17/phidgets_drivers/
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.guigujianwen.com/2016/06/17/phidgets_programming/
找到更多编程语言的范例。在各编程语言的 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://wenku.baidu.com/link?url=isVI8BI63qUCN8OHAkjiJwz2ih7ed4c5pLfd4OeSM0DBN59s7pgraHpNil6O4y18HtWPwe8K8DJyClERFugasLa7E_XOLdmi0fncfIpQH2e
本文完整源码和驱动文件(C#)
http://download.csdn.net/detail/soft2buy/5489609
- 如何在WinCE平台下开发智能家居应用
- 【智能家居篇】wifi在智能家居中的应用
- 如何在eclipse平台上配制开发javaFX应用
- 如何在Ubuntu手机平台中开发Cordova HTML5应用
- wifi在智能家居中的应用
- 如何在Netbeans下配置Android开发环境-Ubuntu平台
- 【android开发】如何在Linux平台下安装JDK环境
- 如何在IOS平台下搭建PhoneGap开发环境
- 如何在IOS平台下搭建PhoneGap开发环境
- 如何在IOS平台下搭建PhoneGap开发环境
- 宝宅智能家居-开源的智能家居开发平台
- 如何在wince下注册COM组件?
- 在WinCe下如何让程序全屏
- 在wince下如何禁止移动窗体
- 如何在wince下 建立文件夹
- 在WinCe下如何让程序全屏
- 在WinCe下如何让程序全屏
- WinCE平台下WM_COPYDATA消息的简单应用
- Dom解析xml
- remove的用法
- 'nodeName' 为空或不是对象原因
- 管道实例:获取system()调用的buffer
- wince常见问题
- 如何在WinCE平台下开发智能家居应用
- 11月21日
- unique的用法
- 关于条形码的界面显示与打印
- 11.21
- BroadcastReceiver广播机制
- 用 Hadoop 进行分布式并行编程, 第 2 部分
- 日期时间概述
- 关于条形码的属性与一些自定义操作