problemas con el mscomm (me come etiquetas)

14/10/2003 - 12:27 por carlos | Informe spam
tengo un cliente que puede imprimir de 1 a 5000 etiquetas seguidas (o mas)
como la etiquetadora térmica hacia saltos le puse el siguiente control:

en el formulario le pego el objeto mscomm y al dar aceptar hago lo siguiente
select cursor
scan
<Aquí monto la etiqueta en la variable "var1">
do while .T.
do while thisform.mscom1.OutBufferCount>0
enddo
thisform.mscom1.output=var1
DO CASE
CASE thisform.mscom1.CommEvent01
do while thisform.mscom1.CommEvent01
wait wind "Esperando ..." nowait
enddo
CASE thisform.mscom1.CommEvent04
thisform.mscom1.OutBufferCount=0
loop
CASE thisform.mscom1.CommEvent06
thisform.mscom1.OutBufferCount=0
loop
CASE thisform.mscom1.CommEvent08
thisform.mscom1.OutBufferCount=0
loop
CASE thisform.mscom1.CommEvent09
thisform.mscom1.OutBufferCount=0
loop
CASE thisform.mscom1.CommEvent10
thisform.mscom1.OutBufferCount=0
loop
CASE thisform.mscom1.CommEvent11
thisform.mscom1.OutBufferCount=0
loop
ENDCASE
exit
enddo
endif
endscan


y en evento onComm del objeto mscomm

function OnComm
*** ActiveX Control Event ***
DO CASE
CASE This.CommEvent01
thisform.erroretiqueta=.T.
CASE This.CommEvent04
thisform.erroretiqueta=.T.
CASE This.CommEvent06
thisform.erroretiqueta=.T.
CASE This.CommEvent08
thisform.erroretiqueta=.T.
CASE This.CommEvent09
thisform.erroretiqueta=.T.
CASE This.CommEvent10
thisform.erroretiqueta=.T.
CASE This.CommEvent11
thisform.erroretiqueta=.T.
ENDCASE
sele traza
append blank
replace etiqueta with TMPETI001.I_UNICO
replace erroreven with This.CommEvent

no se que hago mal pero el caso que se come etiquetas, me las mezcla. Un
Caos pero solo si imprimo muchas

Preguntas similare

Leer las respuestas

#1 Luis María Guayán
14/10/2003 - 14:02 | Informe spam
Puedes poner un pequeño retardo entre impresión de etiquetas. Seguramente el
procedimiento va mas rápido que el buffer de la impresora térmica y allí es
el problema. Yo tuve un problema similar y lo solucioné con un un INKEY(.1)
entre etiqueta y etiqueta.


Luis María Guayán
Tucumán, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos


"carlos" escribió en el mensaje
news:
tengo un cliente que puede imprimir de 1 a 5000 etiquetas seguidas (o mas)
como la etiquetadora térmica hacia saltos le puse el siguiente control:

en el formulario le pego el objeto mscomm y al dar aceptar hago lo


siguiente
select cursor
scan
<Aquí monto la etiqueta en la variable "var1">
do while .T.
do while thisform.mscom1.OutBufferCount>0
enddo
thisform.mscom1.output=var1
DO CASE
CASE thisform.mscom1.CommEvent01
do while thisform.mscom1.CommEvent01
wait wind "Esperando ..." nowait
enddo
CASE thisform.mscom1.CommEvent04
thisform.mscom1.OutBufferCount=0
loop
CASE thisform.mscom1.CommEvent06
thisform.mscom1.OutBufferCount=0
loop
CASE thisform.mscom1.CommEvent08
thisform.mscom1.OutBufferCount=0
loop
CASE thisform.mscom1.CommEvent09
thisform.mscom1.OutBufferCount=0
loop
CASE thisform.mscom1.CommEvent10
thisform.mscom1.OutBufferCount=0
loop
CASE thisform.mscom1.CommEvent11
thisform.mscom1.OutBufferCount=0
loop
ENDCASE
exit
enddo
endif
endscan


