Imprimir por puerto USB

1,199 views
Skip to first unread message

JAZMIN REYES CARDENAS

unread,
Apr 5, 2013, 6:30:40 PM4/5/13
to mundovisualfoxpro
Hola Colegas, aqui con nuevas consultas, gracias.

Mi consulta es la sgte:

Es para imprimir en una impresora matricial con conexion USB.

Tengo una rutina que genera un archivo TXT y en otros casos PRN invoco luego una archivo BAT (! Printbat.bat)
y se imprime el archivo (con comando say).

printbat.bat

net use lpt1:\\192.168.1.2 \docum /y
type c:\printlpt\archivo.prn>lpt1
net use lpt1 /delete
exit


como haria para implementar esta rutina en mi aplicativo (vfp9), sin necesidad de invocar al archivo printbat.bat, ya
que deseo que el ip sea elegido por el usuario asi como tambien el puerto lpt1 (lpt2, lpt3).

O

como pasaria el ip y el puerto lpt al archivo printbat.bat

Gracias, por atender mi consulta

JAZMIN 

JAZMIN REYES CARDENAS

unread,
Apr 8, 2013, 11:02:52 AM4/8/13
to mundovisualfoxpro
Por favor ayuda
 
gracias

---------- Mensaje reenviado ----------
De: JAZMIN REYES CARDENAS <jaz...@gmail.com>
Fecha: 5 de abril de 2013 17:30
Asunto: Imprimir por puerto USB
Para: mundovisualfoxpro <mundovis...@googlegroups.com>

Alex Orihuela Rosales

unread,
Apr 8, 2013, 11:19:15 AM4/8/13
to mundovis...@googlegroups.com
Jazmin,
Una consulta, esa IP está en tu red cierto?
Lo que podrías hacer es darle un nombre a esa IP, lo cual generalmente es la del equipo y luego compartes la impresora con un nombre definido, y por el comando set printer podría ser algo como Set printer to xImpresoracompartida 
Saludos
Alex


--
_______________________________________________________________
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
---
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 y dejar de recibir sus correos electrónicos, envía un correo electrónico a mundovisualfox...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 

efh...@gmail.com

unread,
Apr 8, 2013, 12:33:26 PM4/8/13
to mundovis...@googlegroups.com
Buenas Jazmín
 
yo lo hago de la siguiente manera
 
en un formulario que llamo para seleccionar la impresora en el Init del formulario tengo el siguiente Código
 
Creo un cursor donde guardo el nombre de la impresora y la ubicación de la impresora la esto es para las impresoras conectadas en otros equipos
 
CREATE CURSOR impres(Nombre C(100),UbicaImpre C(100))
SELECT Impres
SCATTER MEMVAR BLANK
xLen = APRINTERS(ArrImpresora)        && APRINTERS es una función que llena un arreglo bidimensional con  las impresoras  Instaladas en el equipo y también
                                                             && devuelve el numero de impresoras  Primera Columna Nombre de la impresora Segunda columna ubicación de la impresora
IF xLen  = 0
  RETURN
ELSE
  ** Con este For Guardo las Impresoras en el cursor que luego puedes mostrar en Combo Box o en un List Box
  FOR x = 1 TO xLen
    m.Nombre       = UPPER(ArrImpresora[x,1])
    m.UbicaImpre = ArrImpresora[x,2]
    INSERT INTO impres FROM MEMVAR
  NEXT
ENDIF
 
Una vez Seleccionada la Impresora  debes comprobar si es una impresora local o instalada en otro equipo de la red. Esto lo haces mirando si el primer caracter de la ubicación de la impresora es una barra invertida \
 
IF LEFT(Impres.UbicaImpre,1) = "\"          
  cfgNomImpresora = ALLTRIM(Impres.UbicaImpre)    && impresora en otro equipo
ELSE
  cfgNomImpresora  = ALLTRIM(Impres.Nombre)        && Impresora Local
ENDIF
 
