c# - 将原始数据发送到 Zebra TTP 2030 打印机并获取其状态

标签 c# asp.net printing kiosk zebra-printers

我在 .net 上醒来c#我需要在斑马打印机 ( TTP2030 ) 上打印文本和条形码的 Web 应用程序。使用 RawPrinterHelperfrom here .我几乎得到了打印机的命令,作为一个 unicode 字符串。

因此,要打印条形码,我会这样做:

string enq = Convert.ToChar(5).ToString();
string esc = Convert.ToChar(27).ToString();
string nul = Convert.ToChar(0).ToString();
string rs = Convert.ToChar(30).ToString();
string lf = Convert.ToChar(10).ToString();
string cr = Convert.ToChar(13).ToString();

StringBuilder sb = new StringBuilder();

sb.Append(esc + "BS" + nul + nul + Convert.ToChar(72).ToString() + nul + nul);
sb.Append(nul + nul + Convert.ToChar(64).ToString() + nul + Convert.ToChar(2).ToString() + Convert.ToChar(2).ToString());
sb.Append(esc + "BW" + nul + "733104000099" + nul);
sb.Append(lf + rs);

RawPrinterHelper.SendStringToPrinter(printerName, sb.ToString());

该命令的助记符是

< ESC>BS<0><0>< h 48><0><0>
<00><0>< h 40><0><2><2>
< ESC>BW<00>733104000099<00>
< LF>< RS>

我不知道我是否正确发送了 之类的东西。从手册上看,一个龙头h后跟空格表示十六进制值。在这种情况下,该值表示 X条形码的坐标(低位字节 - 我不知道这是什么)。

如果此值以像素(或毫米)为单位,我如何转换为十六进制,然后再转换为我发送到打印机的 unicode?

此外,如何转换必须发送的十进制值

例如打印我发送的标尺线:

< ESC>r<0><0><0><0><1><230><0><24><3>

都是十进制值,表示位置、开始、停止等

如何转换此命令以便发送到打印机

我无法开始工作的另一件事是从打印机获取数据。有几个可用的命令,比如获取纸张状态、序列号、固件等。为了首先尝试实现这一点,我添加了

[DllImport("winspool.drv", CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
    public static extern int ReadPrinter(IntPtr hPrinter, StringBuilder data, int buf, out int pcRead);

RawPrinterHelper类(class)。然后我尝试使用 SendFileToPrinter 发送命令和一个 .prn我从一个名为 kiosk printer toolbox 的小应用程序中保存的文件我从斑马网站上得到的

(我选择发送文件而不是我上面描述的 SendStringToPrinter 方法,因为,好吧,我不相信我在那里做的事情是正确的,而且我还测试了将命令文件发送到打印机几个不同的命令并且有效)。

然后调用ReadPrinter(hPrinter, sb, 6, out dwWritten);但是sb是空的。该方法返回 0。有谁知道如何从打印机读取数据对于打印(文本和条形码)和获取打印机状态,我应该考虑采用完全不同的方法吗?

最佳答案

java中有一个特定的函数可以做到这一点。我会去看看 QZ-Print。您将只能打印到一台在您的 Web 应用程序家用计算机上本地运行的打印机,其他任何人都无法打印。我会去检查那个小程序,看看你想做什么。 IT 是专门为 Zebra 打印机编写的。

关于c# - 将原始数据发送到 Zebra TTP 2030 打印机并获取其状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2951174/

相关文章:

php - 从 PHP 应用程序通过网络打印

winforms - 打印 .NET DataGridView

c# - 将 DataTable 作为参数发送到存储过程

html - 如何使用CSS获取要打印的背景图像?

c# - VS2012 表示 ConnectionStrings 部分为 "The configProtectionProvider attribute is not allowed"

c# - Entity Framework 选择查询

c# - 需要处理 NULL 异常

c# - 如何指定要返回的 SQL 层次结构级别?

java - AudioRecord.StartRecording() 抛出 Java.Lang.IllegalException 表示未初始化的 AudioRecorder

c# - 为什么 foreach 在与 itextsharp 一起使用时会导致错误