WSN技术的智能仓储环境监测与智能控制系统设计与实.docx
- 文档编号:13842891
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:102
- 大小:677.34KB
WSN技术的智能仓储环境监测与智能控制系统设计与实.docx
《WSN技术的智能仓储环境监测与智能控制系统设计与实.docx》由会员分享,可在线阅读,更多相关《WSN技术的智能仓储环境监测与智能控制系统设计与实.docx(102页珍藏版)》请在冰点文库上搜索。
WSN技术的智能仓储环境监测与智能控制系统设计与实
WSN技术的智能仓储环境监测与智能控制系统设计与实
一、教学目标
1、把握WSN网关通信的相关应用。
2、把握WSN实现了信息的采集、信息传输和信息处理模式。
3、把握WSN实现仓储环境监控智能化技术方法。
二、教学内容
10.1设备简介
10.1.1WSN网关
图10-1WSN网关图
供电电源:
DC5V,信号猎取接口:
USB,上位机通信接口:
以太网口,操作系统:
Linux。
网关通过USB与和谐器连接,并通过和谐器与各Zigbee节点进行信号通讯。
10.1.2和谐器
图10-2和谐器图
供电方式:
USB供电。
该设备为网关与各传感器节点的中继,负责转发Zigbee信号。
10.1.3温湿度传感器模块
图10-3温湿度传感模块图
供电方式:
DC5V,通讯协议:
Zigbee。
集成模块:
温湿度传感器。
该节点可采集温湿度数据,并通过Zigbee协议传输到网关,上位机通过访问网关猎取温湿度数据。
10.1.4电磁继电器模块
图10-4电磁继电器模块图
供电方式:
DC5V,继电器操纵路数:
4路,与网关通信协议:
Zigbee。
该继电器可操纵四路电源,在京胜世纪的实验台中,操纵了两路灯光、一路风扇和一路电磁门。
10.2类的设计与实现
在本部分实训中我们要用到数据库来储备当前各个节点的信息,以面向对象的思想为例,我们需要先编写几对数据库操作的基础类和将节点信息储存的对象类。
10.2.1DBConnection.cs类
那个类文件是要对数据库进行连接操作,登录到本地的数据库。
引用命名空间。
该命名空间是SQLServer .NET数据提供者,是SQLServer专用的内置.NET提供者,引用该命名空间后就能够获得最好的性能和对基础功能的最直截了当访问。
usingSystem.Data.SqlClient;
添加变量
privatestringstr;
privateSqlCommandsqlcom;
privateSqlConnectionconn;
在构造函数中写入连接数据库方法
///
///连接数据库的方法
///
publicDBConnection()
{
//定义了要连接的数据库的位置,数据库的名称,登录帐号和密码
this.str="Server=localhost;DataBase=SmartShelfD;uid=sa;pwd=123";
this.conn=newSqlConnection(str);
this.sqlcom=newSqlCommand();
this.sqlcom.Connection=this.conn;
this.conn.Open();
}
上边定义了两个全局变量,分变是字符型str,变量量为数据库连接字符串内容:
Server表示正在访问的数据库服务器名称,其格式是“运算机名\实例名”,假如是本地的数据库服务器同时使用的是SQLServer的默认实例名,则能够使用(Local)或.来表示。
DataBase表示数据库名称,即该项目所要连接的数据库名;Uid表示数据库服务器的登录名称;Pwd表示数据库服务器的密码。
返回数据连接方法
///
///返回数据连接方法
///
///
publicSqlConnectionGetConnection()
{
returnthis.conn;
}
10.2.2DBOperate.cs类
该类的作用是对程序中的要用到的对数据库的操作进行统一,涉及到对数据库的操作时,如对数据库的增删改操作,都能够直截了当调用该类,相应的方法。
传入相应的参数即可。
添加引用
usingSystem.Data.SqlClient;
usingSystem.Data;
定义变量
SqlCommandsqlcom;
SqlConnectionconn;
默认构造方法
///
///构造函数
///
///
publicDBOperate(DBConnectiondbc)
{
sqlcom=newSqlCommand();
sqlcom.Connection=dbc.GetConnection();
}
编写执行方法
///
///执行sql语句
///
///
publicvoidExecuteSQL(stringsql)
{
this.sqlcommandText=sql;
try
{
this.sqlcom.ExecuteNonQuery();
}
catch{}
}
///
///猎取数据表格的方法
///
///
///
publicDataTableGetDataTable(stringsql)
{
this.sqlcommandText=sql;
SqlDataAdaptersda=newSqlDataAdapter(this.sqlcom);
DataSetds=newDataSet();
DataTabledt=newDataTable();
try
{
sda.Fill(ds);
dt=ds.Tables[0];
}
catch{}
returndt;
}
///
///执行SQL语句,猎取string类型数据
///
///
///
publicstringGetString(stringsql)
{
stringresultStr="";
this.sqlcommandText=sql;
try
{
resultStr=this.sqlcom.ExecuteScalar().ToString();
}
catch(SqlExceptione)
{}
finally
{
this.sqlcom.Dispose();
}
returnresultStr;
}
publicintGetInt(stringsql)
{
intresultInt=0;
this.sqlcommandText=sql;
try
{
resultInt=Convert.ToInt32(this.sqlcom.ExecuteScalar().ToString());
}
catch(SqlExceptione)
{
System.Windows.Forms.MessageBox.Show(e.Message);
}
finally
{
this.sqlcom.Dispose();
}
returnresultInt;
}
本资源是基于SQLServer开发的,因此能够使用using指令能够引用SQLServer专用的.NET数据库提供者:
usingSystem.Data.SqlClient;
提取数据库中数据的4步:
1)连接数据源
2)打开连接
3)发出一个SQL查询命令
4)执行命令语句
SqlConnection是一个用于SQL.NET数据提供者的连接对象名称,表示SQLServer数据库的一个打开的连接。
SqlConnection对象表示与SQLServer数据源的一个唯独的会话。
关于客户端/服务器数据库系统,它等效于到服务器的网络连接。
SqlConnection与SqlDataAdapter和SqlCommand一起使用,能够在连接MicrosoftSQLServer数据库时提高性能。
"Server=localhost;DataBase=AccessControl;uid=sa;pwd=123"
Server=localost,表示正在访问的SQLServer名称,其格式是“运算机名\实例名”。
运算机名(localhost)是一个专门方便的SQLServer简短名称,它表示运行在当前机器上的服务器实例。
DataBase=AccessControl,指定数据库的名称。
uid=sa;pwd=123,表示登录数据库的用户名和密码,这是SQLServer和Windows的标准内置安全。
this.conn.Open();打开数据库的连接。
CommandText属性猎取或设置要对数据源执行的SQL语句或储备过程。
ExecuteNonQuery()方法,对连接执行SQL语句并返回受阻碍的行数。
SqlDataAdapter类表示用于填充DataSet和更新SQLServer数据库的一组数据命令和一个数据库连接。
SqlDataAdapter是DataSet和SQLServer之间的桥接器,用于检索和储存数据。
DataSet是ADO.NET结构的要紧组件,它是从数据源中检索到的数据在内存中的缓存。
DataSet由一组DataTable对象组成。
try-catch语句由一个try块后跟一个或多个catch子句构成,这些子句指定不同的专门处理程序。
try块包含可能导致专门的爱护代码。
该块一直执行到引发专门或成功完成为止。
例如,下列强制转换null对象的尝试引发NullReferenceException专门:
objecto2=null;
try
{
inti2=(int)o2;//错误
}
10.2.3ObjCargoNode.cs类
该类是对节点信息与数据库中的进行操作进行的修改。
节点加入网络后,段地址会储备到数据库中。
对当前节点的识别也需要读取数据库中已输入的节点信息。
添加命名空间
usingSystem.Data;
定义变量
privateintcargo;
privatestringiEEEAddress;
privatestringshortAddress;
privateintnodeType;
构造函数
publicObjCargoNode()
{
}
publicObjCargoNode(intcargo)
{
this.cargo=cargo;
DataTabledtb=Program.dbo.GetDataTable(string.Format("selectCargo,IEEEAddress,ShortAddress,NodeTypefromCargoNodewhereCargo='{0}'",this.cargo));
DataRowrow=dtb.Rows[0];
this.cargo=Convert.ToInt32(row["Cargo"].ToString());
this.iEEEAddress=row["IEEEAddress"].ToString();
this.shortAddress=row["ShortAddress"].ToString();
this.nodeType=Convert.ToInt32(row["NodeType"].ToString());
}
属性
publicintCargo
{
get
{
returnthis.cargo;
}
}
publicstringIEEEAddress
{
get
{
returnthis.iEEEAddress;
}
}
publicstringShortAddress
{
get
{
returnthis.shortAddress;
}
set
{
this.shortAddress=value;
}
}
publicintNodeType
{
get
{
returnthis.nodeType;
}
}
方法
publicvoidInsert()
{
Program.dbo.ExecuteSQL(string.Format("updateCargoNodesetShortAddress='{0}'whereIEEEAddress='{1}'",this.shortAddress,this.iEEEAddress));
}
10.3功能设计与实现
该部分实训内容要紧是通过程序和wsn的网关进行通信,那个地点我们需要学习关于wsn网关通信的相关应用。
该模块程序中的代码,在后面会分解出来应用。
向窗体中添加一个TabControl控件,在TabPages属性添加6个成员。
控件
Name属性
Text属性
UseVisualStyleBackColor属性
TabPage
tpConnect
建立连接
True
TabPage
tpPing
Ping指令
True
TabPage
tpConfigRead
Config_Read指令
True
TabPage
tpConfigWrite
Config_Write指令
True
TabPage
tpSensorRead
Sensor_Read指令
True
TabPage
tpSensorWrite
Sensor_Write指令
True
10.3.1创建建立连接
1、建立连接TabPage窗体属性,窗体如图10-5所示。
图10-5Zigbee节点连接实验图
向窗体添加1个SplitContainer控件,2个GroudBox控件,8个Label控件,9个TextBox控件,4个Button控件。
更换窗体和控件属性:
2、设置窗体属性
窗体
StartPosition属性
MaximizeBox属性
MinimizeBox属性
FormBorderStyle属性
Text属性
frmGoodsOut
CenterParent
False
False
FixedSingle
Zigbee节点连接实验
3、设置Lable控件属性
控件
Name属性
Text属性
T1通道Socket
Lable
lblIPAddressT1
IP地址
Lable
lblPortT1
端口号
Lable
lblAppIDT1
AppID
Lable
lblPasswordT1
Password
T2通道Socket
Lable
lblIPAddressT2
IP地址
Lable
lblPortT2
端口号
Lable
lblAppIDT2
AppID
Lable
lblPasswordT2
Password
4、设置TextBox属性
控件
Name属性
Text属性
TextBox
txtIPAddressT1
192.168.1.230
TextBox
txtPortT1
4000
TextBox
txtAppIDT1
1001
TextBox
txtPasswordT1
Kingvc@zigvine
TextBox
txtIPAddressT2
192.168.1.230
TextBox
txtPortT2
4000
TextBox
txtAppIDT2
1001
TextBox
txtPasswordT2
Kingvc@zigvine
5、设置显示信息内容的TextBox属性
控件
Name属性
Dock属性
Multiline属性
ReadOnle属性
ScorllBars属性
TextBox
txtMessageConnect
Fill
True
True
Vertical
6、设置GroupBox控件属性
控件
Name属性
Text属性
GroupBox
gbSocket_T1
T1通道Socket
GroupBox
gbSocket_T2
T2通道Socket
7、设置Button按钮事件
控件
Name属性
Text属性
UseVisualStyleBackColor属性
Button
btnConnectSocketT1
SocketT1连接
True
Button
btnConnectT1
T1通道连接
True
Button
btnConnectSocketT2
SocketT2连接
True
Button
btnConnectT2
T2通道连接
True
8、窗体后台代码:
1)定义变量
//定义一个函数结构的托付
privatedelegatevoidShowMessageDel(TextBoxtxt,stringmsg);
privatedelegatevoidShowMessageDelOfTempLabel(Labellbl,stringvalue);
//实例化T1数据包消息类
privateGRIP_MessagemessageT1=newGRIP_Message();
//实例化T2数据包消息类
privateGRIP_MessagemessageT2=newGRIP_Message();
//定义T1Socket通讯接口
privateSocketsocketT1;
//定义T2Socket通讯接口
privateSocketsocketT2;
//定义T1通道流水号
privateUInt16sequenceIDT1;
//定义T2通道流水号
privateUInt16sequenceIDT2;
privateinttime;
//定义一个线程
privateThreadthread;
//sessionID为连接后网关随机分配的一个标识ID
privatestringsessionID="";
2)构造函数
///
///构造函数
///
publicfrmZigBee()
{
InitializeComponent();
}
3)编写方法
Socket发送消息方法
///
///Socket发送消息方法
///
///
///
///
privatevoidSendMsg(byte[]msgSend,Socketsocket,intlenSend)
{
//需对发送的字节长度有明确认识,发送一段字节后需要加上该段字节的长度
while(lenSend { lenSend+=socket.Send(msgSend,lenSend,msgSend.Length-lenSend,SocketFlags.None); } } Socket接收信息的方法 /// ///Socket接收消息方法 /// /// /// /// privatevoidRecvMsg(byte[]msgRecv,Socketsocket,intlenRecv) { while(lenRecv { lenRecv+=socket.Receive(msgRecv,lenRecv,msgRecv.Length-lenRecv,SocketFlags.None); } } 在控件中显示信息的方法 // ///在控件中显示消息的方法 /// /// /// privatevoidShowMessage(TextBoxtxt,stringmsg) { if(txt.InvokeRequired) { ShowMessageDelsmd=newShowMessageDel(ShowMessage); txt.Invoke(smd,txt,msg); } else { txt.Text+="\r\n【"+DateTime.Now.ToString("yyyy-MM-ddhh-mm-ss")+"】"+msg; } } 在Label控件中显示消息的方法 /// ///在Label控件中显示消息的方法 /// /// /// privatevoidShowTempValue(Labellbl,stringvalue) { if(lbl.InvokeRequired) { ShowMessageDelOfTempLabelsmd=newShowMessageDelOfTempLabel(ShowTempValue); lbl.Invoke(smd,lbl,value); } else { lbl.Text=value; } } 线程方法 /// ///T2通道线程执行方法 ///
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- WSN 技术 智能 仓储 环境监测 控制系统 设计