ya lo que queda es indicar al programa hacia donde enviar le impresión se coloca entre paréntesis para que haga una macro sustitución
 
SET PRINTER TO NAME (cfgNomImpresora)
 
REPORT  FROM nombreReporte
 
Espero que esto te sirva
 
Saludos
 
Efraín Hernández

---
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 y dejar de recibir sus correos electrónicos, envía un correo electrónico a mailto:mundovisualfoxpro%2Bunsu...@googlegroups.com.

Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 

JAZMIN REYES CARDENAS

unread,
Apr 8, 2013, 6:42:28 PM4/8/13
to mundovis...@googlegroups.com
Gracias por las sugerencias, ya podre hacer mis pruebas ahora, gracias

Jazmin

El 08/04/13, efh...@gmail.com <efh...@gmail.com> escribió:

JAZMIN REYES CARDENAS

unread,
Apr 9, 2013, 9:04:38 PM4/9/13
to mundovis...@googlegroups.com
La sugerencia esta buena pero mi consulta es con los comandos @x,y say
.. en la impresion no usando REPORT FORM, es por ello la consulta
como usar el net en el archivo bat.

gracias

JAZMIN

El 08/04/13, JAZMIN REYES CARDENAS <jaz...@gmail.com> escribió:

Cesar Yamunaque Baca

unread,
Apr 10, 2013, 12:20:56 AM4/10/13
to mundovis...@googlegroups.com
Para que funcione, en la PC  debes indicarle que el puerto USB usa LPT1,  
funciona bien en W7, pero en algunos casos no se xq razon deja de funcionar y no hay quien lo ponga en linea asi formatees la PC y reinstales el sistema operativo.
Saludos


efh...@gmail.com

unread,
Apr 10, 2013, 12:42:16 PM4/10/13
to mundovis...@googlegroups.com
Jazmin

De igual manera te sirve para el @x,y SAY, pero no utilices SET PRINTER ON
porque con esto el @.. say sigue enviando a la pantalla debes utilizar
SET DEVICE TO PRINTER para que el @ say sea enviado a la impresora una vez
termine la impresi�n activar la pantalla nuevamente con SET DEVICE TO SCREEN


Saludos

Efra�n

-----Mensaje original-----
From: JAZMIN REYES CARDENAS
Sent: Tuesday, April 09, 2013 8:04 PM
To: mundovis...@googlegroups.com
Subject: Re: [Mundo Visual FoxPro] Fwd: Imprimir por puerto USB

La sugerencia esta buena pero mi consulta es con los comandos @x,y say
.. en la impresion no usando REPORT FORM, es por ello la consulta
como usar el net en el archivo bat.

gracias

JAZMIN

