puerto lpt

1,004 views
Skip to first unread message

Juan Rojas C

unread,
Aug 27, 2010, 8:05:46 PM8/27/10
to mundovisualfoxpro
Buenas tardes:
 
Gracias por su atencion
 
Tengo una aplicacion desarrollada en vfp6, la cual tiene opciones de impresiones, dichas impresiones se hacen en una impresora Lx-300+ (la computadora tiene puerto paralelo incorporado en la placa y la impresora tiene entrada Lpt).
Los formatos que se imprimen son autocopiativos, es decir original con 4 copias, comienza mi rutina a imprimir de esta manera:
 
salida=sys(2015)+'.prn'
set devi to file &salida
@0,1 SAY CHR(27)+CHR(15)
@0,0 SAY CHR(27)+'C'+CHR(84)
.
.
@11,47 SAY TOTFOB PICT '9,999,999,999.999'
@11,105 SAY TOTFLE PICT '9,999,999,999.999'
@13,21 SAY TOTSEG PICT '9,999,999,999.999'
@13,63 SAY OTOTAJUS PICT '9,999,999,999.999'
@13,110 SAY TOTCIF PICT '9,999,999,999.999'
@17,35 SAY OIadval PICT '9,999,999,999.99'
@17,57 SAY XADV_DOLAR PICT '9,999,999,999.99'
@19,35 SAY OInadv5 PICT '9,999,999,999.99'
@19,57 SAY XSAD_DOLAR PICT '9,999,999,999.99'
@21,35 SAY sobrT PICT '9,999,999,999.99'
@21,57 SAY XDES_DOLAR PICT '9,999,999,999.99'
@23,35 SAY OTsc PICT '9,999,999,999.99'
@23,57 SAY XISC_DOLAR PICT '9,999,999,999.99'
@25,35 SAY OPROMUN PICT '9,999,999,999.99'
@25,57 SAY XIPM_DOLAR PICT '9,999,999,999.99'
@27,35 SAY Oigv PICT '9,999,999,999.99'
@27,57 SAY XIGV_DOLAR PICT '9,999,999,999.99'
@27,82  SAY ICIA
.
.
.
@79,01 say ' '+chr(12)
set devi to screen
set safe off
copy file &salida to lpt1.dos
 
hasta hoy no he tenido problemas, pero resulta que hemos comprado una computadora mucho mas moderna y una impresora Lx-300 II+ que tiene entrada USB y LPT, pero la computadora no trae el puerto de salida Lpt, solo el puerto USB, hemos instalado la impresora y se ha instalado en el puerto USB, entonces ahora cuando se manda a imprimir, la impresora no responde, se que comprando una tarjeta PCI Paralelo lo puedo solucionar, pero la consulta es si lo puedo solucionar sin adquirir dicha tarjeta PCI, para que imprima por el puerto LPT.
 
Gracias por sus respuestas.
 
JRCORONA
 

Grupo Baron

unread,
Aug 27, 2010, 8:42:05 PM8/27/10
to mundovis...@googlegroups.com

Podes ocupar el loopback adapter de Microsoft, Lo instalas y después le asignas una dirección ip al protocolo de internet versión 4(tcp/ipv4) ej 192.168.10.11 y la mascara de subred 255.255.255.0 (este loopback adapter te simula una tarjeta de red virutal)después lo mapeas como lpt1 en el dos usando el comando net use asi lo hice yo “net useLPT1 \\192.168.10.11\IMPTRABAJO”  y listo tu impresor ya puede imprimir Nosotros tuvimos el mismo problema con programas viejos de foxpro 2.6 y asi se soluciono.

 

Nota: asegurate que la dirección ip que le coloques al loopback adapter sea una que este en un rango que tu podas ver.

 

Si no sabes como instalar el loopbackadapter, buscalo en google y ahí te aparece bastante información.

 

Gerardo

--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
 
Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com

Gerardo

unread,
Aug 28, 2010, 9:14:23 AM8/28/10
to Mundo Visual FoxPro
Hola Juan

mira, yo utilizo el mismo método para imprimir y sin ningún problema
tiro a todos los tipos de impresoras y a todos los puertos (LX-300,
LX-300+, LX-300+II, TMU950 puerto serie, LASER y de TINTA, etc)... sin
cambiar nada. Acá en mi oficina tengo una LX300 paralelo y una laser
USB dependiendo cual tenga como predeterminada imprimo con @ .... say
sin inconvenientes.

lo que hago diferente es que envío directamente a la impresora:
SET DEVICE TO printer
SET PRINTER ON &&PROMPT
@ ... say ...

