Impresora de tickets - ASCII a MS-DOS

24/06/2004 - 10:53 por Shania | Informe spam
Hola!
Tengo una impresora de tickets que cuando imprime palabras
con acentos o "ñ"s escribe un símbolo raro en lugar de
la "ñ" o de la letra que contiene el acento.
Me gustaría saber si alguno de vosotros sabe de alguna
función que pase los caracteres ASCII a modo MS-DOS en
VB.NET.

Muchas gracias.
Un saludo.

Preguntas similare

Leer las respuestas

#1 rol
24/06/2004 - 16:31 | Informe spam
Curiosamente hace unos dias he tenido el mismo problema que tu pero no
lo he resuleto de la forma que tu quieres hacerlo porque tenía que escribir
directamente a puerto y esto me ocasionaba otros problemas. A pesar de ello
te voy a poner el código que pille por la red que puedes trasladar
exactamente igual a tu código .net.

Pero antes te explico como lo he resuelto yo:
He configurado en el panel de control la impresora como Generic / Text
Only en el puerto LPT1 y la he configurado como impresora predeterminada.
Además, en las propiedades de la impresora le he puesto como fuente
Multilingue Latin 1 (850) (esto es lo que realmente hace la traduccion entre
los juegos de caracteres que tu necesitas). De esta forma y en combinacion
con una dll que he construido en VB6 usando el objeto printer y que luego he
incorporado a mi proyecto vb.net , he conseguido imprimir en la impresora de
tickets como si estuviera imprimiendo desde MS-DOS.

Ahí va el código (copialo y pegalo en tu proyecto):

Declare Function OemToChar Lib "user32" Alias "OemToCharA" (ByVal lpszSrc As
String, ByVal lpszDst As String) As Long
Declare Function CharToOem Lib "user32" Alias "CharToOemA" (ByVal lpszSrc As
String, ByVal lpszDst As String) As Long


Public Function TextoMSDOS(Cadena As String) As String
'Convierte una cadena de texto msdos (ASCII) o texto OEM a texto ANSI
deWindows.
'Ver funcion TextoWinAMSDOS es la inversa a esta
'Tonecho 7.3.98
'Necesita la declaracion de funcion API
'Declare Function OemToChar Lib "user32" Alias "OemToCharA" (ByVal lpszSrc
As String, ByVal lpszDst As String) As Long
Dim tmpAA As String
Dim tmpBB As String

tmpAA = Trim$(Cadena)
tmpBB = Space(255)
Call OemToChar(tmpAA, tmpBB)
tmpBB = Trim$(tmpBB)
If Len(tmpBB) > 1 Then tmpBB = Left$(tmpBB, Len(tmpBB) - 1)
If Trim$(tmpBB) = "" Then tmpBB = " "
TextoMSDOS = tmpBB
End Function

Public Function TextoWinAMSDOS(Cadena As String) As String
'Pasa una cadena de ansi (windows) a ASCII (msdos).
'Evita problemas de conversión de acentos y eñes
'Ver funcion TextoMSDOS es la inversa a esta
'Tonecho 7.3.98
Dim x As String
x = Space$(Len(Cadena))
CharToOem Cadena, x
TextoWinAMSDOS = x
End Function




Hola!
Tengo una impresora de tickets que cuando imprime palabras
con acentos o "ñ"s escribe un símbolo raro en lugar de
la "ñ" o de la letra que contiene el acento.
Me gustaría saber si alguno de vosotros sabe de alguna
función que pase los caracteres ASCII a modo MS-DOS en
VB.NET.

Muchas gracias.
Un saludo.
Respuesta Responder a este mensaje
#2 rol
24/06/2004 - 16:36 | Informe spam
Te envío también el código de la dll que he realizado en vb.6 por si
necesitas usarlo:

