使用 Psion Teklogix 753x SDK 读取/写入 RFID 标签






4.88/5 (9投票s)
使用 PtxRfidNet.dll SDK 读取/写入 RFID 标签,并在手持设备中显示波斯语。
引言
本文旨在说明如何使用 Psion Teklogix 提供的库,使用 753x 手持设备读取/写入 RFID 标签。 提供的示例旨在易于使用,并希望能够正确地启动设备的使用。 它还包含一个库 (PDAFarsiLib),使波斯语文本能够正确显示在设备上。 您可以从 Mohamed Abdel-Monem 的文章中找到有关语言库的更多信息。 您还可以从制造商公司获得非常全面的支持。
必备组件
为了使用 Psion Tecklogix 提供的 SDK 来使用设备,您应该至少具备以下先决条件
必须安装 ActiveSync
安装 ActiveSync 设置时,将设备连接到 PC。
在设备上设置 PsionTeklogixCE420\RfidDeviceManager CAB 文件
安装RfidDeviceManager.cab 会将所需的库放置在设备上,以便您的 .NET 应用程序可以使用提供的 SDK。
Using the Code
使用 .NET PtxRfidNet.dll SDK 库来编程设备。(注意:如上述先决条件步骤中所述,RfidDeviceManager.cab 应安装在设备上,并且 PtxRfid.dll 库应存在于设备上。)要使用 Psion Teklogix 753x 设备读取或写入标签,必须构造 DeviceInterface
的实例并选择正确的读取器。
在智能设备项目上,创建 DeviceInterface
类的实例,并使用它来查找设备上的读取器
DeviceInterface DevInt = new DeviceInterface();
在列表中找到合适的读取器(或所有读取器)
ReaderId[] _readers = DevInt.CreateReader(readerId);
使用上述读取器 (_readers
) 读取/写入并使用设备。
写入 RFID 标签
标签 ID 采用十六进制格式,长度应为 24 个字符。 为了写入像“absdefg0123456789”这样的十六进制数,应该将其写入长度为 12 字节的数组,每个字节保存一个四位十六进制数。 所以,byte[0]
保存 “ab”,它是 171。 要从 UID 字符串构造正确的字节数组
byte[] bUID = new byte[12];
for (int i = 0, j = 0; i < UID.Length; i = i + 2, j++)
{
bUID[j] = byte.Parse(UID.Substring(i, 2),
System.Globalization.NumberStyles.HexNumber);
}
构造一个 EpcClass1Gen2 标签,并将其 UID 设置为上面构造的字节数组
Tag rfidTag = new Tag(TagType.EpcClass1Gen2);
rfidTag.Uid = new TagUid(bUID, 96);
使用所选读取器的 WriteUid
API 将 UID 写入标签
WriteTagUidParams param = new WriteTagUidParams();
_reader.WriteUid(param, rfidTag);
异步 RFID 标签读取
处理 AsynchronousDataDelegate
事件以读取放置在设备前面的 RFID 标签。
ReadTagParams t = new ReadTagParams(ReadModes.Triggered, 2000);
_reader.StartAsynchronousRead(t);
_reader.AsynchronousDataEvent +=
new AsynchronousDataDelegate(reader_AsynchronousDataEvent);
当 RFID 读取在设备上触发时,将引发以下事件,您可以将读取的 UID 添加到 ListBox
中,如下所示
void reader_AsynchronousDataEvent(object source, AsynchronousDataEventArgs e)
{
if (e.tagData.Format == TagDataFormats.UnparsedRaw)
{
foreach (Tag id in e.tagData.TagList)
{
string tagUidStr = "";
foreach (byte tagUid in id.Uid.Data)
{
tagUidStr += string.Format("{0:x2}", tagUid);
}
if (getListBoxItem(lstFoundTags, tagUidStr) < 0)
{
setListBoxItem(lstFoundTags, tagUidStr);
_readCount++;
}
}
}
}
关注点
希望它不是太难阅读,并且对某人有用。 我也从公司那里得到了非常热情的支持。 感谢 Psion Teklogix 支持团队。