lo que pienso es que estás enviando la salida al LPT1 y no a la
impresora predeterminada, fijate si puedes probar eso y si quieres me
comentas.
suerte
saludos,
Gerardo.

Intel Man

unread,
Aug 28, 2010, 9:22:42 AM8/28/10
to mundovis...@googlegroups.com
Hola, para que mandas primero la impresion a un archivo? porque no lo mandas directo a la impresora? creo que te complicas mucho si es tan facil mandar a cualquier impresora sea por lpt, usb, wifi, red, etc :) y todo desde visual foxpro ;)

set print to name "nombre de tu impresora usb"
set devi to print
?" "   &&PARA QUE IMPRIMA EN MODO DRAFT

@0,1 SAY CHR(27)+CHR(15)
@0,0 SAY CHR(27)+'C'+CHR(84)
.
.
@11,47 SAY TOTFOB PICT '9,999,999,999.999'
@11,105 SAY TOTFLE PICT '9,999,999,999.999'
@13,21 SAY TOTSEG PICT '9,999,999,999.999'

set device to screen
set print to


Saludos



Date: Sat, 28 Aug 2010 02:05:46 +0200
Subject: [Mundo Visual FoxPro] puerto lpt
From: jrsi...@gmail.com
To: mundovis...@googlegroups.com

Daniel Sánchez

unread,
Aug 28, 2010, 9:52:35 AM8/28/10
to mundovis...@googlegroups.com
Como te comentan gerardo e intel man, es la mejor manera de hacerlo, no tienes que lidiar con puertos ni nada por el estilo, siempre hay que aprovechar las ventajas que nos da el SO para estas cosas, una cosa mas, fíjate en tu ayuda de vfp sobre estos comandos que te indicaron set print to name, set device to print, no recuerdo bien, hay uno me parece que adicionándole el parámetro prompt que me muestra la ventana de selección de impresoras para que al momento de imprimir se direcciona a cualquiera de las que tengas instalada en tu SO ya sea local o de red.
Lo que si tuve siempre el inconveniente al usar impresión con say es el que cambia la cantidad de columnas dependiendo de la impresora seleccionada, y también el tamaño de los caracteres, eso no me ocurre con el uso del generador de reportes, que para mi hasta ahora fue una mejor alternativa al uso del comando say.


--
Daniel Sánchez Escobar
Investigación y Desarrollo
Reset Software & Sistemas
Móvil 044-949398047
Trujillo - Perú

Intel Man

unread,
Aug 28, 2010, 10:22:25 AM8/28/10
to mundovis...@googlegroups.com
Hola, yo tambien pienso que es una buena alternativa usar el generador de reportes en vez de usar el @say.

Pero hay casos en que el @say es necesario al menos en mi caso, y hasta ahora no encuentro como hacerlo con el generador de reportes.

El problema que tengo es imprimir en modo draft desde el generador de reportes, algunos diran: pero usa la letra draft, ya lo hize pero en algunas pc no sale esa bendita letra :S  o usa courier new pero no es lo mismo en impresoras matriciales que imprimen lento, e imprimir unas 100 hojas se demora toda la eternidad :(

Y el otro problema es el de imprimir de una manera mas facil en un formato perzonalizado de papel usando el generador de reportes, ya que cuando uno personaliza un formato de papel en windows, en la otra pc cambia y hay que crear el formato nuevo o recompilar la aplicacion y hacerlo en 30 pc's ya es todo un grannnnnnnn reto :)  y con el @say a travez de comandos puedo personalizar el tamaño de mi hoja y no tengo que configurar nada en windows.

Y por lo demas todo lo hago usando el generador de reportes :)

Saludos



Date: Sat, 28 Aug 2010 08:52:35 -0500
Subject: Re: [Mundo Visual FoxPro] puerto lpt
From: resets...@gmail.com
To: mundovis...@googlegroups.com

Moises Daniel Vilchez Tello

unread,
Aug 28, 2010, 10:34:29 AM8/28/10
to mundovis...@googlegroups.com
saludos amigo, yo imprimo de esta manera, espero te sirva, con sistemas tipo clipper y fox2.6, habia q enviarlo directo al lpt1, pero con USB cambia el tema..
OJO el tipo de letra draft en Imp. Matriciales es rapida, pero en inyeccion es un poco lenta, espero te sirva un abrazo desde Peru