El 08/04/13, JAZMIN REYES CARDENAS <jaz...@gmail.com> escribi�:
> Gracias por las sugerencias, ya podre hacer mis pruebas ahora, gracias
>
> Jazmin
>
> El 08/04/13, efh...@gmail.com <efh...@gmail.com> escribi�:
>> Buenas Jazm�n
>>
>> yo lo hago de la siguiente manera
>>
>> en un formulario que llamo para seleccionar la impresora en el Init del
>> formulario tengo el siguiente C�digo
>>
>> Creo un cursor donde guardo el nombre de la impresora y la ubicaci�n de
>> la
>> impresora la esto es para las impresoras conectadas en otros equipos
>>
>> CREATE CURSOR impres(Nombre C(100),UbicaImpre C(100))
>> SELECT Impres
>> SCATTER MEMVAR BLANK
>> xLen = APRINTERS(ArrImpresora) && APRINTERS es una funci�n que
>> llena
>> un arreglo bidimensional con las impresoras Instaladas en el equipo y
>> tambi�n
>> && devuelve
>> el
>> numero de impresoras Primera Columna Nombre de la impresora Segunda
>> columna
>> ubicaci�n de la impresora
>> IF xLen = 0
>> RETURN
>> ELSE
>> ** Con este For Guardo las Impresoras en el cursor que luego puedes
>> mostrar en Combo Box o en un List Box
>> FOR x = 1 TO xLen
>> m.Nombre = UPPER(ArrImpresora[x,1])
>> m.UbicaImpre = ArrImpresora[x,2]
>> INSERT INTO impres FROM MEMVAR
>> NEXT
>> ENDIF
>>
>> Una vez Seleccionada la Impresora debes comprobar si es una impresora
>> local
>> o instalada en otro equipo de la red. Esto lo haces mirando si el primer
>> caracter de la ubicaci�n de la impresora es una barra invertida \
>>
>> IF LEFT(Impres.UbicaImpre,1) = "\"
>> cfgNomImpresora = ALLTRIM(Impres.UbicaImpre) && impresora en otro
>> equipo
>> ELSE
>> cfgNomImpresora = ALLTRIM(Impres.Nombre) && Impresora Local
>> ENDIF
>>
>> ya lo que queda es indicar al programa hacia donde enviar le impresi�n se
>> coloca entre par�ntesis para que haga una macro sustituci�n
>>
>> SET PRINTER TO NAME (cfgNomImpresora)
>>
>> REPORT FROM nombreReporte
>>
>> Espero que esto te sirva
>>
>> Saludos
>>
>> Efra�n Hern�ndez
>>
>>
>>
>> From: Alex Orihuela Rosales
>> Sent: Monday, April 08, 2013 10:19 AM
>> To: mundovis...@googlegroups.com
>> Subject: Re: [Mundo Visual FoxPro] Fwd: Imprimir por puerto USB
>>
>> Jazmin,
>> Una consulta, esa IP est� en tu red cierto?
>> Lo que podr�as hacer es darle un nombre a esa IP, lo cual generalmente es
>> la
>> del equipo y luego compartes la impresora con un nombre definido, y por
>> el
>> comando set printer podr�a ser algo como Set printer to
>> xImpresoracompartida
>>
>> Saludos
>> Alex
>>
>>
>>
>> El 8 de abril de 2013 10:02, JAZMIN REYES CARDENAS <jaz...@gmail.com>
>> escribi�:
>> 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:
>> mailto:mundovisualfoxpro%2Bunsu...@googlegroups.com
>> ---
>> 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 y dejar de recibir sus correos
>> electr�nicos, env�a un correo electr�nico a
>> mailto:mundovisualfoxpro%2Bunsu...@googlegroups.com.
>> Para obtener m�s opciones, visita
>> https://groups.google.com/groups/opt_out.
>>
>>
>>
>>
>> --
>> _______________________________________________________________
>> 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
>> ---
>> 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 y dejar de recibir sus correos
>> electr�nicos, env�a un correo electr�nico a
>> mundovisualfox...@googlegroups.com.
>> Para obtener m�s opciones, visita
>> https://groups.google.com/groups/opt_out.
>>
>>
>>
>> --
>> _______________________________________________________________
>> 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
>> ---
>> 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 y dejar de recibir sus correos
>> electr�nicos, env�a un correo electr�nico a
>> mundovisualfox...@googlegroups.com.
>> Para obtener m�s opciones, visita
>> https://groups.google.com/groups/opt_out.
>>
>>
>>
>

--
_______________________________________________________________
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
---
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 y dejar de recibir sus correos
electr�nicos, env�a un correo electr�nico a
mundovisualfox...@googlegroups.com.
Para obtener m�s opciones, visita https://groups.google.com/groups/opt_out.

Message has been deleted

HernanCano

unread,
Apr 10, 2013, 6:26:55 PM4/10/13
to mundovis...@googlegroups.com

Correcto, Efraín.

Pero la mayoría de los casos en que necesitamos imprimir a Epson (o impr.puntos) por USB, ésto no nos funciona, y la solución es (1) enviar a un archivo de texto, y (2) tirarlo a impresora por DOS, que es lo que indica que hace nuestra amiga Jasmin.

