C0404指导文档

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

C0404指导文档1.实验目的该实验的主要目的是让学生了解、学习超高频(18000-6)和无线网关在实际生活中的一些小应用(刷卡开门),从而增加学生的知识和激发学生的学习兴趣。2.界面设计控件名称控件Text属性控件Name属性功能Form停车场管理系统FrmMain——刷卡开门GroupBox网络连接:groupBox2串口连接:groupBox1电磁门状态:groupBox3StatusStrip(StatusLabel、ProgressBar)Infromain(StatusLabel)statusStrip1(tsPBar、tsSLable_Info)显示一些操作信息,防止用户以为程序崩溃,timertimer1为T1通道循环发送心跳包LabelIP地址:label1端口号:label2串口号:label5串口已关闭,连接已中断!lbl_Info显示串口连接的一些信息卡号:label16显示当前卡号的一些信息CardIDlbl_CardID姓名:label17Namelbl_Name性别:label18Sexlbl_Sex开lbl_Doors显示电磁门的状态TextBox192.168.1.230txtbox_IPAddress用于提供连接网关的IP400txtbox_Port用于提供连接网关的端口号ComboBoxcbbox_Ports用于显示当前可用串口号Button连接btn_Connecting用于连接网关搜索串口btn_SearchPort用于搜索串口打开串口btn_OpenOrClosePort用于打开、关闭串口并与读写器建立连接或断开连接开门btn_OpenOrCloseDoor用于打开或关闭电磁门3.功能实现(1)、添加接口:打开解决方案资源管理器右击引用,选择添加引用单击浏览找到需添加的接口(.dll文件)单击确定。我们这里须使用的是连接无线网关用的接口:WSN_GRIP_dll.dll。(2)、添加类:这此须使用的类你可以在本程序中找到,它们分别是:Connecting.cs、SqlHelper.cs、UHFReader.cs(对于这个类你也可以使用提供的接口),你可以直接复制然后在解决方案资源管理器中粘贴即可,当然你也可以右击项目选择添加然后选择现有项来添加类。(3)、在程序的最前面添加如下命名空间:usingSystem.Threading;---使用线程须引用的命名空间usingSystem.IO.Ports;---串口通信须引用的命名空间usingSqlConnecting;---数据库操作须引用的命名空间(来自SqlHelper类)usingB0401;---对超高频操作须引用的命名空间(来自UHFReader类)usingWSN;---对网关操作须引用的命名空间(来自Connecting类)注:引用命名空间,就是using+须使用的类中namespace后面的东东(4)、我们在添加了接口和类之后了要实例化一个对象才能使用接口和类里面的东西。例如:publicGatewayGateWay;SqlHelperMySql=newSqlHelper();UHFReaderReader=newUHFReader();这样我们就可以使用里面的方法和变量了。(5)、使用SerialPort.GetPortNames()将返回当前计算机的有效串口号(数组类型)。(6)、打开串口:利用UHFReader类中的OpenAndConnect()方法来打开串口,以及启动读写与读写器的连接,判断返回的值是否为ErrorCode.AllDone。是则打开串口成功,否则失败。但是打开之后还是要使用UHFReader类中的GetPaStatus方法来获取与读写器的连接状态,如果返回值为AllDone则表示连接成功,否则连接失败。关闭串口:在关闭串口之前须调用StopInventory方法停止读写器的当前操作;然后利用UHFReader类中的CloseAndDisconnect()方法来关闭读写器的串口,返回值为0x00则关闭成功。(7)、与网关建立连接的方法都写在Connecting类中,建立的步骤是:1、建立T1,T2通道(其中要开启T1,T2通道的心跳包收发)2、执行Ping指令3、等待得到节点的信息,最后建立成功。(8)、确定已获得节点信息:因为节点返回所有当前网络中的数据,根据节点开口的地址可以判断节点的类型,根据节点返回的数据中,如果包涵继电器节点的信息,则将节点的地址存储到数组中,因为发送数据给继电器还需要根据节点地址进行发送数据。(9)、获得卡号:这里是使用UHFReader类中的Inventory方法同过防碰撞识别标签,该方法是循环识别标签的,关闭串口循环识别才停止;开启串口,循环识别开始。请在窗体加载事件中添加如下代码:Reader.TagDetected+=newUHFReader.TagDetectedDel(UHFReader_TagDetecte;其中UHFReader_TagDetected是一个方法,方法如下:privatevoidUHFReader_TagDetected(byteCommand,byteStatus,byte[]TagUII,objectTag){}给该方法传递过来的字节型数组参数(TagUII)就是Inventory方法读到的卡号在这个方法里面你可以将得到的字节型数组转换为16进制的字符串。(10)、我们可以通过发送不同的节点命令,控制继电器的开关,继电器控制模式下4.5.6.7为00000001设置1.2.3.4继电器状态为0001。第8位必须为FF。除00与01外其他任何值,例如0x0A0x040x030x0E,不会改变继电器当前状态。地址为2001的继电器状态1.0.1.0设备完整的返回报文为B5200101000100FF5B。询问当前状态报文为4.5.6.7.8位设置为FFFFFFFFFF。(11)、类的介绍:类名方法参数返回值功能SqlHelperpublicboolOpenSqlConnection()无bool打开数据库连接;成功返回true,失败返回falsepublicboolCloseSqlConnection()无无关闭数据库连接publiboolUpdateData(stringstr)string类型(用于传递数据库更新语句)bool用于数据库更新,更新成功返回true,否则返回falsepublicboolInquire(stringstr)string类型(用于传递数据库查询语句)bool用于查询数据库中是否有该条记录,没有则返回true,有则返回falsepublicboolInquire1(stringstr)string类型(用于传递数据库查询语句)bool用来查询数据库中包含指定数据的所有数据,这些数据将会分别赋值给CarID,Name,Sex,Phone等静态变量;成功返回true失败返回falsepublicboolInsert(stringstr)string类型(用于传递数据库插入语句)bool用于向数据库中插入一条信息,成功返回true,失败返回falsepublicboolstring类型bool用于在数据库Delete(stringstr)(用于传递数据库删除语句)中删除指定信息,删除成功返回true,失败返回falseConnecting注意:这个类里面须要引用你创建的项目的命名空间,因为连接网关须得到用户输入的IP地址和端口号。例如:你创建的项目名称是:OpenTheDoor,在Connecting类前面加上usingOpenTheDoor;publicboolT1ChannelBuilding()无bool建立T1通道,成功返回true,失败返回falsepublicboolT2ChannelBuilding()无bool建立T2通道,成功返回true,失败返回falsepublicvoidT1Heartbeat()无无T1通道的心跳包收发(须不停的循环发送)publicvoidT1Heartbeat()无无T2通道的心跳包收发,及节点信息返回(须不停的循环发送)。publicboolPing()无bool执行Ping指令publicboolOpenOrCloseDoor(stringdata)string类型(8为关闭电磁门,0为打开电磁门)bool打开或关闭电磁门(视发送的指令而定),成功返回true,失败返回falseUHFReaderpublicErrorCodeOpenAndConnect(stringPortName,Int32BaudRate,objectParam)string类型(串口号),int类型(波特率(这里选择57600为好)),object类型(这个参数可以不传值)ErrorCode打开与设备连接的串口,返回的ErrorCode为AllDone(或判断返回值是否为0x00)则打开成功,否则打开失败publicErrorCodCloseAndDisconnect()无ErrorCode关闭串口,返回0x00则关闭成功否则关闭失败publicErrorCodeGetPaStatus(outBooleanPaStatus,BooleanCRCFlag)带输出参数的bool类型和bool类型(这个直接False就好)ErrorCode读取与读写器的连接状态返回的ErrorCode为AllDone则表示已与读写器连接上,否则没有publicErrorCodeStopInventory(BooleanCRCFlag)bool类型(这里可以直接传个false)ErrorCode停止读写器的当前操作(主要用于停止读写器的Inventory操作)返回的ErrorCode为AllDone则表示成功,否则失败publicErrorCodeInventory(BooleanAntiFlag,ByteInitQ,BooleanCRCFlag)bool类型(为true则启用防碰撞识别(循环的),false则不启用防碰撞识别),Byte类型(防碰撞时的初始Q值,只能是0~15之间的数字,数字越大读卡的速率越慢),bool类型(直接false就好)ErrorCode启动读写器的循环识别;返回的ErrorCode为AllDone则表示启动成功,否则失败publicErrorCodeInventorySingle(outbyte[]UII,booleanCRCFlag)带输出参数的byte数组类型,bool类型(直接false就好)ErrorCode单步识别标签,并读取标签号;返回的ErrorCode为AllDone则表示启动成功,否则失败注:有些类中还有其它方法,但我们这里并不需要使用,所以就不介绍了。

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功