Function Impresion(lCodc, lTipodoc, lNser, lfecha, vValor, vIGV, vTotal, lOpci, CSR_1, TotValorD, TotIgvD, n_letras, n_guia, lmone)
SET PRINTER FONT "draft 17cpi", 10 && Tipo de FUente y tamaño
Set Device To PRINTER && prompt
@SQL_Conf.fini,8  say sqlclie.nomb && Fila Inicial
@SQL_Conf.fini+ 2,8  say sqlclie.dire
@SQL_Conf.fini+ 2,102 say n_guia && Guia de Remision
@SQL_Conf.fini+ 4,8 say sqlclie.elec
@SQL_Conf.fini+ 4,50 say lopci
@SQL_Conf.fini+ 4,89 say DTOC(lfecha)
SELECT csrVtas
Go Top
F = SQL_Conf.fdet && Fila detalle
DO Whil !EOF()
@ F,1 Say STR(cant,4)
@ F,9 Say ALLTRIM(unid)
@ F,20 Say ALLTRIM(nomb)
lc_precio = (prec / ((sqlconf.igv / 100)+1))
@ F,89 Say STR(lc_precio,10,3)  && SIN IGV
lc_total = (total / ((sqlconf.igv / 100)+1))
@ F,106 Say STR(lc_total,10,2) && SIN IGV
@ F,PCOL()+2 Say F Pict "99"
F=F+1
Skip
ENDd
LOCATE FOR dcto=100
IF FOUND()
@F + 1, 23 Say "** Transferencia a Titulo Gratuito **"
   @F + 2, 23 Say "Valor Referencial: "+ lmone +"/." + STR(TotValorD,10,2)
   @F + 3, 23 Say "I.G.V   : "+ lmone +"/." + str(TotIgvD,10,2)
ENDIF 
@SQL_Conf.ffin,8 Say ALLTRIM(n_letras) && Fila Final
@SQL_Conf.ffin,108 Say vValor && Fila Final
@SQL_Conf.ffin + 1,108 Say vIGV && Fila Final
@SQL_Conf.ffin + 2,108 Say vtotal && Fila Final
SET PRINTER Off  
SET DEVICE TO SCREEN
CLOSE Printer
RETURN
ENDFUNC

Oscar Díaz

unread,
Aug 28, 2010, 10:59:58 AM8/28/10
to mundovis...@googlegroups.com
Hola Juan:
 
Tenía el mismo problema y encontré una solución, creo que de un colega Mexicano:
 
     repcartv = SYS(5) + SYS(2003) + "\" + SYS(3) + ".prn"
     if file('&repcartv')
          erase &repcartv
     ENDIF
     WAIT WINDOW NOWAIT "Generando reporte de cartera del cliente..."
     set device to file &repcartv
     @ say...
     @ say...
     @ say...
     SET DEVICE TO SCREEN
     modi comm &repcartv noedit  &&para ver el reporte antes de imprimir
     DO FORM imprime WITH repcartv
Adjunto la clase y el formulario imprime en un .rar
 
Saludos...
 
Oscar Díaz
Bogotá - Colombia
 
Nota: si obtiene algúna solución, recuerda cerrar el hilo, contandonos la solución.

--
lpt.rar

Daniel Sánchez

unread,
Aug 28, 2010, 11:00:50 AM8/28/10
to mundovis...@googlegroups.com
Si para poder usar el tipo de letra de la impresora en un reporte con el generador de reportes de vfp solo debes configurar el reporte con el tipo de impresora matricial que vas ha utilizar y al entrar a tipos de letras de las etiquetas o campos te va ha mostrar las letras de la impresora seleccionada, con eso solucionas el problema de las fuentes sean rápidas y usar las que tiene por defecto la impresora.
En cuanto al tamaño predefinido es cierto si defines un tamaño por decir 1/2 carta tendrías que definir en todas las pc que la utilicen.

Carlos Mazariegos

unread,
Aug 28, 2010, 12:18:27 PM8/28/10
to mundovis...@googlegroups.com
Si puedes mandar a imprimir:

