Jump to content
Fivewin Brasil

Programando em PPLA - Impressora Argox


jéssy

Recommended Posts

Boa tarde.

Estou alterando um projeto e não conheço muito sobre PPLA e impressão de Etiquetas. Estou com dúvidas referente as coordenadas X e Y. Não há muita coisa a respeito na internet e não encontrei nenhum emulador para poder testar minhas alterações. Os links que encontrei em fóruns estão off.

Alguém poderia me explicar como essa parte das coordenadas funciona? 

Tenho um código de barras e duas linhas de texto na etiqueta, então, se alguém tiver como explicar com algo parecido ao que tenho, seria ótimo.

Se não, só a explicação já é suficiente.

 

Obs.: Se alguém souber como eu posso testar sem ter a impressora, aceito também.

 

Desde já, muito obrigada.

Link to comment
Share on other sites

  • 3 months later...

Boa tarde, da uma olhada nesse exemplo:

#include "FiveWin.ch"


#xcommand @ <nRow>,<nCol> SAY <cText> OF <oPrinter> => <oPrinter>:Say(<nRow>, <nCol>, <cText> )

function PPLA(wREF,wQTDE)
LOCAL nREF1:=SPACE(08), nREF2:=SPACE(07), nIND:=0
LOCAL nVEND:=0, nQTD:=0, nIX:="", nCob
LOCAL nLin := 0, nCol:=0
wREF:=SPACE(15)
wQTDE:=0
nREF1:=(wREF,8)
nREF2:=(wREF,7)
nVEND:=45.50
nQTD:=wQTDE
nCob:="00000017"
nIX:="R$"

oPrn:= TDosPrn():New("CODIGO.PRN")
oPrn:StartPage()
oPrn:lZeraBuffer:=.T. // Inibe o Pulo da P gina

WHIL ! ISPRINTER()
   IF ! MsgRetryCancel( "Sua Impressora, Não Esta Ligada!!!   " + CRLF + ;
            "Favor Verificar e tente de novo!",;
            "Erro de Impressora!" )
      Return Nil
   ENDIF
ENDDO

oPrn:Say(1, 1, CHR(002)+"m"+CHR(13) ) // * Configura em milimitros
oPrn:Say(1, 1, CHR(002)+"L"+CHR(13) ) // * INICIA com o comando de entrada do formato da etiqueta
oPrn:Say(1, 1, "H12"+CHR(13) ) // Qualidade
oPrn:Say(1, 1, "D11"+CHR(13) ) // Densidade

For nCol := 1 to 3

*If !Empty(aConteudo1[nVz,nCol])
cLin1 := "Produto"
cLin2 := "Texto2"
cLin3 := "20,60"
cBar := "0000000009173"
cBar1 := "5029"

// CHR(002)+"L"+CHR(13) = Comando de entrada do formato da etiqueta
// Formato Texto:
// 1.2.1.1.000.0100.0050, onde:
// 1 = Orientação da etiqueta
// 2 = Fonte (0-8 com Subtipo 000 /ou/ 9 com Subtipo de 000 a 007 /ou/ : com subtipo 000 a 005)
// 1 = Multiplicador Horizontal
// 1 = Multiplicador Vertical
// 000 = Subtipo da Fonte (000 a 007, depende da Fonte) - Quanto maior o número maior a fonte.
// 0100 = Posição inicial Y (linha) máximo=101.6
// 0050 = Posição inicial X (coluna) máximo=762
// Exemplo: = oPrn:Say(1,1,CHR(002)+"L"+CHR(13)+"121100001000050"+"Esta é uma etiqueta teste"+CHR(13)+"E"+CHR(13))
//
// Formato CodBar:
// 1.2.1.1.000.0100.0050, onde:
// 1 = Orientação da etiqueta
// 2 = Tipo da Barra EAN13, 2-5
// 1 = Largura da Barra Largua
// 1 = Largura da Barra Fina
// 000 = Altura do Código de Barras
// 0100 = Posição inicial Y (linha) máximo=101.6
// 0050 = Posição inicial X (coluna) máximo=762
/*
Do Case
Case nTipoBar=1 ; cLetra:="A" // Code 3 de 9
Case nTipoBar=2 ; cLetra:="E" // Code 128
Case nTipoBar=3 ; cLetra:="F" // Ean 13
Case nTipoBar=4 ; cLetra:="G" // Upca
End
*/
xcodi:="1F1209000100410"

