gpt4 book ai didi

c# - 如何使用 C# 和 .NET 为 Zebra 打印机编码 RFID 标签?

转载 作者:太空宇宙 更新时间:2023-11-03 12:57:34 24 4
gpt4 key购买 nike

问题

我正在使用 Visual Studio、C# 和 .NET。我还使用 ZPL 命令将 hello world 打印到 Zebra ZD500R。我目前未能成功弄清楚如何使用上述方法对 RFID 标签进行编码。我知道存在 Java SDK,但我的环境是严格的 Microsoft 堆栈。

打印的 RFID 标签在整个标签上打印了 VOID。类似于 VOIDVOIDVOIDVOIDVOIDVOID。我在下面包含了更新的代码。

代码

以下是我在研究 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);
}
}

这是一个基本示例,但通过打印 hello world 来实现。据我所知,我认为 RFID 编码方面应该是字符串 ZPLString 中的新行。不幸的是,当我查看 Zebra 编程书籍时,我没有看到任何 ZPL 命令来证实这个想法。

尝试

我已经做了以下尝试来解决这个问题。

  • 找到 Zebra ZPL 的 RTFM here
  • 下载了 Zebra 标签设计器。找不到编码函数。
  • 浏览了 ZPL 示例代码。
  • 检查堆栈溢出以解决相关问题。我找到的最接近的是 thisthis ,但仍然不是我的用例。

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

最佳答案

一些笔记-

查看第 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编码。确保您拥有适用于 native 的正确转发器。根据文档,它支持与 UHF EPC Gen 2 V1.2/兼容的标签ISO 18000-6C。

我会先使用 Zebra 的实用程序测试您的 ZPL。如果可行,则开始使用 C# 进行播放。只是想限制变量的数量;)

关于c# - 如何使用 C# 和 .NET 为 Zebra 打印机编码 RFID 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33401575/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com