Exemplo para Argox OS214 TT

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

camiloto
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 07 Jul 2004 02:37

Exemplo para Argox OS214 TT

Mensagem por camiloto »

Olá a todos.
Alguem tem e poderia postar e/ou indicar um exemplo para impressora de etiqueta de codigo de barras para a impressora Argox OS 214TT. Eu até tenho o manual em ingles dela, mas va se entender aquilo... Agradeço a todos.
caputo
Usuário Nível 1
Usuário Nível 1
Mensagens: 23
Registrado em: 29 Out 2007 08:39
Localização: Olímpia/SP

Mensagem por caputo »

São dois exemplos, imprimi etiqueta de produto com 2 carreiras e etiqueta de gondola
FUNCTION I_PRODUTO2(vqtde)
lin_01 := "R$ "+STR(PRECO_VEND,8,2)+B(01)+LEFT(fantasia_,10)
lin_02 := ALLTRIM(STR(CODPRODUTO,13))
lin_03 := LEFT(DESCRICAO,22)
lin_04 := SUBS(DESCRICAO,23,22)
lin_05 := LEFT(COMPLEMENT,22)
*
* "121100000800010"+lin_??
* | | | |Coluna 999
* | | |linha 9999
* | |Tamanho 999
* |Largura 99
*
FOR x = 1 TO vqtde
SET DEVICE TO PRINT
SET PRINTER TO MERCADOR.DAT
@ 00,00 SAY "O0220"
@ 01,00 SAY "M3000"
@ 02,00 SAY "c0000"
@ 03,00 SAY "f000"
@ 04,00 SAY "e"
@ 05,00 SAY "LC0000"
@ 06,00 SAY "H12"
@ 07,00 SAY "D11"
@ 08,00 SAY "SC"
@ 09,00 SAY "PC"
@ 10,00 SAY "R0000"
@ 11,00 SAY "z"
@ 12,00 SAY "W"
@ 13,00 SAY "^01"
@ 14,00 SAY "121100000800010"+lin_01
IF x+1 <= vqtde
@ 15,00 SAY "121100000800185"+lin_01
ENDIF
@ 17,00 SAY "1A5202000450010"+lin_02
IF x+1 <= vqtde
@ 18,00 SAY "1A5202000450185"+lin_02
ENDIF
@ 20,00 SAY "121100000500118"+lin_02
@ 21,00 SAY "121100000300010"+lin_03
@ 22,00 SAY "121100000200010"+lin_04
@ 23,00 SAY "121100000100010"+lin_05
IF x+1 <= vqtde
@ 24,00 SAY "121100000500292"+lin_02
@ 25,00 SAY "121100000300185"+lin_03
@ 26,00 SAY "121100000200185"+lin_04
@ 27,00 SAY "121100000100185"+lin_05
x += 1
ENDIF
@ 32,00 SAY "Q0001"
@ 33,00 SAY "E"
SET PRINTER TO
SET DEVICE TO SCREEN
RUN TYPE MERCADOR.DAT > LPT1
NEXT
* fim

FUNCTION I_GONDOLA()
qt_etiq := 1
COR_FUN()
SOMBRA(14,24,16,51,0)
SCROLL(14,24,16,51,0) ; COR_AMA()
@ 15,25 SAY B(05)+"Quantidade" GET qt_etiq PICT '999999' VALID qt_etiq >=1
SET CURSOR ON ; READ ; SET CURSOR OFF
FOR qt = 1 TO qt_etiq
SET DEVICE TO PRINT
SET PRINTER TO GONDOLA.DAT
* ARGOX
@ 00,00 SAY "00220"
@ 01,00 SAY "M3000"
@ 02,00 SAY "c0000"
@ 03,00 SAY "f000"
@ 05,00 SAY "e"
@ 04,00 SAY "L"
@ 06,00 SAY "LC0000"
@ 07,00 SAY "H12"
@ 08,00 SAY "D11"
@ 09,00 SAY "SC"
@ 10,00 SAY "PC"
@ 11,00 SAY "R0000"
@ 12,00 SAY "z"
@ 13,00 SAY "W"
@ 14,00 SAY "^01"
@ 15,00 SAY "1F1202000100005"+STRZERO(CODPRODUTO,13) &&--> C¢digo barras
@ 16,00 SAY "191200500500005"+DESCRICAO &&--> Descri‡Æo produto
@ 17,00 SAY "143314000000165"+TRANSFORM(PRECO_VEND,"@E 999.99") &&--> Pre‡o venda
@ 18,00 SAY "192300400000150R$" &&--> Moeda
@ 19,00 SAY "191100100400005"+fantasia_ &&--> Nome fantasia
* | | |Coluna
* | |linha
* |Tamanho
@ 20,00 SAY "Q0001"
@ 21,00 SAY "E"
999.99")
SET PRINTER TO
SET DEVICE TO SCREEN
RUN TYPE GONDOLA.DAT > LPT1
NEXT
* fim
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho Caputo