if nCol=1
    oPrn:Say(1, 1, "120100001700050"+cLin1+CHR(13) ) // nome da empresa
    oPrn:Say(1, 1, "121100001500050"+cLin3+CHR(13) ) // valor
    oPrn:Say(1, 1, "1F1209000100050"+cBar +CHR(13) ) // Código de Barras
            //1F1203000500300
elseif nCol=2
    oPrn:Say(1, 1, "120100001700410"+cLin1+CHR(13) ) // nome da empresa
    oPrn:Say(1, 1, "121100001500410"+cLin3+CHR(13) ) // valor
    oPrn:Say(1, 1, xcodi+cBar +CHR(13) ) // Código de Barras
elseif nCol=3
    oPrn:Say(1, 1, "120100001700770"+cLin1+CHR(13) ) // nome da empresa
    oPrn:Say(1, 1, "121100001500770"+cLin3+CHR(13) ) // valor
    oPrn:Say(1, 1, "1A0009000100770"+cBar1+CHR(13) ) // Código de Barras
                        

EndIf
Next nCol
oPrn:Say(1, 1, "E"+CHR(13) ) // * ENCERRA a etiqueta
oPrn:EndPage() // Obrigat¢rio
oPrn:End() // Idem
SysRefresh()

ImpSpool( "CODIGO.PRN", "LPT1", .T. )
return .t.

//----------------------------------------------------------------------------//
FUNCTION ImpSpool( cFileTxt, cPorta, lErase )
        LOCAL CPRINTER
        //para capturar antes da impressão
    //cPorta := PrnGetPorta()
    //WinExec( cPorta )
    //depois da impressão
    //WinExex( "Net Use Lpt1: \Delete" )
    //Ficou mais facil e simples do que criar as portas na Classe TDosPrn
    //cPorta := If( cPorta == nil, Alltrim( PrnGetPort() ), cPorta ) ; lErase := If( lErase == nil, .T., lErase );
        //cPorta := PrnGetPort()
    Default cPorta := Alltrim( PrnGetPort() ), lErase:= .t.
        cPrinter := PrinterPortToName( cPorta )
        IF EMPTY( cPrinter ) // By Kleyber Derick
           cPrinter := PrinterPortToName( "USB002" )
           IF EMPTY(cPrinter)
              cPrinter := PrinterPortToName( "USB001" )
           ENDIF
           // e se estiver nas USB003 OU USB004?
        ENDIF
    
    IF .NOT. FILE( cFileTxt )
           MsgInfo( OemToAnsi( "NÇO ACHEI O ARQUIVO MODO TEXTO PARA IMPRIMIR NA MATRICIAL" ), ;
                OemToAnsi( "NÇO ACHEI O ARQUIVO MODO TEXTO PARA IMPRIMIR NA MATRICIAL" ) )
           RETURN( .F. )
        ENDIF
        IF .NOT. EMPTY( cPrinter )  // TEM USB
           PrintFileRaw( cPrinter, cFileTxt, "Impressão de CÓDIGO" )
        ELSEIF LEN( cPorta ) <= 5 .and. Left( Upper(cPorta), 4 ) = "LPT1"
           //--- Spool Local - Matricial em LPT1
       cPorta:= "PRN"
           WAITRUN("COMMAND.COM /C COPY /B " + cFileTxt + " " + cPorta, 0 )
        ELSE
           //--- Spool Remoto - Matricial em LPT1
       WAITRUN("COMMAND.COM /C COPY /B " + cFileTxt + " " + cPorta, 0 )
        ENDIF
        IF lErase // Vem .T. da tela de vendas
       FERASE( cFileTxt )  // apaga o .TXT
    ENDIF
