Zebra TLP2844 Windows 7 Проблема выхода USB

Я использую 32-разрядную версию Windows 7 с последними драйверами от Zebra и печатаю через USB на TLP2844. Я пытаюсь создать набор этикеток и распечатать их на принтере этикеток из С#, используя класс RawPrinterHelper, как упоминалось в многочисленных сообщениях в Интернете. Если я включаю принтер и использую команду oM, которая отключает начальную подачу последовательности Esc, тогда он работает отлично и правильно печатает две этикетки. После этого высота оказывается неправильной, потому что вместо двух этикеток печатается одна этикетка со вторым фрагментом текста внизу этикетки. Любая помощь будет оценена по достоинству.

Размеры этикетки: Ширина: 75 мм Высота: 34 мм Зазор: 3 мм

Пример последовательности команд, отправляемой на принтер:

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

person FireClaw    schedule 15.11.2010    source источник
comment
У меня есть несколько старых заметок по этому поводу, которые я постараюсь откопать сегодня вечером. А пока, удачи. Эти принтеры никогда не работают, даже если все правильно!   -  person Brad    schedule 15.11.2010
comment
Я достаточно работал с Zebra, чтобы знать, что почти любой другой вариант лучше. Удачи :\   -  person NotMe    schedule 15.11.2010
comment
Можете ли вы опубликовать полную последовательность команд, которые вы отправляете на принтер по проводу, чтобы увидеть, не упустили ли вы что-нибудь.   -  person Scott Chamberlain    schedule 15.11.2010
comment
Почему вы используете команду oM, вы отправляете необработанные команды, а не используете драйвер Windows, поэтому я не вижу в этом необходимости?   -  person Scott Chamberlain    schedule 15.11.2010
comment
Я отправляю необработанные команды на интерфейс USB, к которому подключен принтер, и, насколько я понимаю в руководстве EPL, мне нужно было отправить эту команду при использовании драйвера Windows. Моя проблема в том, что он отлично работает для первой печати после включения принтера, а затем нет. Код теста основан на информации из этой статьи nicholas.piasecki.name/blog/2009/03/   -  person FireClaw    schedule 15.11.2010
comment
В статье никогда не используется команда oM (по уважительной причине). попробуйте удалить его и посмотреть, работает ли ваш код.   -  person Scott Chamberlain    schedule 15.11.2010
comment
Если вы никогда не собираетесь печатать из приложения (скажем, word или блокнот) и печатать только из своего кода на принтер, я рекомендую просто установить драйвер Generic/Text Only, встроенный в Windows.   -  person Scott Chamberlain    schedule 15.11.2010
comment
Я добавил команду oM, потому что пример не работает. Он печатает текст для обеих этикеток на одной этикетке. Я даже пытался увеличить высоту метки, пытаясь поместить текст на следующую метку, но безуспешно. Команда oM была единственной вещью, которая заставила его печатать правильно, но только если вы перезагрузили принтер перед попыткой печати. Это явно не рабочий вариант.   -  person FireClaw    schedule 15.11.2010
comment
Пробовал установить универсальный/текстовый драйвер и удалил команду oM, но, к сожалению, получил тот же результат. При первом включении принтера он печатает две этикетки правильно, но если я напечатаю их снова, они будут напечатаны на одной и той же этикетке. Если я установлю высоту больше, чем должна быть, то выравнивание пойдет не так, но этикетки все равно не будут напечатаны правильно.   -  person FireClaw    schedule 15.11.2010
comment
Попробуйте без Q и без ОМ. Также убедитесь, что новая строка после вашего последнего P1 отправляется по строке.   -  person Scott Chamberlain    schedule 15.11.2010
comment
Нет, это не сработало, но если я печатаю четыре строки текста, он работает правильно. Все, что меньше этого, и это неправильно. Предполагаю, что это что-то с Windows 7 Pro и интерфейсом принтера.   -  person FireClaw    schedule 16.11.2010


Ответы (2)


Поскольку вы отключаете обнаружение верхней части метки, наиболее вероятной причиной является то, что ваш Q272,024 недостаточно велик. Поскольку вы не опубликовали слишком много дополнительной информации, я не уверен, почему вы используете команду oM из своего примера, это не кажется необходимым.


Попробуйте опустить Q и oM, устройство должно быть достаточно умным, чтобы иметь возможность правильно питаться самостоятельно. (убедитесь, что вы сделали сброс, чтобы убедиться, что вы очистили все предыдущие 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);
        }
    }
person Scott Chamberlain    schedule 15.11.2010
comment
Спасибо за курсы конверсии. Я сделал расчет вручную, но они более полезны в долгосрочной перспективе. - person FireClaw; 15.11.2010
comment
К сожалению, изменение режима между строковым (OEPL1) или постраничным режимом не имело значения. Отсутствие размера страницы также не помогло. Единственное, что сработало до сих пор, - это обеспечить печать 4 строк текста и наличие текста в последней напечатанной строке. - person FireClaw; 16.11.2010
comment
@Fireclaw, у меня закончились идеи, я хотел бы помочь тебе больше. Я действительно копался в материалах EPL около года назад, но сейчас я немного заржавел, я не уверен, что вызывает проблему. Единственная другая вещь, о которой я могу думать, это то, что текст печатается слишком долго, и он делает странные вещи с буфером печати? - person Scott Chamberlain; 16.11.2010

Драйвер отправляет последовательность инициализации, которая может испортить ваши метки. Можете ли вы зафиксировать вывод драйвера, указав его на файл и увидев, что драйвер отправляет? Вы можете поиграть с настройками драйвера, чтобы убедиться, что они верны

person Ovi Tisler    schedule 16.11.2010