问题
我正在使用 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 Label 设计器。未找到编码功能。
- 浏览了 ZPL 示例代码。
- 检查堆栈溢出是否有相关问题。我发现的最接近的是 this或this ,但仍然不是我的用例。
任何建议、提示或评论将不胜感激。
最佳答案
一些注释 -
查看第 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# 玩吧。只是想限制起作用的变量数量;)
关于c# - 如何使用 C# 和 .NET 对 Zebra 打印机的 RFID 标签进行编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33401575/