RETURN( .T. )

Link to comment
Share on other sites

  • 3 months later...
Em 16/02/2022 at 14:44, rochinha disse:

 

Amigo esta linguagem da Zebra poderia ser usada em uma ARGOZ OS- 2140 em PPLA ou emular para usá-la?
O Visualizador On Line é muito bom para contruirmos a etiqueta e depois só usar como no exemplo abaixo que é ao meu ver beeeeem mais simples:
 

FUNCTION ETIQUETA_ZEBRA(nPEDI, nVOLU)
LOCAL nQTDE:=[1]
PRIVATE TXTARQ, WLINHA, nTAMANHO, TXT:=[], xTXT:={}
PRIVATE AAA := CurDrive()+":\"+CurDir()+[\TEMP\ETI]+SUBSTR(TIME(),1,2)+SUBSTR(TIME(),4,2)+SUBSTR(TIME(),7,2)+[.PRN]
PRIVATE ARQTESTE
IF ( ARQTESTE := FCreate( AAA,0 ) ) == F_ERROR
   HWG_MSGINFO([Nao criou o arquivo]+CRLF+ALLTRIM(AAA))
   RETURN NIL
ELSE
   FCLOSE(ARQTESTE)
ENDIF
SAIR()
@ 01,00 SAY PADC([Imprimir etiquetas de envio - ZEBRA], 80 )
@ 11,00 SAY [No. Pedido: ] GET nPEDI PICT [999999]
@ 12,00 SAY [No Volumes: ] GET nVOLU PICT [999]
READ

IF LASTKEY() = 27
   SAIR()
   RETURN NIL
ENDIF

USE xMITI NEW SHARED
SET INDEX TO XMITNOTA
DBSEEK(nPEDI, .F.)

IF FOUND()
   cCODCLI:=CODCLI ; cRAZ:=RAZAO   ; cNNF:=NNFE    ; xOBSER1:=OBS1
   xOBSER2:=OBS2   ; xOBSER3:=OBS3 ; xOBSER4:=OBS4 ; xVLRNFe:=TOTNOTAS
   CLOSE DATA
   USE xCLIENTE SHARED NEW
   SET INDEX TO xRCLICOD
   DBSEEK( cCODCLI, .F.)
   IF FOUND()
      cENDERECO:=ENDENTREGA ; cBAIRRO:=BAIEN ; cCIDADE:=CIDADEEN ; cUF:=ESTAEN ; cCEP:=CEPEN
      SAIR()
   ELSE
      nOPT:=0
      ALERTNEW([Dados do cliente nao localizados])
      SAIR()
      RETURN NIL
   ENDIF
ELSE
   nOPT:=0
   ALERTNEW([Pedido nao localizado])
   SAIR()
   RETURN NIL
ENDIF

