ESC / P Ustaw bezwzględną poziomą pozycję drukowania

Mam problem z ustawieniem poziomej pozycji drukowania w drukarce igłowej Epson LX-300 II. Polecenie ustawienia poziomej pozycji drukowania czasami nie działa.

Potrzebuję tego, aby dopasować dane do wydruku do odpowiedniej kolumny we wstępnie zadrukowanej formie papieru.

Podany następujący kod:

        // 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");

Jest to oczekiwane wyjście:

Equipment                  Serial     Remarks
Equipment                  Serial     Remarks

Jest to jednak rzeczywisty wydruk:

EquipmentSerial                        Remarks
EquipmentSerial                        Remarks

Nie mogę zrozumieć, dlaczego „Serial” nie jest drukowany na właściwej pozycji.

Aby to zrozumieć, stworzyłem program testowy, który drukuje „x” w odległości 1 cm od siebie w jednej linii.

Oto przykładowy kod z programu testowego:

    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();

Oczekiwany wynik:

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

Rzeczywista wydajność:

x    x    x    x    xxxxxx                    x    x    x    x

To jestEpson ESC / P Reference Manual, a to jestkod innej firmy Używam do wysyłania poleceń drukarki, które nieco zmodyfikowałem, aby zaimplementować metodę set8LPI ().

W podręczniku referencyjnym polecenie ustawienia bezwzględnej pozycji wydruku poziomego znajduje się w C-31.

Sam próbowałem to rozgryźć przez kilka dni, ale nie jestem bliżej znalezienia rozwiązania.

Dodatkowe informacje

Zrobiłem kolejny program testowy, który drukuje dane testowe z pozycji od 0,0 cm do 19,8 cm, z przyrostami co 0,2 cm i liniami między nimi.

Dane testowe, które wydrukowałem, to także bezwzględna pozycja pozioma, którą określiłem (dla łatwiejszej identyfikacji).

Byłoby niepraktyczne, aby pokazać dokładny wydruk, więc opiszę je najlepiej, jak potrafię.

Ustawienie pozycji poziomej na 0.0 do 5.4 wydaje się działać, a wyjście wygląda następująco:

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

Następnie ustawienie bezwzględnej pozycji poziomej na 5,6 cm do 10,8 cm jest ignorowane. Drukarka drukuje po lewej stronie papieru.

Polecenie „ustaw bezwzględną pozycję poziomą” działa ponownie od 11,0 cm do 16,2 cm. Zignorowane ponownie przez 16,4 cm do 19,8 cm.

Ponieważ rozumiem podręcznik ESC / P, o którym mowa powyżej, drukarka ignoruje to polecenie, gdy określona pozycja jest poza prawym marginesem. Nic innego nie jest określone.

Oczywiście wszystkie moje wartości są na marginesie.

Czy to może być problem sprzętowy z drukarką?

-> Nie problem sprzętowy. Otrzymałem takie same wyniki przy użyciu innej drukarki.

Aktualizacja

Biorąc pod uwagę polecenie ustawienia bezwzględnej pozycji poziomej: ESC $ nl nh

Zrobiłem inny program testowy, w którym bezpośrednio wprowadzam parametry nh i nl.

Zdałem sobie sprawę, że to polecenie jest ignorowane, gdy wartość nl przekracza 127.

Uważam to za zaskakujące, ponieważ podręcznik wskazuje, że maksymalna wartość nl wynosi 255.

Odkrycie to jest zgodne z pierwszym programem testowym, w którym wprowadzam pozycję poziomą w centymetrach. Kiedy konwertuję centymetry na odpowiednie wartości nh i nl dla poleceń, które są ignorowane, otrzymane wartości nl są większe niż 127.

questionAnswers(1)

yourAnswerToTheQuestion