Ver Mensaje Individual
  #1  
Antiguo 04-05-2014
rabata2001 rabata2001 is offline
Miembro
 
Registrado: nov 2010
Posts: 88
Reputación: 14
rabata2001 Va por buen camino
Post Caracter escape Hexadecimal

Buenas a todos

Tengo un hardware que me devuelve cada 5 segundos una serie de registros (todos agrupado en una sola linea), lo estoy leyendo con un componente tcpclient y su método receiveln.

Tcpclient1,receiveln(Buf,ls_fin). buf es un Pansichar y ls_fin es el caracter de escape de la cadena.

Cuando trabajo con este método en decimal, le paso un CRLF (retorno de carro, #13#10) y todo va perfecto, corta las cadena por separado, cada vez que se encuentra un retorno de carro, me trata una cadena independiente y continua con la otra.

El problema se trata cuando trabajo en hexadecimal. la cadena que me trae el metodo (varios registros), delphi me la pita con carateres raros

Delphi me pinta esto: 'Ž'#2#$1F, pero al convertirlo a caracteres ascii, me trae lo siguiente en hexadecimal:
Cita:
{8E} {02} {1F} {00} {5B} {36} {00} {00} {02} {00} {01} {02} {00} {00} {07} {02} {25} {00} {0C} {01} {79} {06} {01} {00} {81} {04} {97} {12} {02} {00} {8F} {8E} {02} {1F} {00} {5B} {36} {00} {00} {02} {00} {01} {02} {00} {00} {07} {02} {25} {00} {0C} {01} {79} {06} {01} {00} {81} {04} {97} {12} {02} {00} {8F} {00}
Siendo el caracter 8F, el que corta la cadena (separacion de registros), debería de romper la cadena y tratarla como dos cadenas independientes.

¿Alguien podría orientarme de como enviar la cadena de fin de registro 8F?

Lo he intentado como

Código Delphi [-]
    ls_fin:=PAnsiChar('8F');
    ls_fin:='8F';
    ls_fin:='$' + '8F'
    ls_fin := IntToHex(Ord('8F'),1);
    .....


Gracias a todos por Vuestra colaboración.

Saludos

Última edición por Casimiro Notevi fecha: 04-05-2014 a las 09:53:56.
Responder Con Cita