y en evento onComm del objeto mscomm

function OnComm
*** ActiveX Control Event ***
DO CASE
CASE This.CommEvent01
thisform.erroretiqueta=.T.
CASE This.CommEvent04
thisform.erroretiqueta=.T.
CASE This.CommEvent06
thisform.erroretiqueta=.T.
CASE This.CommEvent08
thisform.erroretiqueta=.T.
CASE This.CommEvent09
thisform.erroretiqueta=.T.
CASE This.CommEvent10
thisform.erroretiqueta=.T.
CASE This.CommEvent11
thisform.erroretiqueta=.T.
ENDCASE
sele traza
append blank
replace etiqueta with TMPETI001.I_UNICO
replace erroreven with This.CommEvent

no se que hago mal pero el caso que se come etiquetas, me las mezcla. Un
Caos pero solo si imprimo muchas



Respuesta Responder a este mensaje
#2 David Amador T \(Davphantom\)
14/10/2003 - 14:31 | Informe spam
Me sucedio lo mismo y también hize lo que comenta Luis Ma y funciono bien
te aconsejo tambien que coloque el _Vfp.AuotYield = .F. en el Load del
formulario donde utilices Activex

David Amador T.
WebMaster de "La Web de Davphantom"
www.davphantom.net
Cartagena. Colombia
Tel.(5) 6621502 - 6581523 - Cel. 310 - 6581865


"Luis María Guayán" escribió en el mensaje
news:
Puedes poner un pequeño retardo entre impresión de etiquetas. Seguramente


el
procedimiento va mas rápido que el buffer de la impresora térmica y allí


es
el problema. Yo tuve un problema similar y lo solucioné con un un


INKEY(.1)
entre etiqueta y etiqueta.


Luis María Guayán
Tucumán, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos


"carlos" escribió en el mensaje
news:
> tengo un cliente que puede imprimir de 1 a 5000 etiquetas seguidas (o


mas)
> como la etiquetadora térmica hacia saltos le puse el siguiente control:
>
> en el formulario le pego el objeto mscomm y al dar aceptar hago lo
siguiente
> select cursor
> scan
> <Aquí monto la etiqueta en la variable "var1">
> do while .T.
> do while thisform.mscom1.OutBufferCount>0
> enddo
> thisform.mscom1.output=var1
> DO CASE
> CASE thisform.mscom1.CommEvent01
> do while thisform.mscom1.CommEvent01
> wait wind "Esperando ..." nowait
> enddo
> CASE thisform.mscom1.CommEvent04
> thisform.mscom1.OutBufferCount=0
> loop
> CASE thisform.mscom1.CommEvent06
> thisform.mscom1.OutBufferCount=0
> loop
> CASE thisform.mscom1.CommEvent08
> thisform.mscom1.OutBufferCount=0
> loop
> CASE thisform.mscom1.CommEvent09
> thisform.mscom1.OutBufferCount=0
> loop
> CASE thisform.mscom1.CommEvent10
> thisform.mscom1.OutBufferCount=0
> loop
> CASE thisform.mscom1.CommEvent11
> thisform.mscom1.OutBufferCount=0
> loop
> ENDCASE
> exit
> enddo
> endif
> endscan
>
>
> y en evento onComm del objeto mscomm
>
> function OnComm
> *** ActiveX Control Event ***
> DO CASE
> CASE This.CommEvent01
> thisform.erroretiqueta=.T.
> CASE This.CommEvent04
> thisform.erroretiqueta=.T.
> CASE This.CommEvent06
> thisform.erroretiqueta=.T.
> CASE This.CommEvent08
> thisform.erroretiqueta=.T.
> CASE This.CommEvent09
> thisform.erroretiqueta=.T.
> CASE This.CommEvent10
> thisform.erroretiqueta=.T.
> CASE This.CommEvent11
> thisform.erroretiqueta=.T.
> ENDCASE
> sele traza
> append blank
> replace etiqueta with TMPETI001.I_UNICO
> replace erroreven with This.CommEvent
>
> no se que hago mal pero el caso que se come etiquetas, me las mezcla. Un
> Caos pero solo si imprimo muchas
>
>
>