C:=1
DO WHILE  C <= nVOLU
   IF C = 1
      TXT := [^XA~TA000~JSN^LT0^MNW^MTD^PON^PMN^LH0,0^JMA^PR4,4~SD15^JUS^LRN^CI0^XZ]
      AADD( xTXT, TXT  )
   ENDIF
   TXT:=[^XA]
   AADD( xTXT,  TXT  )
   TXT:=[^PW831]
   AADD( xTXT,  TXT  )
   TXT:=[^LL0799]
   AADD( xTXT,  TXT  )
   TXT:=[^LS0]
   AADD( xTXT,  TXT  )
   TXT:=[^CF0,50]
   AADD( xTXT,  TXT  )
   TXT:=[^FO50,50^FDHospitalar Com Med Ltda^FS]
   AADD( xTXT,  TXT  )
   TXT:=[^CF0,30]
   AADD( xTXT,  TXT  )
   TXT:=[^FO50,100^FDR  303^FS]
   AADD( xTXT,  TXT  )
   TXT:=[^FO50,140^FDJardim America^FS]
   AADD( xTXT,  TXT  )
   TXT:=[^FO50,180^FDCep: 99999-999 - GO - GO^FS]
   AADD( xTXT,  TXT  )
   TXT:=[^FO50,220^FDTel: (64) 9999-9999 ^FS]
   AADD( xTXT,  TXT  )
   TXT:=[^FO50,250^GB720,1,3^FS]
   AADD( xTXT,  TXT  )
   TXT:=[^CF0,25]
   AADD( xTXT,  TXT  )
   TXT:=[^FO50,280^FDDestinatario:^FS]
   AADD( xTXT,  TXT  )
   TXT:=[^CF0,30]
   AADD( xTXT,  TXT  )
   TXT:=[^FO50,330^FD]+ALLTRIM(cRAZ)     +[^FS]
   AADD( xTXT,  TXT  )
   TXT:=[^FO50,370^FD]+ALLTRIM(cENDERECO)+[^FS]
   AADD( xTXT,  TXT  )
   TXT:=[^FO50,410^FD]+ALLTRIM(cBAIRRO)  +[^FS]
   AADD( xTXT,  TXT  )
   TXT:=[^FO50,450^FDCEP: ]+ALLTRIM(cCEP) +[  ]+ALLTRIM(cCIDADE)+[  ]+ALLTRIM(cUF) + [^FS]
   AADD( xTXT,  TXT  )
   TXT:=[^FO50,510^GB720,1,3^FS]
   AADD( xTXT,  TXT  )
   TXT:=[^CF0,35]
   AADD( xTXT,  TXT  )
   TXT:=[^FO50,540^FDNo. NFe: ]+STRZERO(cNNF,9) + [  Valor NFe: R$ ]+STR(xVLRNFe,12,2)+[^FS]
   AADD( xTXT,  TXT  )
   TXT:=[^FO50,600^FDVolumes: ]+STRZERO(C,4)+[/]+STRZERO(nVOLU,4)+[   No. Pedido: ]+STRZERO(nPEDI,7)+[^FS]
   AADD( xTXT,  TXT  )

   TXT:=[^FO50,650^GB720,100,2^FS]
   AADD( xTXT,  TXT  )
   TXT:=[^FO60,690]
   AADD( xTXT,  TXT  )

   TXT:=[^FDPor favor atencao: CUIDADO MATERIAL FRAGIL^FS]
   AADD( xTXT,  TXT  )

   TXT:=[^PQ1,0,1,Y^XZ]
   AADD( xTXT,  TXT  )
   C++
ENDDO
A:=1
TXTARQ   := FOPEN( AAA, 2 )
nTAMANHO := LEN(xTXT)
DO WHILE A <= nTAMANHO
   WLINHA:= ALLTRIM(xTXT[A])+CHR(13)+CHR(10)
   FSEEK( TXTARQ, 0, 2 )
   FWRITE( TXTARQ, ALLTRIM(WLINHA), LEN(WLINHA))
   A++
ENDDO
FCLOSE(TXTARQ)
cArquivo:=alltrim(AAA)
Escolhe_impressora( cArquivo )  //Escolhe_impressora_VISUAL( cArquivo ) // teste visual em 01/10/2015
/*
cImpressora := GetDefaultPrinter()  // Pego a Impressora Padrão, como expliquei acima já deixo a Argox como padrão
PrintFileRaw(cImpressora, cArquivo, [Teste]) // Jogo o arquivo nela, ela pode estar LPT1, USB q vai embora...
*/
SAIR()
RETURN NIL

Abraços

Link to comment
Share on other sites

20 horas atrás, kapiaba disse:

Obrigado Kapi, resolvi fazer em FastReport e ficou show de bola com tudo e até QR Code pois se não fosse essa solução, essas bombas da Argox é um saco.
E olha o coração quando teu time for jogar com o mengão kkkkk

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...