Jak naprawiliśmy drukowanie etykiet przez LPT (krok po kroku) | Konfiguracja LPT do COMARCH XL

Jeśli aplikacja wymaga portu LPT (np. starsze moduły wydruku lub programy DOS-owe), najpewniejszą metodą jest „przechwycenie” drukarki etykiet na LPT i podanie jej gotowego pliku z danymi etykiety. Poniżej kompletna instrukcja, która u nas zadziałała.

1) Udostępnij drukarkę etykiet i nazwij udział

W Ustawienia → Drukarki i skanery wybierz swoją drukarkę etykiet → Właściwości drukarki → Udostępnianie → zaznacz Udostępnij tę drukarkę.
Nadaj prostą nazwę udziału, np. etykieta2.

2) Zmapuj drukarkę na port LPT

W wierszu poleceń (uruchomionym jako Administrator) wykonaj:

net use LPT1: /delete /y
net use LPT1: \\localhost\etykieta2 /persistent:yes

Dzięki temu każda aplikacja wysyłająca na LPT1: trafi do udziału \\localhost\etykieta2.

3) Zweryfikuj schemat wydruku w programie XL

W naszym przypadku schemat składał się z zapytania SQL, transformacji XSL oraz definicji pliku wyjściowego i skryptu uruchomieniowego.

Schemat wydruku etykiety:

[SQL]
select Wynik+CHAR(10) as Wynik from cdn.POL_EtyPrzyklad5
Order by Kolejnosc,Linia

[XSL]
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method = "xml" omit-xml-declaration="yes"/>
<xsl:preserve-space elements="*"/>
<xsl:template match="/">
<xsl:for-each select="ROOT">
<xsl:apply-templates select="RECORDSET1"/>
</xsl:for-each>
</xsl:template>
<xsl:template match="RECORDSET1">
<xsl:apply-templates select="RECORD" mode="r1"/>
</xsl:template>
<xsl:template match="RECORD" mode="r1">
<xsl:value-of select="@Wynik" />
</xsl:template>
</xsl:stylesheet>

[FILE]
C:\ETYKIETA\Etykieta.txt

[RUN]
c:\etykieta\DrukujKod.bat

4) Sprawdź zawartość skryptu drukującego

Plik: c:\etykieta\DrukujKod.bat

W naszym przypadku wystarczyło:

Copy C:\etykieta\etykieta.txt LPT1

I to wszystko — drukowanie działa OK.


Drobne wskazówki (warto wiedzieć)

  • Jeśli linie w pliku się „zlewają”, w SQL zamiast samego CHAR(10) użyj CHAR(13)+CHAR(10) (Windowsowy CRLF).
  • Niektóre drukarki/sterowniki lepiej przyjmują wysyłkę binarną: copy /b C:\etykieta\etykieta.txt LPT1:
  • Gdy pojawi się komunikat o uprawnieniach, uruchom CMD jako Administrator.
  • Jeśli komputer ma fizyczny port LPT1, a mapowanie nie działa, użyj LPT2: lub wyłącz fizyczny LPT w BIOS.

Masz podobny problem i chcesz, żebyśmy zrobili to z Tobą? Daj znać — pomożemy dobrać właściwy schemat i przygotujemy gotowe skrypty.

Dodaj komentarz