Respuesta Responder a este mensaje
#3 Gorka Justo
17/10/2003 - 07:55 | Informe spam
Yo consegui mejores resultados abriendo el puerto serie con FOPEN() y
mandando los datos con FPUTS()

FPUTS() Devuelve 0 si no ha conseguido escribir en el Puerto. Por lo que
le mandaba los datos asi:

lnRes=0
do while lnRes=0
lnRes=fput(lnPort,lcCar)
enddo

Eso si, cuando el volumen de información supera el buffer de la
impresora aparece el mensaje de Windows "La impresora no esta preparada
[reintentar],[cancelar]" Hay que avisar al usuario que no lo toque que
se va solo cuando el buffer se va vaciando.

Saludos
Gorka

En/na David Amador T (Davphantom) ha escrit:

Me sucedio lo mismo y también hize lo que comenta Luis Ma y funciono bien
te aconsejo tambien que coloque el _Vfp.AuotYield = .F. en el Load del
formulario donde utilices Activex



Respuesta Responder a este mensaje
#4 Jaime Ferrer
26/10/2003 - 12:43 | Informe spam
Comprueba que el protocolo de comunicación que tienes configurado en las
propiedades del mscomm coincida con el protocolo de comúnicación de la
impresora, especialmente todo lo relativo al control de flujo.


Jaime Ferrer
Tecofisa, S.L.
Palafrugell (Girona)
(quitar las x)

"carlos" escribió en el mensaje
news:
tengo un cliente que puede imprimir de 1 a 5000 etiquetas seguidas (o mas)
como la etiquetadora térmica hacia saltos le puse el siguiente control:

en el formulario le pego el objeto mscomm y al dar aceptar hago lo


siguiente
select cursor
scan
<Aquí monto la etiqueta en la variable "var1">
do while .T.
do while thisform.mscom1.OutBufferCount>0
enddo
thisform.mscom1.output=var1
DO CASE
CASE thisform.mscom1.CommEvent01
do while thisform.mscom1.CommEvent01
wait wind "Esperando ..." nowait
enddo
CASE thisform.mscom1.CommEvent04
thisform.mscom1.OutBufferCount=0
loop
CASE thisform.mscom1.CommEvent06
thisform.mscom1.OutBufferCount=0
loop
CASE thisform.mscom1.CommEvent08
thisform.mscom1.OutBufferCount=0
loop
CASE thisform.mscom1.CommEvent09
thisform.mscom1.OutBufferCount=0
loop
CASE thisform.mscom1.CommEvent10
thisform.mscom1.OutBufferCount=0
loop
CASE thisform.mscom1.CommEvent11
thisform.mscom1.OutBufferCount=0
loop
ENDCASE
exit
enddo
endif
endscan


y en evento onComm del objeto mscomm

function OnComm
*** ActiveX Control Event ***
DO CASE
CASE This.CommEvent01
thisform.erroretiqueta=.T.
CASE This.CommEvent04
thisform.erroretiqueta=.T.
CASE This.CommEvent06
thisform.erroretiqueta=.T.
CASE This.CommEvent08
thisform.erroretiqueta=.T.
CASE This.CommEvent09
thisform.erroretiqueta=.T.
CASE This.CommEvent10
thisform.erroretiqueta=.T.
CASE This.CommEvent11
thisform.erroretiqueta=.T.
ENDCASE
sele traza
append blank
replace etiqueta with TMPETI001.I_UNICO
replace erroreven with This.CommEvent

no se que hago mal pero el caso que se come etiquetas, me las mezcla. Un
Caos pero solo si imprimo muchas



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida