我正在使用一个.net c#网络应用程序,我需要在斑马打印机(TTP2030)文本和条形码上打印。使用RawPrinterHelper类从这里开始。我几乎把命令作为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坐标(低阶字节--我不知道这是什么)。
如果此值以像素(或mm)为单位,如何转换为十六进制,然后转换为我要发送到打印机的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类中。然后,我尝试使用SendFileToPrinter和从斑马网站获得的一个名为kiosk printer toolbox的小应用程序中保存的.prn文件发送命令。
(我选择发送一个文件,而不是上面描述的SendStringToPrinter方法,因为,我不相信我在那里做了正确的事情,我还测试了用几个不同的命令向打印机发送一个命令文件,它成功了)。
然后调用ReadPrinter(hPrinter, sb, 6, out dwWritten);,但是sb是空的。该方法返回0。,有人知道我如何从打印机读取数据吗?,对于打印(文本和条形码)和获取打印机状态,有什么完全不同的方法吗?
发布于 2014-07-23 19:00:48
java中有一个特定的函数可以实现这一点。我要去看看QZ打印。你只能打印到本地运行在你的网络应用程序主机上的打印机上,其他人也不能。我要去看看那个小程序你想做什么。它是专门为斑马打印机编写的。
https://stackoverflow.com/questions/2951174
复制相似问题