Buenas,

Hemos encontrado una web en la que subes la imagen del código de barras y
te da lo que contiene: https://zxing.org/w/decode.jspx

Enviando el código datamatrix que nos ha enviado el cliente la
interpretación que hace de los 4 campos es esta:
[image: image.png]
Hace el salto de línea.

Sin embargo, con el que enviamos nosotros ya sea CR, LF, CRLF, LN,... Lo
interpreta de esta otra:
[image: image.png]

Ayer encontramos algo que teníamos mal, y es que en el CRTPRTF hay que
poner RPLUNPRT(*NO) para que no sustituya por blancos los caracteres no
imprimibles.

Pero aún así, nuestro código parece que sigue sin generarse correctamente.

Hemos probado definiendo las constantes de varias maneras:
     D CRLF            C                   CONST(x'0D25')
     D CRNL            C                   CONST(x'0D15')
     D LF             C                   CONST(x'0A')
     D CRLF           C                   CONST(X'0D0A')
     D CR              C                   CONST(x'0D')
     D LF              C                   CONST(x'25')
 y con todas ellas hemos probado con este código (donde pone LF hemos
probado con todas las constantes anteriores):
     C                  MOVE      *BLANKS       Z60              60
     C                   EVAL      Z60=%TRIM(P1_REFER1)+%TRIM(P1_REFER2)
     C                             + LF + %EDITC(P1_NUALBA:'X')
     C                             + LF + %TRIM(P2_CDARCL)
     C                             + LF + %CHAR(Z7N)
     C                   EVAL      PC_CDTMAT=Z60


Definición del datamatrix en el PRTF:
     A            PC_CDTMAT     60A       61BARCODE(DATAMATRIX +
     A                                       (*DATAMATRIX 20 20 +
     A                                        *USRDEF  *DATA *NO
     A                                        *ESCAPE))


Pero el resultado siempre es el del "rombo con interrogación" de la segunda
imagen.
Está claro que algo estamos haciendo mal, que algo más nos falta en el
CRTPRTF o en la definición del propio PRTF, o quizá algún lío de conversión
ASCII-hexadecimal...
Seguimos haciendo pruebas, pero no conseguimos dar en el clavo.

Muchas gracias!



On Fri, Nov 13, 2020 at 10:26 AM Alex Martínez <[email protected]> wrote:

> Hola
>
> Ya puestos prueba también con el hexadecimal 0D0A que es un CR+LF
>
> Salu2
>
> El jue., 12 nov. 2020 a las 15:35, estela retes (<[email protected]>)
> escribió:
>
>> Gracias Javier.
>>
>> Le hemos pedido al cliente que nos ponga en contacto con su departamento
>> técnico/informático para que nos den una especificación más completa.
>> Estamos a la espera.
>>
>> Mientras tanto, intentaremos conseguir la cadena ascii del código de
>> ejemplo que nos han enviado probando con la configuración de algún lector
>> que tenemos.
>>
>> Muchas gracias!
>>
>> On Thu, Nov 12, 2020 at 2:39 PM datil400 <[email protected]> wrote:
>>
>>> ¿Puede tu cliente enviarte la cadena ASCII que leen y la que debiera
>>> ser? De esta forma puedes intentar localizar el valor binario del carácter
>>> que buscas.
>>>
>>> Si está leyendo bien las letras, también debería leer correctamente el
>>> LF o lo que sea.
>>>
>>> La mayoría de lectores del mercado pueden servir, solo hay que
>>> configurarlos para que lean Datamatrix. Casi todos pueden parametrizarse.
>>>
>>> Un saludo,
>>>
>>> Javier
>>>
>>> El jue., 12 nov. 2020 14:31, estela retes <[email protected]> escribió:
>>>
>>>> Muchas gracias Javier,
>>>>
>>>> Hemos hecho lo que nos comentabas y a nuestro parecer los códigos de
>>>> barras están ya saliendo bien, pero hemos estado esperando respuesta del
>>>> cliente y nos dice que su lector no está interpretando lo que ellos llaman
>>>> ENTER. Nosotros le hemos enviado para probar el LF, el CR, el CRLF y hasta
>>>> un NL por si acaso, y nos dice que su lector no está interpretando bien el
>>>> salto.
>>>>
>>>> ¿Hay alguien que conozca algún software que interprete los códigos de
>>>> barras datamatrix y te devuelva lo que están leyendo incluídos los
>>>> caracteres de control? De esa manera al menos podríamos intentar leer el
>>>> único que nos han enviado de ejemplo (y que ellos dicen que va bien) e
>>>> intentar reproducir lo que tengan ahí puesto, que en este momento ya dudo
>>>> de si es un LF.
>>>>
>>>> Muchas gracias a todos!
>>>>
>>>> On Mon, Nov 9, 2020 at 3:51 PM datil400 <[email protected]> wrote:
>>>>
>>>>> Hola Estela,
>>>>>
>>>>> sustituye el \n por X'25'.
>>>>>
>>>>> Ten en cuenta que \n es un carácter de escape típico del lenguaje C
>>>>> que, precisamente, identifica un fin de línea (y lo que eso signifique). 
>>>>> En
>>>>> RPG no va a funcionar.
>>>>>
>>>>> El IBM i utiliza EBCDIC para codificar sus cadenas de caracteres, así
>>>>> el valor X'25' es LF y X'0D' es CR.
>>>>>
>>>>> Prueba a ver y nos cuentas.
>>>>>
>>>>> Un saludo,
>>>>>
>>>>> Javier Mora
>>>>>
>>>>> El lun., 9 nov. 2020 a las 12:39, estela retes (<[email protected]>)
>>>>> escribió:
>>>>>
>>>>>> Buenas a todos,
>>>>>>
>>>>>> Tenemos un cliente que nos ha solicitado que en sus albaranes
>>>>>> añadamos un código de barras de tipo Datamatrix que contenga la 
>>>>>> información
>>>>>> que va en el albarán.
>>>>>>
>>>>>> El código lo sacamos sin problema, pero en la especificación del
>>>>>> cliente viene que cada campo debemos separarlo con un "ENTER". Le pedimos
>>>>>> que nos aclarase más ese ENTER qué debía ser y nos respondió que debe ser
>>>>>> un
>>>>>>
>>>>>>    - LF (0x0A, \n)
>>>>>>
>>>>>>
>>>>>> El problema nos viene aquí, ya que no sabemos cómo codificar ese LF
>>>>>> dentro de la cadena de caracteres que componen el código de barras.
>>>>>>
>>>>>> En el PRTF tenemos descrito el campo así:
>>>>>>      A            PC_CDTMAT     20        61BARCODE(DATAMATRIX +
>>>>>>      A                                       (*DATAMATRIX 20 20 +
>>>>>>      A                                        *ESCAPE))
>>>>>>
>>>>>> En el SQLRPGLE:
>>>>>>
>>>>>>      C                   EVAL
>>>>>>  PC_CDTMAT=%TRIM(REFER1)+%TRIM(REFER2)
>>>>>>      C                             + '\n' + %EDITC(NUALBA:'X')
>>>>>>      C                             + '\n' + %TRIM(CDARCL)
>>>>>>      C                             + '\n' + %EDITC(CANSER:'X')
>>>>>>
>>>>>>
>>>>>> Pero cuando escaneamos el código nos interpreta el \n como si fuese
>>>>>> parte de la cadena de caracteres y no una secuencia de escape.
>>>>>>
>>>>>> ¿Alguien sabría decirnos qué estamos haciendo mal?
>>>>>>
>>>>>> Muchísimas gracias y un saludo,
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Estela
>>>>>> ____________________________________________________
>>>>>> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
>>>>>> Forum.Help400 © Publicaciones Help400, S.L.
>>>>>
>>>>> ____________________________________________________
>>>>> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
>>>>> Forum.Help400 © Publicaciones Help400, S.L.
>>>>
>>>>
>>>>
>>>> --
>>>> Estela
>>>> ____________________________________________________
>>>> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
>>>> Forum.Help400 © Publicaciones Help400, S.L.
>>>
>>> ____________________________________________________
>>> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
>>> Forum.Help400 © Publicaciones Help400, S.L.
>>
>>
>>
>> --
>> Estela
>> ____________________________________________________
>> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
>> Forum.Help400 © Publicaciones Help400, S.L.
>
> ____________________________________________________
> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
> Forum.Help400 © Publicaciones Help400, S.L.



-- 
Estela
____________________________________________________
�nete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 � Publicaciones Help400, S.L.

Reply via email to