Comparte la impresora en windows, asignale un nombre
Abre una ventana de DOS
Typea net use (solo para verificar que tienes permisos, te debería de dar un listado de los recursos de red)
Typea net use lpt1: \\nombre_de_computadora_o_IP\nombre_de_impresora compartida   (en paso 1)
Typea nuevamente net use (ahora debería de aparecer la impresora en el puerto lpt1
Listo ya puedes mandar a imprimir desde tu vfp o cualquier aplicación que mande al puerto lpt1 o prn
Para probar si quieres estando en la ventana de DOS podrias mandar el siguiente comando:
dir /ad > lpt1
Esto te deberia de imprimir solo el listado de los directorios donde te encuentras ubicado

Esperando que te sirva 

Atentamente,

--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
 
Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com



--
Carlos Mazariegos
carlosema...@gmail.com
Cesma
Guatemala, CA

Juan Rojas C

unread,
Aug 28, 2010, 12:47:03 PM8/28/10
to mundovis...@googlegroups.com
Han sido todos ustedes muy amables, voy a probar las sugerencias dadas por ustedes y estoy comentando.
 
Gracias
 
JRCORONA

Ing.Daniel Bojorge

unread,
Aug 28, 2010, 12:56:02 PM8/28/10
to mundovis...@googlegroups.com
Todo bien, pero una duda, qué pasa si es una impresora Epson  TMU y está conectada a un cajón de dinero, ¿cómo harían para enviar el pulso eléctrico para que se abra dicho cajón?



Dios L@s Bendiga

Saludos,

Daniel (Con 1 Estrella DCE de Microsoft)
Nicaragua

"Si ustedes permanecen unidos a mí, y si permanecen fieles a mis enseñanzas, pidan lo que quieran y se les dará.
(Juan 15:7 DHH)
Bendito el varón que se fía en el SEÑOR, y cuya confianza es el SEÑOR.
(Jeremías 17:7 RV2000)

grupo...@hbaron.com

unread,
Aug 28, 2010, 1:22:57 PM8/28/10
to mundovis...@googlegroups.com
La forma que carlos menciona es la que yo ocupo, pero necesito el loopbackadapter que viene en el sistema operativo de windows, y direccionas con el a la impresora atravez de ip.  Defiinitivamente yo prefiero ocupar el generador de reportes, pero en programas antiguos que tengo en foxpro 2.6 esa fue la unica solucion que encontre.  Ya que son programas que funcionan bien y reprogramarlos era un desperdicio de tiempo, tambien esta opcion sirve cuando ocupas terminal server y queres direccionar el programa que corre en la computadora remota para que imprima en tu impresor. 

Gerardo



On Sat 28/08/10 11:18 AM , Carlos Mazariegos carlosema...@gmail.com sent:

Juan Rojas C

unread,
Aug 28, 2010, 4:15:29 PM8/28/10
to mundovis...@googlegroups.com
Estuve probando las sugerencias dadas y es verdad si puedo imprimir dando el nombre de la impresora directamente, pero la impresion se pone lenta y con tipo de letra grafica, ademas de que cuando dentro de mis lineas say hay un chr(27)+chr(15) o chr(27)+'E' no me los reconoce y me imprime caracteres ilegibles,
Cuando deseo aplicar la tecnica que sugirio Oscar Diaz, con la clase que tan generosamente ha enviado, cuando le doy que imprima, luego de selecionar la impresora, no imprime nada, favor Oscar, tal vez falta algo, o que estoy mal?.
Cuando deseo aplicar la tecnica de Carlos masariegos, ( ojo. la impresora es local),de todas maneras comprato la impresora, luego voy al D.O.S., hago:
 
Typea net use lpt1: \\nombre_de_computadora_o_IP\nombre_de_impresora compartida   (en paso 1)
y me sale el otro computador y el disco duro (C) que esta compartido como undidad R, y no me aparece mi computadora en recurso compartidos que tambien esta compartida, ya que actua como servidor (lugar donde esta la impresora lx-300)
luego hago
Typea nuevamente net use (ahora debería de aparecer la impresora en el puerto lpt1 o prn
 y me sale error 67 (o 66 )
 
Nota: de la forma como yo lo trabajo:
 
salida=sys(2015)+'.prn'
set devi to file &salida
@0,1 SAY CHR(27)+CHR(15)
@0,0 SAY CHR(27)+'C'+CHR(84)
.
.
@79,01 say ' '+chr(12)
set devi to screen
set safe off
copy file &salida to lpt1.dos
 
me imprime rapido y con letra tipo D.O.S. y me respeta los chr(15)+chr(27) y los otros chr.
ahora consulto: cuando instalamos una impresora matricial y damos Imprimir Pagina de Prueba, se imprime totalmente rapido, hay alguna forma de imprimir desde el aplicativo VFP, asi?
 
JRCORONA
 

Roberto Olivas Mendoza

unread,
Aug 28, 2010, 4:37:24 PM8/28/10
to mundovis...@googlegroups.com

Si quieres imprimir en modo de texto (tipo MSDOS) desde Visual FoxPro sólo necesitas utilizar el comando 

 

???

GOOD_FOX

unread,
Aug 28, 2010, 9:40:39 PM8/28/10
to Mundo Visual FoxPro
Hola ke tal,

En la sección de Archivos, hay uno que se llama IMPRIMETICKET.ZIP,
ese es el que uso para tickets, y otros documentos que se imprimen en
impresoras de matriz de puntos

revisalo, puede ayudarte, saludos..!!!


Good_Fox

grupo...@hbaron.com

unread,
Aug 29, 2010, 9:10:07 PM8/29/10
to mundovis...@googlegroups.com

Conecta el loopbackadapter, sin el no los vas a poder hacer bien.

Gerardo



On Sat 28/08/10 8:40 PM , GOOD_FOX jca...@hotmail.com sent:
--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.

Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfoxpro+unsub...@googlegroups.com

grupo...@hbaron.com

unread,
Aug 29, 2010, 9:10:56 PM8/29/10
to mundovis...@googlegroups.com
Conecta el loopback adapter de microsoft sin el no te va a funcionar bien. 

Oscar Díaz

unread,
Aug 30, 2010, 9:38:49 AM8/30/10
to mundovis...@googlegroups.com
Hola Juan:
 
Favor enviar el código de cómo lo está haciendo para poder ayudarte.
 
Saludos...
 
Oscar Díaz
Bogotá - Colombia

Gerardo

unread,
Aug 31, 2010, 7:58:07 AM8/31/10
to Mundo Visual FoxPro
Hola Daniel, ¿cómo haces con el @ say para configurar el tamañano del
formulario?
Gracias,
Gerardo.

On 28 ago, 11:22, Intel Man <intel_man_in...@hotmail.com> wrote:
> Hola, yo tambien pienso que es una buena alternativa usar el generador de reportes en vez de usar el @say.
>
> Pero hay casos en que el @say es necesario al menos en mi caso, y hasta ahora no encuentro como hacerlo con el generador de reportes.
>
> El problema que tengo es imprimir en modo draft desde el generador de reportes, algunos diran: pero usa la letra draft, ya lo hize pero en algunas pc no sale esa bendita letra :S  o usa courier new pero no es lo mismo en impresoras matriciales que imprimen lento, e imprimir unas 100 hojas se demora toda la eternidad :(
>
> Y el otro problema es el de imprimir de una manera mas facil en un formato perzonalizado de papel usando el generador de reportes, ya que cuando uno personaliza un formato de papel en windows, en la otra pc cambia y hay que crear el formato nuevo o recompilar la aplicacion y hacerlo en 30 pc's ya es todo un grannnnnnnn reto :)  y con el @say a travez de comandos puedo personalizar el tamaño de mi hoja y no tengo que configurar nada en windows.
>
> Y por lo demas todo lo hago usando el generador de reportes :)
>
> Saludos
>
> Date: Sat, 28 Aug 2010 08:52:35 -0500
> Subject: Re: [Mundo Visual FoxPro] puerto lpt
> From: resetsoftw...@gmail.com

Daniel Sánchez

unread,
Aug 31, 2010, 9:24:08 AM8/31/10
to mundovis...@googlegroups.com
Si usas @say normalmente cada impresora trae un manual con los caracteres de esc necesarios para cada función ahi según tu tipo de impresora podras encontrar la información para determinar el tamaño de letra, nro de lineas por hoja, tamaño de papel y demas cosas que te permite la impresora.

Intel Man

unread,
Aug 31, 2010, 12:36:53 PM8/31/10
to mundovis...@googlegroups.com
Hola, no se si leiste mi correo pero parece que no, despues de set devi to print tienes que colocar esto:

???" "

Osea quedaría asi:

set devi to print
??? " "

Con eso la impresion cambia a modo draf (modo DOS)

Saludos



Date: Sat, 28 Aug 2010 15:15:29 -0500

Subject: Re: [Mundo Visual FoxPro] puerto lpt

Juan Rojas C

unread,
Sep 1, 2010, 4:49:10 PM9/1/10
to mundovis...@googlegroups.com

Gracias,
 
Ya lo pude enviar a la impresora directamente, usando la tecnica que me sugirieron de mandar usando el nombre de la impresora.
lo que pasa Intel man, que en tu mensaje anterior me sugeriste:
 
set print to name "nombre de tu impresora usb"
set devi to print
?" "   &&PARA QUE IMPRIMA EN MODO DRAFT
 
debiendo ser como lo indicas en tu ultimo mensaje:
 
set devi to print
??? " "
 
ahora si funciona.
 
Gracias a todos
 
JRCORONA
Reply all
Reply to author
Forward
0 new messages