Yo también utilizo imprimir con @say y con SET DEVICE TO PRINTER. Pero con la combinación Epson/USB ésto normalmente no funciona (a menos que consigas una PCI para que la CPU tenga puerto paralelo LPT1).

Si el cliente que atiendo ahora no desea adquirir la tarjeta PCI (que es la mejor solución), les comento cómo me va.



El miércoles, 10 de abril de 2013 11:42:16 UTC-5, Efrain escribió:
Jazmin

De igual manera te sirve para el @x,y SAY, pero no utilices SET PRINTER ON
porque con esto el  @.. say sigue enviando a la pantalla  debes utilizar
SET DEVICE TO PRINTER para que el @ say sea enviado a la impresora una vez
termine la impresi�n activar la pantalla nuevamente con SET DEVICE TO SCREEN

Saludos

Efraín

HernanCano

unread,
Apr 10, 2013, 6:28:16 PM4/10/13
to mundovis...@googlegroups.com
** Ejemplo 1
SET PRINTER TO
SET DEVICE TO FILE c:\printlpt\archivo.prn
@01,01 SAY "PRIMER RENGLON"
@02,01 SAY "SEGUNDO RENGLON"
SET DEVICE TO SCREEN
M.cCMD = "RUN C:\DONDEESTA\PRINTBAT.BAT c:\printlpt\archivo.prn"
&cCMD


** Ejemplo 2
SET PRINTER TO
REPORT FORM C:\DONDEESTA\UNREPORTE.FRX TO FILE c:\printlpt\archivo.prn
M.cCMD = "RUN C:\DONDEESTA\PRINTBAT.BAT"
&cCMD


** Espero te ayude en algo éste mi aporte.
** Chao.

El martes, 9 de abril de 2013 20:04:38 UTC-5, JAZMIN REYES CARDENAS escribió:
- mostrar texto citado -

HernanCano

