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.
#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.
#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

Mostrar la cita
problema que tu pero no
Mostrar la cita
tenía que escribir
Mostrar la cita
problemas. A pesar de ello
Mostrar la cita
trasladar
Mostrar la cita
como Generic / Text
Mostrar la cita
predeterminada.
Mostrar la cita
como fuente
Mostrar la cita
la traduccion entre
Mostrar la cita
y en combinacion
Mostrar la cita
printer y que luego he
Mostrar la cita
en la impresora de
Mostrar la cita
Alias "OemToCharA" (ByVal lpszSrc As
Mostrar la cita
Alias "CharToOemA" (ByVal lpszSrc As
Mostrar la cita
a texto ANSI
Mostrar la cita
Alias "OemToCharA" (ByVal lpszSrc
Mostrar la cita
(tmpBB) - 1)
Mostrar la cita
Ads by Google
Search Busqueda sugerida