ESC / P Установить абсолютную горизонтальную позицию печати

У меня проблемы с настройкой горизонтальной позиции печати в матричном принтере Epson LX-300 II. Команда для установки горизонтальной позиции печати иногда не работает.

Мне нужно это, чтобы выровнять данные для печати в соответствующем столбце в предварительно напечатанной бумажной форме.

Учитывая следующий код:

        // row 1
        escp.setAbsoluteHorizontalPosition(1);
        escp.print("Equipment");
        escp.setAbsoluteHorizontalPosition(10);
        escp.print("Serial");
        escp.setAbsoluteHorizontalPosition(13);
        escp.print("Remarks");

        // row 2
        escp.lineFeed();
        escp.setAbsoluteHorizontalPosition(1);
        escp.print("Equipment");
        escp.setAbsoluteHorizontalPosition(10);
        escp.print("Serial");
        escp.setAbsoluteHorizontalPosition(13);
        escp.print("Remarks");

Это ожидаемый результат:

Equipment                  Serial     Remarks
Equipment                  Serial     Remarks

Тем не менее, это фактический вывод на печать:

EquipmentSerial                        Remarks
EquipmentSerial                        Remarks

Я не могу понять, почемуСериал» не печатается в правильном положении.

Чтобы попытаться выяснить это, я сделал тестовую программу, которая печатает «х» 1 см друг от друга в одной строке.

Вот пример кода из тестовой программы:

    ESCPrinter escp = new ESCPrinter(sharedPrinterName, false);
    if((escp.initialize()) == false) {
        return;
    }
    escp.select10CPI();
    escp.set8LPI();
    escp.setCharacterSet(ESCPrinter.USA);                
    for(int x = 1; x < 15; x++) {
        escp.setAbsoluteHorizontalPosition(x);
        escp.print("x");
    }
    escp.formFeed();
    escp.close();

Ожидаемый результат:

x    x    x    x    x    x    x    x    x    x    x    x    x    x

Фактический вывод:

x    x    x    x    xxxxxx                    x    x    x    x

ЭтоEpson ESC / P Справочное руководствои этосторонний код Я использую для отправки команд принтера, которые я немного изменил для реализации метода set8LPI ().

В справочном руководстве команда для установки абсолютной горизонтальной позиции печати находится в C-31.

Я пытался понять это сам в течение нескольких дней, но я не приблизился к поиску решения.

Дополнительная информация

Я сделал еще одну тестовую программу, которая печатает тестовые данные с позиций от 0,0 до 19,8 см с шагом 0,2 см и переводом строки между ними.

Данные теста, которые я напечатал, также являются абсолютной горизонтальной позицией, которую я указал (для облегчения идентификации).

Было бы непрактично показывать вам точную печатную информацию, поэтому я просто опишу их как можно лучше.

Установка горизонтального положения от 0.0 до 5.4, кажется, работает, с выводом, похожим на это:

0.0
 0.2
  0.3
   0.4
   .
   .
   .
   -------->  5.4

После этого установка абсолютного горизонтального положения на 5,6 см до 10,8 см игнорируется. Принтер просто печатает на самой левой части бумаги.

"установить абсолютное горизонтальное положение Команда снова работает для 11.0cm до 16.2cm. Игнорируется снова для 16.4cm до 19.8cm.

Как я понимаю, справочное руководство ESC / P, которое я связал выше, принтер игнорирует эту команду, когда указанная позиция находится за правым полем. Больше ничего не указано.

Очевидно, что мои ценности все в пределах.

Итак, это может быть аппаратная проблема с принтером?

-> Не аппаратная проблема. Я получил те же результаты, используя другой принтер.

Обновить

Дана команда для установки абсолютного горизонтального положения: ESC $ nl nh

Я сделал другую тестовую программу, где я непосредственно вводил параметры nh и nl.

Я понял, что эта команда игнорируется всякий раз, когда значение nl превышает 127.

Я нахожу это удивительным, поскольку в справочном руководстве указано, что максимальное значение для nl составляет 255.

Этот вывод согласуется с первой тестовой программой, в которой я вводил горизонтальное положение в сантиметрах. Когда я конвертирую сантиметры в соответствующие значения nh и nl для игнорируемых команд, результирующие значения nl превышают 127.

Ответы на вопрос(1)

Ваш ответ на вопрос