您的当前位置:首页正文

静默和唤醒功能的实现

来源:好兔宠物网


实验四 Stay Quiet 功能的实现

实验目的:

设计开发一支可连接实验系统平台并且可以执行使电子标签进入静默状态操作的应用程序。

实验内容:

1、用VB 6.0 开发软件,设计开发出如下应用程序界面图10.51:

图 10.51

2、编写代码,运行程序能达到实验目的。

基本原理:

VB 语言编程规范;DLL 调用规范;

实验步骤:

一、在实验3 的基础上启动VB 6.0 开发软件平台

拷贝 实验3 文件夹,粘贴并更改文件夹名字为:实验4,进入文件夹ISO15693_Reader 里面,双击 ISO15693_Reader.vbp 文件,启动VB 6.0 开发软件。同实验二,添加界面内容如图 10.52:

图 10.52

这样,本次实验的程序界面的工作,已经设计完成,下面开始代码部分的工作。

二、编写实验代码

相关文件的放置位置同实验二。

首先,在模块下,mdlDLL.bas 文件里面声明 Quiet 函数,如下:

Public Declare Function Quiet Lib \"ReadDLL.dll\" (ByRef tagUID As Byte) As Long

函数名: (静默标签)Quiet

功能:使标签进入静默状态。

参数说明:

Input:

tagUID:要静默标签的UID(8 个bytes,从高位到低位)。

Output :

00,表示操作正确,

01,表示操作错误。

此时,写好的 mdlDLL.bas 文件如图10.53 所示:

图 10.53

同实验二,进入窗体代码文件编写。

首先,修改 For i = 0 To 2 为 For i = 0 To 3 在原来的3 个功能上再多增加一个功能,这个功能就是 Stay Quiet 的功能。

然后,就添加这部分功能代码,如下:

Case 3 'Quiet

ret = Quiet(retByte(0))

strLog = Convert(ret)

调用 Stay Quiet 函数,执行使对应 UID 号码的标签进入静默状态的功能,并得到

操作结果的状态信息,存放到 ret 变量里面,并转换成 Success(如果写数据成功) 或者 ERROR(如果写数据失败) 字符。

整个 Private Sub cmdRun_Click() 过程代码如下:

Private Sub cmdRun_Click()

Dim lCount As Long

Dim strInfo As String

Dim strLog As String

Dim ret As Long

Dim i, j, k As Integer

strLog = \"\"

txtInfo.Text = \"\"

Erase retValue

For i = 0 To 3

If optCMD(i).Value = True Then

Select Case i

Case 0 'inventory 7 读多标签模式,Hex 27 读单个标签模式

listTag.Clear

ret = Inventory(retByte(0), 7, lCount)

If lCount = 0 Then

ret = 1

End If

If ret = 0 Then

For k = 0 To lCount - 1

strInfo = \"\"

For j = 0 To 7