Public Sub WriteLine(ByVal value As String)
'Para imprimir la cadena de texto que quiero enviar a la impresora
Printer.Print value
End Sub
Public Sub EndDoc()
Printer.EndDoc
End Sub
Public Sub FontName(ByVal value As String)
Printer.FontName = value
End Sub
Public Sub ForeColorRed(ByVal value As Boolean)
If value Then
Printer.ForeColor = RGB(255, 0, 0)
Else
Printer.ForeColor = RGB(0, 0, 0)
End If
End Sub
Public Sub FontSize(ByVal value As Integer)
Printer.Font.Size = value
End Sub
Public Sub FontBold(ByVal value As Boolean)
Printer.Font.Bold = value
End Sub
Public Sub OpenCashDrawer()
'Para abrir el cajón
Open "LPT1:" For Output As #1
'La secuencia de escape puede ser otra para tu impresora
'consulta el manual
Print #1, Chr$(27) + Chr$(112) + Chr$(0) + Chr$(48)
Close #1
End Sub
Public Sub PosicionX(ByVal value As Integer)
Printer.CurrentX = value
End Sub
Public Sub LineFeed(ByVal value As Integer)
'Para hacer line feed en la impresora el numero de lineas
'indicado en value
Dim i As Integer
If value >= 1 Then
Open "LPT1" For Output As #1
For i = 1 To value
'La secuencia de escape puede ser otra para tu impresora
'consulta el manual
Print #1, Chr$(&H1B) & Chr$(&H64) & Chr$(value)
Next i
Close #1
End If

End Sub

"Shania" escribió en el mensaje
news:20c7601c459c8$bde18020$
Hola!
Tengo una impresora de tickets que cuando imprime palabras
con acentos o "ñ"s escribe un símbolo raro en lugar de
la "ñ" o de la letra que contiene el acento.
Me gustaría saber si alguno de vosotros sabe de alguna
función que pase los caracteres ASCII a modo MS-DOS en
VB.NET.

Muchas gracias.
Un saludo.
Respuesta Responder a este mensaje
#3 Shania
25/06/2004 - 10:18 | Informe spam
Hola!
Muchísimas gracias por tu ayuda, ya pensaba que nadie me
podía ayudar.
Ahora mismo lo voy a probar.
Un saludo

Curiosamente hace unos dias he tenido el mismo


problema que tu pero no
lo he resuleto de la forma que tu quieres hacerlo porque


tenía que escribir
directamente a puerto y esto me ocasionaba otros


problemas. A pesar de ello
te voy a poner el código que pille por la red que puedes


trasladar
exactamente igual a tu código .net.

Pero antes te explico como lo he resuelto yo:
He configurado en el panel de control la impresora


como Generic / Text
Only en el puerto LPT1 y la he configurado como impresora


predeterminada.
Además, en las propiedades de la impresora le he puesto


como fuente
Multilingue Latin 1 (850) (esto es lo que realmente hace


la traduccion entre
los juegos de caracteres que tu necesitas). De esta forma


y en combinacion
con una dll que he construido en VB6 usando el objeto


printer y que luego he
incorporado a mi proyecto vb.net , he conseguido imprimir


en la impresora de
tickets como si estuviera imprimiendo desde MS-DOS.

Ahí va el código (copialo y pegalo en tu proyecto):

Declare Function OemToChar Lib "user32"


Alias "OemToCharA" (ByVal lpszSrc As
String, ByVal lpszDst As String) As Long
Declare Function CharToOem Lib "user32"


Alias "CharToOemA" (ByVal lpszSrc As
String, ByVal lpszDst As String) As Long


Public Function TextoMSDOS(Cadena As String) As String
'Convierte una cadena de texto msdos (ASCII) o texto OEM


a texto ANSI
deWindows.
'Ver funcion TextoWinAMSDOS es la inversa a esta
'Tonecho 7.3.98
'Necesita la declaracion de funcion API
'Declare Function OemToChar Lib "user32"


Alias "OemToCharA" (ByVal lpszSrc
As String, ByVal lpszDst As String) As Long
Dim tmpAA As String
Dim tmpBB As String

tmpAA = Trim$(Cadena)
tmpBB = Space(255)
Call OemToChar(tmpAA, tmpBB)
tmpBB = Trim$(tmpBB)
If Len(tmpBB) > 1 Then tmpBB = Left$(tmpBB, Len


(tmpBB) - 1)
If Trim$(tmpBB) = "" Then tmpBB = " "
TextoMSDOS = tmpBB
End Function

Public Function TextoWinAMSDOS(Cadena As String) As String
'Pasa una cadena de ansi (windows) a ASCII (msdos).
'Evita problemas de conversión de acentos y eñes
'Ver funcion TextoMSDOS es la inversa a esta
'Tonecho 7.3.98
Dim x As String
x = Space$(Len(Cadena))
CharToOem Cadena, x
TextoWinAMSDOS = x
End Function




Hola!
Tengo una impresora de tickets que cuando imprime palabras
con acentos o "ñ"s escribe un símbolo raro en lugar de
la "ñ" o de la letra que contiene el acento.
Me gustaría saber si alguno de vosotros sabe de alguna
función que pase los caracteres ASCII a modo MS-DOS en
VB.NET.

Muchas gracias.
Un saludo.


.

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