Código: Selecionar todos

@ 00,00 SAY "00220" 
Seria possivel que voce apresentasse o codigo ASC correspondente a "" junto com o restante da string?

Neste trecho voce faz referencia a uma função B()?

Código: Selecionar todos

lin_01 := "R$ "+STR(PRECO_VEND,8,2)+B(01)+LEFT(fantasia_,10) 
E neste trecho esta faltando algo:

Código: Selecionar todos

@ 19,00 SAY "191100100400005"+fantasia_ &&--> Nome fantasia 
* | | |Coluna 
* | |linha 
* |Tamanho 
@ 20,00 SAY "Q0001" 
@ 21,00 SAY "E" 
999.99")                           
SET PRINTER TO 
SET DEVICE TO SCREEN 
RUN TYPE GONDOLA.DAT > LPT1 
NEXT 
Após @ 21,00 SAY "E"
Editado pela última vez por rochinha em 27 Fev 2008 00:21, em um total de 1 vez.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho Caputo,

Executei umas poucas mudanças em suas funções afim de torna-las genéricas desta forma quem se valer delas deverá apenas passar como parametros os campos que as mesmas manipulam, já que cada um da um nome diferente para campos de mesmo teor em suas tabelas.

Se possivel faça os testes e correções e poste o resultado na sessão código fonte

Código: Selecionar todos

FUNCTION I_PRODUTO2(vqtde     ,; // Quantidade de etiquetas
                    nCodigo   ,; // Codigo de Barras
                    cDescricao,; // Descricao
                    nPreco    ,; // Preco de Venda
                    cFantasia ,; // Nome Fantasia 
                    cComplement )
   lin_01 := "R$ "+STR(nPreco,8,2)+B(01)+LEFT(cFantasia_,10) 
   lin_02 := ALLTRIM(STR(nCodigo,13)) 
   lin_03 := LEFT(cDescricao,22) 
   lin_04 := SUBS(cDescricao,23,22) 
   lin_05 := LEFT(cComplement,22) 
   cARGOXfile := "MERCADOR.DAT"
   cCrLf      := chr(13)+chr(10)
   FOR x = 1 TO vqtde 
       errhandle := fcreate(cARGOXfile)
       cARGOXcmd := ""
       cARGOXcmd += "O0220"  + cCRLF
       cARGOXcmd += "M3000"  + cCRLF
       cARGOXcmd += "c0000"  + cCRLF
       cARGOXcmd += "f000"   + cCRLF
       cARGOXcmd += "e"      + cCRLF
       cARGOXcmd += "LC0000" + cCRLF
       cARGOXcmd += "H12"     + cCRLF
       cARGOXcmd += "D11"     + cCRLF
       cARGOXcmd += "SC"      + cCRLF
       cARGOXcmd += "PC"      + cCRLF
       cARGOXcmd += "R0000"   + cCRLF
       cARGOXcmd += "z"       + cCRLF
       cARGOXcmd += "W"       + cCRLF
       cARGOXcmd += "^01"     + cCRLF
       cARGOXcmd += "121100000800010"+lin_01 + cCRLF
       IF x+1 <= vqtde 
          cARGOXcmd += "121100000800185"+lin_01 + cCRLF
       ENDIF 
       cARGOXcmd += "1A5202000450010"+lin_02 + cCRLF
       IF x+1 <= vqtde 
          cARGOXcmd += "1A5202000450185"+lin_02 + cCRLF
       ENDIF 
       cARGOXcmd += "121100000500118"+lin_02 + cCRLF
       cARGOXcmd += "121100000300010"+lin_03 + cCRLF
       cARGOXcmd += "121100000200010"+lin_04 + cCRLF
       cARGOXcmd += "121100000100010"+lin_05 + cCRLF
       IF x+1 <= vqtde 
          cARGOXcmd += "121100000500292"+lin_02 + cCRLF
          cARGOXcmd += "121100000300185"+lin_03 + cCRLF
          cARGOXcmd += "121100000200185"+lin_04 + cCRLF
          cARGOXcmd += "121100000100185"+lin_05 + cCRLF
          x += 1 
       ENDIF 
       cARGOXcmd += "Q0001" + cCRLF
       cARGOXcmd += "E" + cCRLF
       fwrite(errhandle, cARGOXcmd )
       fClose(errhandle)
       //__CopyFile( cARGOXfile, "LPT1" )
       RUN TYPE &(cARGOXfile) > "LPT1"
       // Esperar alguns segundos para que o comando acima seja concluido
       //inkey(3)
   NEXT 

