Я отправляю команды Zebra QLn220 для печати этикеток (естественно). У меня также есть код, который присваивает значения определенным настройкам принтера, например:
const string quote = "\"";
string keepPrinterOn = string.Format("! U1 setvar {0}power.dtr_power_off{0} {0}off{0}", quote);
string advanceToBlackBar = string.Format("! U1 setvar {0}media.sense_mode{0} {0}bar{0}", quote);
string advanceToGap = string.Format("! U1 setvar {0}media.sense_mode{0} {0}gap{0}", quote);
PrintUtils.SendCommandToPrinter(keepPrinterOn);
if (radbtnBar.Checked)
{
PrintUtils.SendCommandToPrinter(advanceToBlackBar);
}
else if (radbtnGap.Checked)
{
PrintUtils.SendCommandToPrinter(advanceToGap);
}
Это работает — после запуска этого кода с проверкой radbtnBar эти настройки теперь (как видно при запуске «! U1 getvar «allcv»» в приложении Zebra Setup Utilities):
power.dtr_power_off : off , Choices: on,off
media.sense_mode : bar , Choices: bar,gap
Проблема в том, что после установки этих значений с помощью приведенного выше кода, а затем попытки распечатать этикетки (по прошествии не менее 20 секунд и при проверке до более минуты), первые несколько попыток печати этикетки молча fail (сообщения об ошибке нет, просто печать не происходит). С третьей попытки этикетка печатается. Почему установка этих значений может привести к тому, что принтер временно «оглохнет», и могу ли я что-нибудь сделать, чтобы вернуть его в режим бодрствования после программного применения этих настроек, чтобы он начал печатать немедленно?
Как только QLn220, наконец, восстанавливает отзывчивость, он продолжает печатать сразу при последующих запусках приложения без задержек; только после отправки этих команд («power.dtr_power_off» и «media.sense_mode») принтер выбивается из своей орбиты на сезон. Настоящая зебра никогда не будет такой упрямой, как этот мул.
ОБНОВИТЬ
Идея Банно, по-видимому, сработала (добавление crlfs ("\r\n")) к командам для установки переменных принтера.
Итак, кажется, что происходило что-то вроде этого:
Команда 1 была отправлена на принтер для установки значения (без crlf).
Команда 2 была отправлена на принтер для установки другого значения (также без crlf)
Затем была предпринята попытка напечатать этикетку; он не печатал. Однако, увидев, что у него действительно есть crlf, печатник, казалось, сказал: «О, вы наконец-то дали мне один из crlf, которые вы мне должны! должен мне один!"
Вторая попытка напечатать этикетку привела к тому, что принтер, по сути, сказал: «Хорошо, значит, вы заплатили свой долг по crlf; с этого момента я буду слушать команды, которые вы отправляете (до тех пор, пока вы завершаете их с помощью crlf я так жадно жажду)».
ОБНОВЛЕНИЕ 2
Иногда это все еще не работает (непоследовательное поведение); Я обнаружил, что мне нужно «ткнуть его», чтобы заставить его избавиться от сомнамбулизма; см. Какие настройки Zebra QLn220 мне нужно установить (и какое значение [s]), чтобы настройка оставалась неизменной?