strInfo = strInfo & Format(Hex(retByte(k * 8 + j)), \"00\")

Next

listTag.AddItem strInfo

Next

End If

strLog = Convert(ret)

Case 1 '读单个BLOCK

ret = ReadSingleBlock(retByte(0), CByte(txtAdd.Text), CByte(txtSize.Text),retValue(0))

If ret = 0 Then

For k = 0 To CByte(txtSize.Text) - 1

txtBlock(k) = Format(Hex(retValue(k)), \"00\")

Next

End If

strLog = Convert(ret)

Case 2 '写 BLOCK

For k = 0 To CByte(txtSize.Text) - 1

retValue(k) = \"&h\" & txtBlock(k)

Next

ret = WriteSingleBlock(retByte(0), CByte(txtAdd.Text), CByte(txtSize.Text),retValue(0))

strLog = Convert(ret)

Case 3 'Quiet

ret = Quiet(retByte(0))

strLog = Convert(ret)

End Select

End If

Next

txtInfo.Text = strLog

End Sub

如果选择的是 Inventory 功能,则执行 Case 0 部分代码,执行功能同实验一;如

果选择的是Read Single Block 功能,则执行 Case 1 部分代码,执行功能同实验二;如果选

择的是 Write Single Block 功能,则执行 Case 2 部分代码,执行功能同实验三;如果选择

的是 Stay Quiet 功能,则执行 Case 3 部分代码,如果操作成功,则在 txtInfo 的TextBox 里

面显示 Success ,如果不成功,在 txtInfo 的TextBox 里面显示 ERROR。

写好的程序文件如图 10.54 所示:

图 10.54

至此本实验的代码部分也完成了,确保相关的文件放置的位置同实验一,然后就可以点击菜单栏下边的运行命令按钮,开始执行程序,如图10.55 所示:

图 10.55

同实验一,连接好实验系统,给实验系统上电,等待系统初始化完成,蜂鸣器响过后,选择相应的串口,点击 Open 打开串口,和实验系统通讯上。

在实验系统的天线区,放置一个电子标签,先在 Commands 区域选择 Inventory 命令,点击 Run 按钮,先读取电子标签的UID。在读到标签的UID 后,选择 Stay Quiet 命令,再次点击 Run 按钮,使天线区对应UID 号的电子标签进入静默状态。如果操作成功,则在txtInfo 的TextBox 里面显示 Success ,此时,标签成功进入静默状态,只会响应下次实验将会介绍的 Reset to Ready 命令,而不会响应其他指令,只要标签不离开天线磁

场范围,天线的磁场不消失,标签一直保持在静默状态;如果操作不成功,在 txtInfo 的TextBox 里面显示 ERROR,此时,标签保持原来的状态不变。

程序执行状况图 10.56 所示,

图 10.56

上图表示,成功使电子标签进入静默状态。

此时,再执行 Inventory 指令,由于标签已经进入静默状态,将会读不到这个电子标签,输出信息显示 ERROR 提示,如图10.57 所示:

图 10.57

从上图的结果,可以验证标签已经进入了静默状态。

最后,同实验一生成新的 ISO15693_Reader.exe 可执行文件。

实验总结:

通过本实验,实验人员能了解ISO15693 标准下面特殊的强制的指令功能、使用方法和提高判断指令执行结果的能力,加强对ISO15693 指令的理解。

实验五 Reset to Ready 功能的实现

实验目的:

设计开发一支可连接实验系统平台并且可以执行使电子标签重新进入激活状态操作的应用程序。

实验内容:

1、用VB 6.0 开发软件,设计开发出如下应用程序界面图10.58:

图 10.58

2、编写代码,运行程序能达到实验目的。

基本原理:

VB 语言编程规范;DLL 调用规范;

实验步骤:

一、在实验4 的基础上启动VB 6.0 开发软件平台

拷贝 实验_4 文件夹,粘贴并更改文件夹名字为:实验5,进入文件夹

ISO15693_Reader 里面,双击 ISO15693_Reader.vbp 文件,启动VB 6.0 开发软件。同实验二,添加界面内容如图 10.59 所示:

图 10.59

这样,本次实验的程序界面的工作,已经设计完成,下面开始代码部分的工作。

二、编写实验代码

首先,在模块下,mdlDLL.bas 文件里面声明 ResetToReady 函数,如下:

Public Declare Function ResetToReady Lib \"ReadDLL.dll\" (ByRef tagUID As Byte) As Long

函数名: (恢复标签激活状态)ResetToReady

功能:使静默的标签恢复到激活状态。

参数说明:

Input:

tagUID:要恢复到激活状态的标签的UID(8 个bytes,从高位到低位)。

Output :

00,表示操作正确,

01,表示操作错误。

此时,写好的 mdlDLL.bas 文件如图10.60 所示:

图 10.60

同实验二,进入窗体代码文件编写。

首先,修改 For i = 0 To 3 为 For i = 0 To 4 在原来的4 个功能上再多增加一个功能,这个功能就是 ResetToReady 的功能。

然后,就添加这部分功能代码,如下:

Case 4 'Reset to ready

ret = ResetToReady(retByte(0))

strLog = Convert(ret)

调用 ResetToReady 函数,执行使对应 UID 号码的标签恢复到激活状态的功能,并得操作结果的状态信息,存放到 ret 变量里面,并转换成 Success(如果写数据成功) 或者 ERROR(如果写数据失败) 字符。

整个 Private Sub cmdRun_Click() 过程代码中如果选择的是 Inventory 功能,则执

行 Case 0 部分代码,执行功能同实验一;如果选择的是Read Single Block 功能,则执行 Case 1 部分代码,执行功能同实验二;如果选择的是 Write Single Block 功能,则执行 Case 2 部分代码,执行功能同实验三;如果选择的是Stay Quiet 功能,则执行 Case 3 部分代码,执行功能同实验四;如果选择的是 Reset to Ready功能,则执行 Case 4 部分代码,如果操作成功,则在 txtInfo 的TextBox 里面显示Success ,如果不成功,在 txtInfo 的TextBox 里面显示 ERROR。

至此本实验的代码部分也完成了,确保相关的文件放置的位置同实验一,然后就可以点击菜单栏下边的运行命令按钮,开始执行程序。

同实验一,连接好实验系统,给实验系统上电,等待系统初始化完成,蜂鸣器响过后,选择相应的串口,点击 Open 打开串口,和实验系统通讯上。

在实验系统的天线区,放置一个电子标签,先在 Commands 区域选择 Inventory 命令,点击 Run 按钮,先读取电子标签的UID。在读到标签的UID 后,选择 Stay Quiet 命令,再次点击 Run 按钮,使天线区对应UID 号的电子标签进入静默状态。确认操作成功后,再次选择 Inventory 命令,此时,因为标签在静默状态,不会响应这个指令,操作会不成功,在 txtInfo 的TextBox 里面显示 ERROR,此时,只要标签不离开天线磁场范围,标签将继续保持静默状态不变。如图10.63 所示:

图 10.63

此时,选择 Reset to Ready 命令,点击 Run 按钮执行,如果操作成功,则在 txtInfo 的TextBox 里面显示 Success ,此时,标签成功地从静默状态恢复到激活状态,准备响应其他指令;如果操作不成功,在 txtInfo 的TextBox 里面显示 ERROR,此时,标签保持原来的静默状态不变。程序执行状况如图10.64 所示,

图 10.64

确认操作成功后,再次选择 Inventory 命令,此时,因为标签已经恢复到激活状态,将会响应这个指令,读取UID 操作就可以进行,程序执行状况如图10.65 所示:

上图表明通过 Reset to Ready 后,标签再次恢复激活状态,可以响应其它的指令了。最后,同实验一生成新的 ISO15693_Reader.exe 可执行文件。

实验总结:

通过本实验,实验人员能了解ISO15693 标准下面特殊的可选的指令功能、使用方法和提高判断指令执行结果的能力,加强对ISO15693 指令的理解。

因篇幅问题不能全部显示,请点此查看更多更全内容