FUNCTION I_GONDOLA(qt_etiq   ,; // Quantidade de etiquetas
                   nCodigo   ,; // Codigo de Barras
                   cDescricao,; // Descricao
                   nPreco    ,; // Preco de Venda
                   cFantasia)   // Nome Fantasia 
   qt_etiq    := iif(qt_etiq=nil,1,qt_etiq)
   cARGOXfile := "GONDOLA.DAT"
   cCrLf      := chr(13)+chr(10)
   FOR qt = 1 TO qt_etiq 
       errhandle := fcreate(cARGOXfile)
       cARGOXcmd := ""
       fwrite(errhandle, "00220"  + cCRLF )
       fwrite(errhandle, "M3000"  + cCRLF )
       fwrite(errhandle, "c0000"  + cCRLF )
       fwrite(errhandle, "f000"   + cCRLF )
       fwrite(errhandle, "e"      + cCRLF )
       fwrite(errhandle, "L"      + cCRLF )
       fwrite(errhandle, "LC0000" + cCRLF )
       fwrite(errhandle, "H12"     + cCRLF )
       fwrite(errhandle, "D11"     + cCRLF )
       fwrite(errhandle, "SC"      + cCRLF )
       fwrite(errhandle, "PC"      + cCRLF )
       fwrite(errhandle, "R0000"   + cCRLF )
       fwrite(errhandle, "z"       + cCRLF )
       fwrite(errhandle, "W"       + cCRLF )
       fwrite(errhandle, "^01"     + cCRLF )
       fwrite(errhandle, "1F1202000100005"   + STRZERO(nCodigo,13) + cCRLF )
       fwrite(errhandle, "191200500500005"   + cDescricao + cCRLF )
       fwrite(errhandle, "143314000000165"   + TRANSFORM(nPreco,"@E 999.99") + cCRLF )
       fwrite(errhandle, "192300400000150R$" + cCRLF )
       fwrite(errhandle, "191100100400005"   + cFantasia + cCRLF )
       fwrite(errhandle, "Q0001"  + cCRLF )
       fwrite(errhandle, "E"      + cCRLF )
       //999.99") 
       //fwrite(errhandle, cARGOXcmd )
       fClose(errhandle)
       //MemoWrit( "GON.DAT", cARGOXcmd )
       //__CopyFile( cARGOXfile, "LPT1" )
       RUN TYPE &(cARGOXfile) > "LPT1"
       // Esperar alguns segundos para que o comando acima seja concluido
       //inkey(3)
   NEXT 
   return .t.
Eu apenas modifiquei-as para meu uso futuro e não testei em nenhuma impressora, apenas visualizei o arquivo gerado.
Editado pela última vez por rochinha em 27 Fev 2008 09:51, em um total de 1 vez.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
frazato
Usuário Nível 3
Usuário Nível 3
Mensagens: 219
Registrado em: 08 Jul 2004 07:45

Mensagem por frazato »

Passei a utiliza este tipo de recurso para nao mais prescisar ficar mudando sempre o sistema deacordo com a impressora do cliente ou o formato que as vezes ele queira criar, esta rotina funciona legal em win98 no caso do xp estou colocando a impressao direta usando HBcomm.


If Etq_Personalizada(mFormato) == .F. // Caso nao tenha o Lay Programa
Forma001() // formato padrao
Endif


//------------------------------------------------------
Function Etq_Personalizada(nFormato)
Local cArquivo := "Etq_"+StrZero(nFormato,3)+".txt"
Local cTexto := MemoRead(cArquivo)
Local nLinha := MLCount(cTexto)
LOCAL VarTxt1 := ""
LOCAL VarTxt2 := ""

If ! File(cArquivo)
cArquivo := "Etq_001"+".txt"
If ! File(cArquivo)
Return ( .F. )
Endif
Endif
If Lerparam("SISTEMA_OS") == "WIN"

Set Printer to (mSaida)
Set Device to Printer
Else
Set Printer to "Tag.txt"// (mSaida)
Set Device to Printer
Endif
SetPrc(0,0)
For X:= 1 to nLinha
cTxt := memoline(cTexto,80,X)
cString := "cComand :="+cTxt
cCmd := &(cString)
@ x,00 Say cCmd
Next
If Lerparam("SISTEMA_OS") == "WIN"
Set Printer to ( mSaida )
Set Device to Screen
Else
Set Device to Screen
Set Printer to // ( mSaida )
! Copy Tag.txt mSaida > Nul
Endif

Return nil


/// Exemplo de um arquivo que uso etq_002.txt

"O0220"
"M3000"
"e"
"c0000"
"f000"
"L"
"C0020"
"H12"
"D11"
"SC"
"PC"
"R0000"
"z"
"W"
"^01"
"191200300740010"+WDESCRICAO
"191200300500005DE"
"192200500200005"+WPRECOVENDA
"192200200500120POR"
"192200700070152"+WVENDA
"191100200000010"+WCODIGOPLU+" Ean:"+WCODIGOEAN
"Q"+WQUANTIDADE
"E"
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho Frazato

Voce tem o manual em PDF desta impressora? pode me mandar por favor?
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Responder