unread,
Apr 10, 2013, 6:30:56 PM4/10/13
to mundovis...@googlegroups.com
Tuve un peq error en la primer respuesta (inclui el nombre del archivo PRN al final de

M.cCMD = "RUN C:\DONDEESTA\PRINTBAT.BAT"

pero evidentemente no va.

Disculpen, pero prefiero eliminrlo para que no haya "errores".

Gracias, chicos.

JAZMIN REYES CARDENAS

unread,
Apr 11, 2013, 9:38:39 PM4/11/13
to mundovis...@googlegroups.com
Gracias a todos por sus sugerencias, voy a ponerme a trabajar en base
a las sugerencias y veremos como me va.

Gracias

Nota: Por favor darme ideas de como paso variables a archivo bat (para
indicar el puerto,la ubicacion ip).


JAZMIN


El 10/04/13, HernanCano <jherna...@gmail.com> escribió:

Daniel Manuel López

unread,
Apr 11, 2013, 11:41:50 PM4/11/13
to Zorros verdaeros
Yazmin,
Te pongo un ejemplo del contenido de un archivo .BAT que use hace 17 años.
Para ejecutar un archivo .BAT, va el nombre del archivo y los parámetros, ejem.

RESPALDO Param1 Param2 Param3 ParamN

y dentro de tu BAT los identificas como "%1"    "%2", y asi sucesivamente..

@ECHO OFF
CLS
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO           ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ECHO           º FASE1 ---- SUBE Y PROCESA LAS COMPRAS           º
ECHO           º                DE CADA FARMACIA  !              º
ECHO           ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
ECHO           ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ECHO           ³        Coloque el Diskette en el Drive A:       ³
ECHO           ³                                                 ³
ECHO           ³           [Enter]     para Comenzar             ³
ECHO           ³           [Control-C] para Terminar             ³
ECHO           ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ECHO.
PAUSE
if "%1"==""          goto  ERROR1
if "%1"=="LADOS"     goto  LADOS
if "%1"=="LATRES"    goto  LATRES
if "%1"=="LACUATRO"  goto  LACUATRO
GOTO ERROR1
:LADOS
CD  C:\SUCURSAL
DEL AUTREY2.*
DEL COMPRAS2.*
PKUNZIP A:LADOS.ZIP
REN MAEART.* AUTREY2.*
REN COMPRAS.* COMPRAS2.*
CD C:\SUPERFAR
GOTO FIN
:LATRES
CD  C:\SUCURSAL
DEL AUTREY3.*
DEL COMPRAS3.*
PKUNZIP A:LATRES.ZIP
REN MAEART.* AUTREY3.*
REN COMPRAS.* COMPRAS3.*
CD C:\SUPERFAR
GOTO FIN
:LACUATRO
CD  C:\SUCURSAL
DEL AUTREY4.*
DEL COMPRAS4.*
PKUNZIP A:LACUATRO.ZIP
REN MAEART.* AUTREY4.*
REN COMPRAS.* COMPRAS4.*
CD C:\SUPERFAR
GOTO FIN
:ERROR1
CLS
ECHO.
ECHO           ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
ECHO           º                                                 º
ECHO           º      EL(LOS) ARCHIVO(S) NO ESTAN EN DISCO !!    º
ECHO           º                                                 º
ECHO           ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
ECHO           º                 E  R  R  O  R                   º
ECHO           ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
GOTO FIN
:FIN
FASES

Espero esto te ayude en algo....
Hay nos comentas..

Saludos

> Date: Thu, 11 Apr 2013 20:38:39 -0500

> Subject: Re: [Mundo Visual FoxPro] Fwd: Imprimir por puerto USB

JAZMIN REYES CARDENAS

unread,
Apr 12, 2013, 12:50:05 PM4/12/13
to mundovis...@googlegroups.com
Muchas gracias Daniel era lo que estaba buscando, ahora si podre pasar como variables el puerto lpt (lpt1,lpt2,..) y el ip hacia donde deseo enviar la impresion.
Asi mismo extiendo mi agradecimiento a todos los colaboradores.
 
Gracias
 
JAZMIN

HernanCano

unread,
Apr 12, 2013, 10:38:50 PM4/12/13
to mundovis...@googlegroups.com

@echo off
rem Este es el archivo PRINTBAT.bat
rem Se usa así: PRINTBAT \\192.168.1.2 LPT1
rem (de acuerdo a lo que mencionas en v-12-abril-2013 11:50am)
rem
net use %2%: %1%\NOMBREIMP /y
type c:\printlpt\archivo.prn > %2%
net use %2% /delete
exit


** En tu formulario crear dos TextBox que llamarías txtIP y txtPuerto

** Ejemplo b-1

SET PRINTER TO
SET DEVICE TO FILE c:\printlpt\archivo.prn
@01,01 SAY "PRIMER RENGLON"
@02,01 SAY "SEGUNDO RENGLON"
SET DEVICE TO SCREEN
M.cCMD = "RUN C:\DONDEESTA\PRINTBAT.BAT "+alltrim(ThisForm.txtIP)+" "+alltrim(ThisForm.txtPuerto)
&cCMD


** Ejemplo b-2

SET PRINTER TO
REPORT FORM C:\DONDEESTA\UNREPORTE.FRX TO FILE c:\printlpt\archivo.prn
M.cCMD = "RUN C:\DONDEESTA\PRINTBAT.BAT "+alltrim(ThisForm.txtIP)+" "+alltrim(ThisForm.txtPuerto)
&cCMD


** Espero te ayude en algo éste mi segundo aporte.
** Chao.

JAZMIN REYES CARDENAS

unread,
Apr 22, 2013, 1:03:26 PM4/22/13
to mundovis...@googlegroups.com

Gracias por todos los aportes
 
JAZMIN

HernanCano

unread,
Apr 22, 2013, 6:45:07 PM4/22/13
to mundovis...@googlegroups.com
Ahhh! bueno, entonces no debiste abrir otro tema (
Solución puerto USB a LPT1 matricial
) para dar solución a éste.
 
Gracias por compartir.
 
Reply all
Reply to author
Forward
0 new messages