VHDL: TextIO, Fin de línea, Hread

0
process

  variable vGoodRead      : boolean := true;

  while (vGoodRead = true) loop         -- read till end of line.

      hread (vLineIn, vInData, vGoodRead);
      ........
  end loop;

  vGoodRead := true;  -- cos at End of line, it turns false

end process;

Estoy usando este código para leer en valores hexadecimales. Hay varios valores hexadecimales (y distintos de) en una sola línea.

Este código funciona, siempre que todos los valores hexadecimales en las líneas sean correctos.

Mi problema es que no he podido averiguar cómo detectar un caso, cuando hay un valor de entrada incorrecto, en algún lugar dentro de la línea. Es decir. hay FO (f, cap O) contra F0 (f, cero). Este último es válido, mientras que el primero no es válido.

Gracias por tu ayuda.

    
pregunta Jays

1 respuesta

1

Si hay caracteres restantes en la línea cuando detecta vGoodRead como falso, lo siguiente imprimirá el número de caracteres e imprimirá los caracteres reales que quedan en la línea:

  if vLineIn'length > 0 then 
    write(OUTPUT, "Number characters remaining in line: " & 
                  to_string(vLineIn'length) & LF) ;
    write(OUTPUT, "Actual characters are: " & vLineIn.all & LF) ; 
  end if ; 
    
respondido por el Jim Lewis

Lea otras preguntas en las etiquetas