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.
 

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.

Preguntas similares