【问题标题】:Zebra TLP2844 Windows 7 USB escape issueZebra TLP2844 Windows 7 USB 转义问题
【发布时间】:2010-11-15 19:57:25
【问题描述】:

我在 Windows 7 32 位上运行来自 Zebra 的最新驱动程序并通过 USB 打印到 TLP2844。我正在尝试生成一组标签,并使用 RawPrinterHelper 类从 C# 将它们打印到标签打印机,如许多在线帖子中所述。如果我打开打印机电源并使用 oM 命令禁用初始 Esc 序列进纸,那么它可以完美运行并正确打印两个标签。此后,高度似乎不正确,因为它不是打印两个标签,而是打印一个标签,第二个文本朝向标签底部。任何帮助将不胜感激。

标签尺寸: 宽度:75mm 高度:34mm 间隙:3mm

发送到打印机的示例命令序列:

oM

N
q599
Q272,024
ZT
S2       
A253,26,0,3,1,1,N,"TEST LABEL TEXT"
P1

N
q599
Q272,024
ZT
S2       
A253,26,0,3,1,1,N,"TEST LABEL2 TEXT"
P1

【问题讨论】:

  • 我有一些关于这方面的旧笔记,我将在今晚晚些时候尝试挖掘。与此同时,祝你好运。那些打印机似乎永远无法工作,即使一切都正确!
  • 我与 Zebra 合作的时间已经足够多,我知道几乎所有其他选项都更好。祝你好运:\
  • 您能否通过网络发布您发送到打印机的完整命令序列,看看您是否遗漏了什么。
  • 你为什么使用 oM 命令,你发送的是原始命令,而不是使用 windows 驱动程序,所以我认为不需要它?
  • 我将原始命令发送到连接打印机的 USB 接口,根据我在 EPL 手册中的理解,我需要在使用 Windows 驱动程序时发送此命令。我的问题是它在打开打印机后第一次打印时效果很好,之后就不行了。测试代码基于本文nicholas.piasecki.name/blog/2009/03/…中的信息

标签: c# .net printing zebra-printers


【解决方案1】:

当您禁用标签顶部的检测时,最可能的罪魁祸首是您的Q272,024 不够大。由于您没有发布太多额外信息,我不确定您为什么使用示例中的 oM 命令,这似乎没有必要。


尝试省略QoM 设备应该足够智能,能够自行正确喂食。 (确保您已完成重置,以确保您清除了您之前发送的所有 oM)同时确保您处于线路模式而不是页面模式。


这是我编写的一些类,用于将英寸或毫米转换为我为公司内部使用而编写的点。

 public static partial class Convert
    {
        /// <summary>
        /// Converts number of dots in to millimeters in length
        /// </summary>
        /// <param name="dots">length in dots</param>
        /// <returns>length in millimeters</returns>
        public static float DotsToMm(int dots)
        {
            return dots * 0.125125f;
        }
        /// <summary>
        /// Converts millimeters to dots in length.
        /// </summary>
        /// <param name="mm">length in millimeters</param>
        /// <returns>length in dots</returns>
        public static int MmToDots(float mm)
        {
            return (int)(mm / 0.125125f);
        }
        /// <summary>
        /// Converts number of dots in to inches in length
        /// </summary>
        /// <param name="dots">length in dots</param>
        /// <returns>length in inches</returns>
        public static float DotsToInches(int dots)
        {
            return dots * 0.0049125f;
        }
        /// <summary>
        /// Converts inches to dots in length.
        /// </summary>
        /// <param name="mm">length in inches</param>
        /// <returns>length in dots</returns>
        public static int InchesToDots(float Inches)
        {
            return (int)(Inches / 0.0049125f);
        }
    }

【讨论】:

  • 感谢转换课程。我手动进行了计算,但从长远来看,这些更有用。
  • 不幸的是,在行 (OEPL1) 或分页模式之间更改模式没有任何区别。省略页面大小也无济于事。到目前为止唯一有效的是确保打印出 4 行文本,并且打印的最后一行有文本。
  • @Fireclaw,我的想法已经用完了,我希望能帮助你更多。大约一年前,我真的深入研究了 EPL 的东西,但我现在有点生疏了,我不确定是什么导致了问题。我唯一能想到的另一件事是,打印的文本是否太长并且它正在使用打印缓冲区做奇怪的事情?
【解决方案2】:

驱动程序会发送一个初始化序列,这可能会弄乱您的标签。您可以通过将驱动程序的输出指向一个文件并查看驱动程序正在发送的内容来捕获它吗?您可以使用驱动程序设置来确保它们是正确的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    • 2011-01-02
    • 2017-06-25
    • 1970-01-01
    相关资源
    最近更新 更多