Ошибка команды DP в принтере Intermec
Я использую протокол Intermec Direct для передачи команд печати на принтер. Он содержит текст, а также штрих-код.
Печать работает, как ожидается, для чисел с 12 цифрами. Однако, когда я пытаюсь напечатать числа, имеющие цифры от 13 до 18, это не дает никакого вывода. Любые исключения также не выбрасываются.
Вот команда, которая отлично работает. "БАРСЕТ" здесь имеет номер, длина которого 20
INPUT ON: CLIP ON: CLIP BARCODE ON:
. CLL:
. PP23,1184: AN7:
. PP23,1184: AN7:
. PP23,1184: AN7:
. DIR1: NASC 1252:
. FT 'Swiss 721 BT':
. FONTSIZE 8: FONTSLANT 0:
. FONTSIZE 36: PP104,330
. BARSET 'CODE128C',2,1,4,305: PB CHR$(128);\”00100280283000550596\":
. PF1\r\n
Однако, когда я изменяю длину BARSET на число, содержащее 13 цифр, вывод не приходит вообще.
INPUT ON: CLIP ON: CLIP BARCODE ON:
. CLL:
. PP23,1184: AN7:
. DIR1: NASC 1252:
. FT 'Swiss 721 BT':
. FONTSIZE 8: FONTSLANT 0:
. FONTSIZE 36: PP104,330:
. BARSET 'CODE128C',2,1,4,305: PB CHR$(128);\”1234567891234\":
. PF1\r\n
Эта строковая переменная сначала преобразуется в байтовый массив. Этот байтовый массив передается OutputStream, который, в свою очередь, печатает метку.
Все работает нормально, кроме BARSET, но когда заданное значение от 13 до 18 цифр, оно не печатает метку и не выдает никаких исключений.
1 ответ
Код 128 C требует четного количества цифр. Это часть спецификации. Если вам нужно напечатать нечетное число цифр, вам нужно использовать другую символику, например, код 128 B (который менее плотный, fwiw).