如何使用C#和.NET为斑马打印机编码RFID标签
本文关键字:打印机 编码 RFID 标签 何使用 NET | 更新日期: 2023-09-27 18:19:50
问题
我使用Visual Studio、C#和.NET。我还使用ZPL命令将hello world打印到Zebra ZD500R。我目前还没有成功地弄清楚如何使用上述方法对RFID标签进行编码。我知道java的SDK是存在的,但我的环境是一个严格的Microsoft堆栈。
打印的RFID标签在整个标签上都打印了VOID。类似VOIDVOIDVOID的东西。我在下面包含了更新后的代码。
代码
以下是我在研究了Zebra文档和示例代码后目前编写的代码:
public static void PrintLabels()
{
try
{
string ipAddress = "127.0.0.1";
int port = 1337;
// ZPL Command(s)
string ZPLString =
"CT~~CD,~CC^~CT~" +
"^XA~TA000~JSN^LT0^MNW^MTT^PON^PMN^LH0,0^JMA^PR4,4~SD10^JUS^LRN^CI0^XZ" +
"^XA" +
"^MMT" +
"^PW300" +
"^LL0526" +
"^LS0" +
"^FT267,433^A0I,42,40^FH''^FDHello World^FS" +
"^RS8" +
"^RFW,H^FD1234^FS" +
"^PQ1,0,1,Y^XZ";
// Open connection
System.Net.Sockets.TcpClient client = new System.Net.Sockets.TcpClient();
client.Connect(ipAddress, port);
// Write ZPL String to connection
System.IO.StreamWriter writer =
new System.IO.StreamWriter(client.GetStream());
writer.Write(ZPLString);
writer.Flush();
// Close Connection
writer.Close();
client.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
这是一个基本的例子,但通过打印helloworld来实现。据我所知,我认为RFID编码方面应该是字符串ZPLString中的一个新行。不幸的是,当我查看Zebra编程手册时,我没有看到任何ZPL命令来证实这个想法。
尝试次数
为了解决这个问题,我做了以下几件事。
- 在此处找到斑马ZPL的RTF
- 已下载斑马标签设计器。找不到编码函数
- 浏览ZPL示例代码
- 已检查堆栈溢出是否存在相关问题。我发现的最接近的是这个或这个,但仍然不是我的用例
如有任何建议、提示或意见,我们将不胜感激。
一些注意事项-
有关与该打印机兼容的命令列表,请查看第381页(表18)。
第400和401页包含了一些写作示例。第一个是:
^XA
^RS8
^RFW,A^FD00 my data^FS
^XZ
让我们来剖析一下^XA(开始)和^XZ(结束)。加上另外两个:^RS和^RF。
^RS–设置RFID参数
UHF Printers 0 = None 1 = EPC Class 0 2 = EPC Class 0 Plus 3 = EPC Class 1 64-bit 4 = EPC Class 1 96-bit 5 = UCODE EPC 1.19 6 = Impinj Class 0 Plus 7 = ISO 18000-06A 8 = EPC Class 1, Generation 2 (Gen 2) 9 = ISO 18000-06B
不确定您使用的是哪个转发器。相应调整。
然后是^RF:读取或写入RFID格式。在这个例子中,他们用ASCII(^RFW,a)进行写操作
接下来,我们看到
^FD00 my data^FS
这是数据的开始和结束标记。
另一个例子,这次写入十六进制:
^XA
^RFW,H^FD1234^FS
^XZ
您可以看到使用了,H
,而不是,A
。同样,我们看到^FD和^FS对数据进行定界。
总结
我猜你想要这样的东西(假设你在写十六进制):
^XA
^FO10,10
^A0,100,150
^FDHello, World!^FS
^RS8
^RFW,H^FD1234^FS
^XZ
因此,在c#:中
string ZPLString = "^XA^FO10,10^A0,100,150^FDHello, World!^FS^RS8^RFW,H^FD1234^FS^XZ";
你可能需要投一个^RS
,然后离开上面的图表。发送命令字符串时,不需要添加任何额外的换行符或CR。
std_disclaimer:我只使用ZPL进行打印,不用于RFID编码。请确保您拥有适用于该单元的正确转发器。根据文档,它支持与UHF EPC Gen 2 V1.2/兼容的标签ISO 18000-6C。
我会先用Zebra的实用程序测试你的ZPL。如果它有效,那么开始在c#中播放。只是试图限制作用中的变量数量;)