Principales respuestas
1URGENTE¡, SerialPort, Perdida de Información al Mandar a Imprimir VB.NET 2005

Pregunta
-
Hola a Todos, estoY desarrollando una aplicacion Movil en VB.NET 2005 LA APLICACION ES SIMPLE solo se conecta via a Blutoohth a un Puerto(el de la impresora), y manda a imprimir pero cuando mando a imprimir la cadena con la informacion de las facturas se pierden los datos, ejemplo:
Dim sResultado As String = String.Empty Static Fila As Integer = 0 For Each r As DataRow In data.Rows Dim cadena As String = r("DATA") sResultado = sResultado + Chr(27) + Chr(119) + "B" + cadena + Chr(13) Next pCOM.Write(sResultado)
Ese es el codigo q utilizo para mandar a imprimir pero solo imprime 2 paginas en la 3 pagina se pierden los datos e intentado aumentando la memoria del buffer pero nada
Me.pCOM.DiscardNull = False pCOM.ReadBufferSize = 9024 pCOM.WriteBufferSize = 9024 pCOM.WriteTimeout = -1
Alguna idea o solución que me puedan brindar.
jeferson
Respuestas
-
Respondiendome yo mismo,
Uso una impresora Matricial DATAMAX O´Neil vmp2000 que solo acepta 4576 caracteres por cada vez que llamamos al metodo WRITE del SerialPort,
por lo cual tuve que dividir el contenido en caso de que supere el máximo permitido, y con un Sleep de 30000 ms
para que termine de imprimir la primera parte y seguidamente se imprime la segunda parte.
' DONDE sResultado es la variable que contiene la informacion a Imprimir Dim LON As Integer = sResultado.Length 'Limpiamos el Buffer SALTO: pCOM.DiscardOutBuffer() pCOM.DiscardInBuffer() 'LA IMPRESORA ACEPTA 4576 CARACTERES POR ESCRITURA 'EN OTRAS PALABRAS CADA VEZ QUE LLAMAMOS AL METODO WRITE DEL SERIAL PORT 'SOLO IMPRIMIRA LOS PRIMEROS 4576 CARACTERES ES POR ESO QUE SE PIERDE EL RESTO DEL 'CONTENIDO If LON >= 4576 Then Dim strPart1 As String = Mid(sResultado, 1, 4576) Dim strPart2 As String = Mid(sResultado, 4577, sResultado.Length - 4577) Me.pCOM.Write(strPart1) System.Threading.Thread.Sleep(30000) sResultado = strPart2 + Chr(13) LON = strPart2.Length GoTo SALTO Else Me.pCOM.Write(sResultado) End If
jeferson
- Marcado como respuesta Jeferson014 martes, 3 de marzo de 2015 20:43
Todas las respuestas
-
Respondiendome yo mismo,
Uso una impresora Matricial DATAMAX O´Neil vmp2000 que solo acepta 4576 caracteres por cada vez que llamamos al metodo WRITE del SerialPort,
por lo cual tuve que dividir el contenido en caso de que supere el máximo permitido, y con un Sleep de 30000 ms
para que termine de imprimir la primera parte y seguidamente se imprime la segunda parte.
' DONDE sResultado es la variable que contiene la informacion a Imprimir Dim LON As Integer = sResultado.Length 'Limpiamos el Buffer SALTO: pCOM.DiscardOutBuffer() pCOM.DiscardInBuffer() 'LA IMPRESORA ACEPTA 4576 CARACTERES POR ESCRITURA 'EN OTRAS PALABRAS CADA VEZ QUE LLAMAMOS AL METODO WRITE DEL SERIAL PORT 'SOLO IMPRIMIRA LOS PRIMEROS 4576 CARACTERES ES POR ESO QUE SE PIERDE EL RESTO DEL 'CONTENIDO If LON >= 4576 Then Dim strPart1 As String = Mid(sResultado, 1, 4576) Dim strPart2 As String = Mid(sResultado, 4577, sResultado.Length - 4577) Me.pCOM.Write(strPart1) System.Threading.Thread.Sleep(30000) sResultado = strPart2 + Chr(13) LON = strPart2.Length GoTo SALTO Else Me.pCOM.Write(sResultado) End If
jeferson
- Marcado como respuesta Jeferson014 martes, 3 de marzo de 2015 20:43
-