Queremos enseñarte la mejor información que hallamos en línea. Nosotros deseamos que te resulte de mucha ayuda y si quieres compartir alguna mejora hazlo con total libertad.
Solución:
Los caracteres de funciones especiales, como FNC1 a FNC4, pertenecen a la clase de “caracteres que no son datos” que se pueden codificar dentro de varias simbologías de códigos de barras pero que no tienen ninguna representación ASCII directa en el flujo de datos decodificados. Cada simbología que admite dichos caracteres tiene un esquema diferente para codificarlos en su representación interna, muy distinto de cualquier dato de carácter orientado a bytes.
Los caracteres FNC sirven como caracteres de la bandera (indicando algo especial para el lector) y como formateo de caracteres (modificando el significado de los datos codificados). Como tales, no están destinados a ser transmitidos directamente en los datos recibidos por el sistema host desde un lector de código de barras básico.
El propósito habitual de cada uno de los caracteres FNC es el siguiente:
- FNC1 – Datos estructurados carácter de la bandera indicando formato GS1 y AIM Y separador de grupo carácter de formato, entre otros usos.
- FNC2 – Agregar mensaje carácter de la bandera para almacenar en búfer los datos en grupos de símbolos para una sola lectura.
- FNC3 – Programación del Lector carácter de la bandera para fines de configuración del dispositivo.
- FNC4 – ASCII extendido carácter de formato para codificar caracteres con ordinales 128-255.
Tenga en cuenta que es posible que no todos estén disponibles en ciertas simbologías de códigos de barras e incluso que se especifiquen de formas diferentes, atípicas o sobrecargadas.
La codificación de un carácter FNC en los datos internos de un símbolo se logra a través de un “mecanismo de escape” específico del software de codificación. Por ejemplo, para usar FNC1 en su función típica de datos estructurados GS1 para los datos “(01)00312345678906(21)123456789012(30)0144”, es posible que vea los caracteres FNC1 escapados como FNC1
para que la entrada se vea como FNC1010031234567890621123456789012FNC1300144
. Pero cada biblioteca tiene una forma diferente de aceptar estos caracteres que no son datos y algunas incluso insertarán los caracteres requeridos automáticamente.
Al escanear un código de barras, los datos internos del símbolo generalmente se decodifican y luego se transmiten al host a través de un canal básico (p. ej., cuña de teclado) como una secuencia de bytes que se interpretarán de acuerdo con la codificación de caracteres Latin-1. Los caracteres FNC no se pueden representar de esa manera y se excluyen del flujo de datos, sin embargo, su efecto de formato en los restos de datos.
Por ejemplo, los estándares para la mayoría de las simbologías especifican que cuando un carácter FNC1 se usa en su rol como separador de campo en datos conforme al formato estándar del identificador de aplicación GS1, debe decodificarse y transmitirse como GS (ASCII 29). Explícitamente dicho, el efecto de formato de un carácter FNC1 utilizado como separador del identificador de aplicación GS1 es colocar un carácter GS al final del campo de longitud variable. Pero en otros roles (como cuando FNC1 se usa en “primera/segunda posición” como personaje de la bandera y con datos no formateados GS1) hay sin efecto de formato en los datos transportados y, por lo tanto, no hay representación ASCII durante la decodificación.
Otra instancia de los caracteres de funciones especiales que tienen un efecto de formato en los datos es con simbologías que usan FNC4 para extender su alcance de ASCII de 7 bits a ASCII extendido como se describe en esta respuesta.
Un punto técnico sutil es que los datos transferidos al host a menudo tienen el prefijo de un encabezado indicador de símbolo corto conocido como “identificador de simbología” que denota el tipo y el uso del símbolo desde el cual se leen los datos. Esto a menudo se modifica por la presencia de caracteres de bandera invisibles dentro de los datos del símbolo, por ejemplo, para indicar la presencia de datos con formato GS1 con “FNC1 en primer lugar” o para indicar el modo de programación del lector cuando FNC3 aparece en cualquier parte del símbolo. Los detalles son específicos de la simbología.
Si crees que ha sido de provecho este post, te agradeceríamos que lo compartas con más programadores de esta forma contrubuyes a extender esta información.