ljma
Programador
Registrado: Enero 2010
Mensajes: 106
Edad: 54 Ubicación:
|
Códigos De Escape
Hola,
Con el objeto de facilitar la lectura de código y de simplificar estoy intentando utilizar costantes para referirme a las combinaciones de los códigos de escape para una impresora térmica.
ejemplo
PUBLIC CONST escNewLine AS String = "Chr$(10)" ' NEW line(LF LINE feed)
PUBLIC CONST escUnerlineOn AS String = "Chr(27) & Chr(45) & Chr(1)" '/ Unerline On
PUBLIC CONST escUnerlineOnx2 AS String = "Chr(27) & Chr(45) & Chr(2)" '/ Unerline On x 2
PUBLIC CONST escUnerlineOff AS String = "Chr(27) & Chr(45) & Chr(0)" '/ Unerline Off
PUBLIC CONST escBoldOn AS String = "Chr(27) & Chr(69) & Chr(1)" '/ Bold On
PUBLIC CONST escBoldOff AS String = "Chr(27) & Chr(69) & Chr(0)" '/ Bold Off
PUBLIC CONST esc16Cpi AS String = "Chr(27) & Chr(77) & Chr(48)" '/ Font A - Normal Font
PUBLIC CONST esc20Cpi AS String = "Chr(27) & Chr(77) & Chr(49)" '/ Font B - Small Font
PUBLIC CONST escFeedAndCut AS String = "Chr$(27) & Chr$(109)" '/ Partial Cut
PUBLIC CONST escAlignLeft AS String = "Chr(27) & Chr(97) & Chr(48)" '/ Align Text TO the Left
PUBLIC CONST escAlignCenter AS String = "Chr(27) & Chr(97) & Chr(49)" '/ Align Text TO the Center
PUBLIC CONST escAlignRight AS String = "Chr(27) & Chr(97) & Chr(50)" '/ Align Text TO the Right
DIM hFile AS File
IF Exist("/dev/ttyS0") THEN
OPEN "/dev/ttyS0" FOR WRITE AS #hFile
PRINT #hFile, escFeedAndCut
CLOSE #hFile
ELSE
Message.Error("El puerto de la impresora no existe, el cajón no puede abrirse, ¡coja la llave!")
END IF
pero el resultado es que me imprime "Chr$(27) & Chr$(109)"
¿Hay alguna manera o función para convertir el string a códigos esc/pos?
Gracias anticipadas
Saludos
|
ljma
Programador
Registrado: Enero 2010
Mensajes: 106
Edad: 54 Ubicación:
|
Re: Códigos De Escape
Hola,
Se me olvidó poner que si lo intento poner así
PUBLIC CONST euro AS String = Chr(27) & Chr(116) & Chr(19) & Chr(213)
me da error de sistaxis.
Resumo: si lo entrecomillo lo toma como texto puro y si no me da error de sintaxis.
¿alguna idea de cómo solucionarlo?
En cambio si lo meto dentro de una función funciona perfectamente. Os aporto una función para manejar acentos, eñes y otros caracteres.
dentro de esta función si que puedo igualar un string a Chr$(27) & Chr$(116) & Chr$(19) & Chr$(160) .
PUBLIC FUNCTION cambialetra(NOMBREesc AS String) AS String
DIM Acentu AS String
DIM busqueda AS String
DIM I AS Integer
DIM OCUPA1 AS Integer
DIM pos AS Integer
Acentu = Chr$(27) & Chr$(116) & Chr$(19) & Chr$(160)
OCUPA1 = Len(NOMBREesc)
FOR I = 1 TO OCUPA1
pos = InStr(NOMBREesc, "á", I)
IF pos > 0 THEN
NOMBREesc = Left(NOMBREesc, pos - 1) & Acentu & Mid(NOMBREesc, pos + 1, OCUPA1)
I = pos
ENDIF
NEXT
Acentu = Chr(27) & Chr(116) & Chr(19) & Chr(130)
OCUPA1 = Len(NOMBREesc)
FOR I = 1 TO OCUPA1
pos = InStr(NOMBREesc, "é", I)
IF pos > 0 THEN
NOMBREesc = Left(NOMBREesc, pos - 1) & Acentu & Mid(NOMBREesc, pos + 1, OCUPA1)
I = pos
ENDIF
NEXT
Acentu = Chr(27) & Chr(116) & Chr(19) & Chr(161)
OCUPA1 = Len(NOMBREesc)
FOR I = 1 TO OCUPA1
pos = InStr(NOMBREesc, "í", I)
IF pos > 0 THEN
NOMBREesc = Left(NOMBREesc, pos - 1) & Acentu & Mid(NOMBREesc, pos + 1, OCUPA1)
I = pos
ENDIF
NEXT
Acentu = Chr(27) & Chr(116) & Chr(19) & Chr(162)
OCUPA1 = Len(NOMBREesc)
FOR I = 1 TO OCUPA1
pos = InStr(NOMBREesc, "ó", I)
IF pos > 0 THEN
NOMBREesc = Left(NOMBREesc, pos - 1) & Acentu & Mid(NOMBREesc, pos + 1, OCUPA1)
I = pos
ENDIF
NEXT
Acentu = Chr(27) & Chr(116) & Chr(19) & Chr(163)
OCUPA1 = Len(NOMBREesc)
FOR I = 1 TO OCUPA1
pos = InStr(NOMBREesc, "ú", I)
IF pos > 0 THEN
NOMBREesc = Left(NOMBREesc, pos - 1) & Acentu & Mid(NOMBREesc, pos + 1, OCUPA1)
I = pos
ENDIF
NEXT
Acentu = Chr(27) & Chr(116) & Chr(19) & Chr(129)
OCUPA1 = Len(NOMBREesc)
FOR I = 1 TO OCUPA1
pos = InStr(NOMBREesc, "ü", I)
IF pos > 0 THEN
NOMBREesc = Left(NOMBREesc, pos - 1) & Acentu & Mid(NOMBREesc, pos + 1, OCUPA1)
I = pos
ENDIF
NEXT
Acentu = Chr(27) & Chr(116) & Chr(19) & Chr(137)
OCUPA1 = Len(NOMBREesc)
FOR I = 1 TO OCUPA1
pos = InStr(NOMBREesc, "ë", I)
IF pos > 0 THEN
NOMBREesc = Left(NOMBREesc, pos - 1) & Acentu & Mid(NOMBREesc, pos + 1, OCUPA1)
I = pos
ENDIF
NEXT
Acentu = Chr(27) & Chr(116) & Chr(19) & Chr(148)
OCUPA1 = Len(NOMBREesc)
FOR I = 1 TO OCUPA1
pos = InStr(NOMBREesc, "ö", I)
IF pos > 0 THEN
NOMBREesc = Left(NOMBREesc, pos - 1) & Acentu & Mid(NOMBREesc, pos + 1, OCUPA1)
I = pos
ENDIF
NEXT
Acentu = Chr(27) & Chr(116) & Chr(19) & Chr(165)
OCUPA1 = Len(NOMBREesc)
FOR I = 1 TO OCUPA1
pos = InStr(NOMBREesc, "ñ", I)
IF pos > 0 THEN
NOMBREesc = Left(NOMBREesc, pos - 1) & Acentu & Mid(NOMBREesc, pos + 1, OCUPA1)
I = pos
ENDIF
NEXT
RETURN NOMBREesc
END FUNCTION
Saludos
|