¿Puedo Hacer una Comunicación Serial De 9 Bits en Lugar De 7 U 8 Bits Con Los Productos De National Instruments?

Actualizado el Nov 8, 2023

Reportado en

Controlador

  • NI-VISA
  • NI-Serial

Detalles del problema

¿Puedo agregar un noveno bit de datos a mi comunicación en serie con los productos de National Instruments?

Solución

Los protocolos en serie para ciertos instrumentos utilizan un dataframe de 9 bits, en lugar de los 8 bits de datos más comunes y un bit de paridad. Sin embargo, el UART en todos los productos serie de National Instruments solo admite de 5 a 8 bits de datos, paridad Even / Odd / Mark / Space / None y los bits de parada de 1 / 1.5 / 2. Dado que el UART no admite 9 bits de datos directamente, no hay ninguna disposición en el controlador para lograr esto.

Hay dos soluciones diferentes que puede utilizar para comunicarse con 9 bits.

1. Utilice el bit de paridad como noveno bit de datos:

Transmisión:

  1. Deberá configurar el puerto para 8 bits de datos.
  2. Para agregar un noveno bit a su transmisión, deberá establecer explícitamente el bit de paridad en Mark o Space para cada byte que se transmita. Mark es un bit de paridad alta (1) y Space es un bit de paridad baja (0).

Por ejemplo, si necesita transmitir 000100010 binario, transmitiría el hexadecimal 0x88 y establecería la paridad a Space. Si necesitara transmitir 000100011 binario, igual transmitiría el hexadecimal 0x88 pero establecería la paridad en Mark. Tenga en cuenta que cuando se muestra en binario, el bit menos significativo es el bit más a la izquierda, ya que el bit menos significativo se envía primero en la transmisión en serie.

Recepción:

  1. Configure el puerto para 8 bits de datos con la comprobación de paridad habilitada, configurada como Space o Mark.
  2. Lea un byte a la vez.
  3. Si obtiene algún error de paridad, sabrá que el noveno bit es lo opuesto a lo que estableció.
  4. Agregue el bit apropiado.

Por ejemplo, digamos que configuras tu paridad como Space. Si lees un byte y obtienes un error de paridad, sabes que el noveno bit es Mark y puede agregar el bit apropiado.

Un problema con esto es que en LabVIEW 7.0 y versiones posteriores, cuando NI-VISA recibe un byte de datos con paridad incorrecta, reemplaza completamente los datos en serie con el carácter de error, que por defecto es 0 . LabVIEW 6.1 y anteriores no reemplazan un byte de datos con un byte de reemplazo de error de paridad. Puede cambiar este comportamiento modificando el archivo visaconf.ini .

Tenga en cuenta que si su instrumento solo necesita recibir el noveno bit de datos para propósitos de direccionamiento, pero nunca envía datos en el noveno bit, solo debe establecer la paridad una vez a lo que su instrumento espera.

Cómo modificar el archivo visaconf.ini para deshabilitar el bit de reemplazo de error:

Para los usuarios de Windows XP, el archivo visaconf.ini se encuentra en la carpeta <Documents and Settings> \ All Users \ Application Data \ National Instruments \ Nivisa .

Para los usuarios de Windows Vista o posterior, el archivo visaconf.ini se encuentra en la carpeta C: \ ProgramData \ National Instruments \ NIvisa .

Agregue las siguientes líneas al archivo y guarde:

[ASRL-RSRC-ALIAS]
DisableErrorReplacement = 1


Algunos usuarios de LabVIEW 2010 pueden notar que esta clave se puede perder al reiniciar su computadora o al abrir Measurement and Automation Explorer. Para garantizar que la clave esté siempre presente en el archivo visaconf.ini en el tiempo de ejecución, es posible agregar la clave mediante programación utilizando el siguiente código:

La ruta del archivo en el código anterior debe modificarse para que coincida con la ubicación del archivo visaconf.ini en la máquina local.

2. Use un microcontrolador separado que maneje frames de 9 bits:

Otra opción es usar un microcontrolador separado con un UART diseñado para manejar dataframes de 9 bits y colocarlo como intermediario entre el instrumento y la computadora. La computadora enviaría dos frames de datos de 8 bits por cada frame de 9 bits, uno con los primeros 8 bits, el segundo con el noveno bit, y haría que el UART vuelva a ensamblar esto en un frame de 9 bits para enviarlo al instrumento. De manera similar, el UART recibiría un frame de 9 bits del instrumento y devolvería dos frames de 8 bits a la computadora.