如何使用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示例代码
  • 已检查堆栈溢出是否存在相关问题。我发现的最接近的是这个或这个,但仍然不是我的用例

如有任何建议、提示或意见,我们将不胜感激。

如何使用C#和.NET为斑马打印机编码RFID标签

一些注意事项-

有关与该打印机兼容的命令列表,请查看第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#中播放。只是试图限制作用中的变量数量;)