Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-10-2008
Avatar de Sr.Scorpion
Sr.Scorpion Sr.Scorpion is offline
Miembro
 
Registrado: mar 2005
Posts: 92
Poder: 20
Sr.Scorpion Va por buen camino
Unhappy Eliminar caracteres extraños obtenidos por puerto serie

Hola

Uso Delphi 6.0 y el componente ComPort, estoy adquiriendo datos de una pizarra telefonica y los pongo en un memo pero me salen caracteres extraños como un palito bien negro... caracter q no salia cuando capturaba la informacion por el Hyperterminal alguien me puede decir como eliminar eso ?

Saludos de antemano
__________________
La paciencia es un árbol de raíz amarga pero de frutos muy dulces.

Sr.Scorpion
Responder Con Cita
  #2  
Antiguo 17-10-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por Sr.Scorpion Ver Mensaje
Hola

Uso Delphi 6.0 y el componente ComPort, estoy adquiriendo datos de una pizarra telefonica y los pongo en un memo pero me salen caracteres extraños como un palito bien negro... caracter q no salia cuando capturaba la informacion por el Hyperterminal alguien me puede decir como eliminar eso ?

Saludos de antemano
Hola,

Así sin ver, me podria aventurar que son caracteres de control que van desde el Null (ASCII 0) hasta el US (ASCII 31), si colocas el código con el cual estas recibiendo datos, te podriamos ayudar mejor.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #3  
Antiguo 19-10-2008
mario2000 mario2000 is offline
Miembro
 
Registrado: abr 2007
Posts: 109
Poder: 18
mario2000 Va por buen camino
probablemente es la velocidad con la que envias los datos.
yo siempre coloco este codigo y me sale todo bien:

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
dato:string;
begin
comport1.Readstr(dato,3);
memo1.Lines.Text:=memo1.Lines.Text+dato;
end;

tienes que seleccionar el evento rxchar y lo pones asi como te dije veras que si funciona si quieres te envio uno que tengo armado y funcionando
Responder Con Cita
  #4  
Antiguo 19-10-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Cita:
Empezado por Sr.Scorpion Ver Mensaje
Hola

Uso Delphi 6.0 y el componente ComPort, estoy adquiriendo datos de una pizarra telefonica y los pongo en un memo pero me salen caracteres extraños como un palito bien negro... caracter q no salia cuando capturaba la informacion por el Hyperterminal alguien me puede decir como eliminar eso ?

Saludos de antemano
Pon el codigo a ver que se le encuentra.

Un Saludo.
Responder Con Cita
  #5  
Antiguo 20-10-2008
Avatar de Sr.Scorpion
Sr.Scorpion Sr.Scorpion is offline
Miembro
 
Registrado: mar 2005
Posts: 92
Poder: 20
Sr.Scorpion Va por buen camino
Los caracteres en rojo son los q me salen, si hago un ShowMessage con el Texto q se lee desde el puerto me sale como un simbolo de un cuadrito.

10/20/08 10:46AM 219 01 2047564219 00:00'15 1771
10/20/08 10:46AM 222 01 8811345 00:02'30 6416

El codigo q utilizo es este:

Código Delphi [-]
procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
str: string;
begin
ComPort.ReadStr(Str, Count);
ShowMessage(Str);
Memo.Text := Memo.Text + Str;
end;

Saludos y gracias
__________________
La paciencia es un árbol de raíz amarga pero de frutos muy dulces.

Sr.Scorpion
Responder Con Cita
  #6  
Antiguo 20-10-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
A mí lo que me gustaría saber es ¿cómo has puesto ese caracter en el foro?

En serio, parece que pone 0013... y 13 es el símbolo ASCII de retorno de línea, en windows es muy común el caracter 10 seguido del 13 que viene a significar retorno de carro y retorno de linea. Su representación:
- en delphi str := #10#13;
- En hexadecimal $A$D
- En C y en otros lenguajes se suelen usar constantes CR (Carry Return) y LF (Line Feed??)

para eliminarlos podrías usar cualquier función de delphi:
Código Delphi [-]
 str := ReplaceStr(lacadena, #13, ' ', [rfReplaceAll]);

Espero sea eso. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #7  
Antiguo 20-10-2008
mario2000 mario2000 is offline
Miembro
 
Registrado: abr 2007
Posts: 109
Poder: 18
mario2000 Va por buen camino
Hola en count tienes que poner un entero pequeño de 1 a 10 es la cantidad de caracteres que vas a recivir.
Responder Con Cita
  #8  
Antiguo 20-10-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por mario2000 Ver Mensaje
Hola en count tienes que poner un entero pequeño de 1 a 10 es la cantidad de caracteres que vas a recivir.
No no, el parámetro count es precisamente los caracteres recibidos en el puerto, como dice Lepe, deberás de precisar cuales son los caracteres "raros" para que los reemplaces.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #9  
Antiguo 20-10-2008
mario2000 mario2000 is offline
Miembro
 
Registrado: abr 2007
Posts: 109
Poder: 18
mario2000 Va por buen camino
Hola egostar, siento dicentir un poco con eso, pero el manual dice comport lo dice.

ahora viejo el no deberia recivir caracteres extraños si en otro programa no le salen por que en el de el iban a salir, es mas le voy a hacer un ejemplo y se los subo, yo no soy experto es lo que mas me gustaria pero asi es como siempre lo he hecho y funciona perfectamente
Responder Con Cita
  #10  
Antiguo 20-10-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por mario2000 Ver Mensaje
Hola egostar, siento dicentir un poco con eso, pero el manual dice comport lo dice.

ahora viejo el no deberia recivir caracteres extraños si en otro programa no le salen por que en el de el iban a salir, es mas le voy a hacer un ejemplo y se los subo, yo no soy experto es lo que mas me gustaria pero asi es como siempre lo he hecho y funciona perfectamente
Hola,

Podriamos debartirlo, pero es muy claro, te explico, cuando tu lees datos del puerto serial tienes dos alternativas, que uses el evento OnRxChar (que es el evento que nos ocupa en este caso) o desde cualquier punto de tu programa, por ejemplo en un botón.

Si usas el evento onRxChar del ComPort debes de leer en base a los caracteres recibidos, que para eso es el parámetro Count.

Código Delphi [-]
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
  Str: String;
begin
  ComPort1.ReadStr(Str, Count);
end;

Si lees por ejemplo al presionar un boton, entonces si, puedes indicar cuantos caracteres quieres leer.

Código Delphi [-]
Procedure LeePuerto;
var
  Str: String;
begin
  ComPort1.ReadStr(Str, 127);
end;

Y si tienes alguna duda, lee bien el manual del ComPort, en especifico la sección Reading from port

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney

Última edición por egostar fecha: 20-10-2008 a las 20:48:35.
Responder Con Cita
  #11  
Antiguo 20-10-2008
mario2000 mario2000 is offline
Miembro
 
Registrado: abr 2007
Posts: 109
Poder: 18
mario2000 Va por buen camino
Bueno egostar tu sabes mas que yo, debes tener razon. , yo tambien reviso a ver lo que tu dices y gracias por las aclaraciones
Responder Con Cita
  #12  
Antiguo 21-10-2008
Avatar de Sr.Scorpion
Sr.Scorpion Sr.Scorpion is offline
Miembro
 
Registrado: mar 2005
Posts: 92
Poder: 20
Sr.Scorpion Va por buen camino
Cita:
Empezado por Lepe Ver Mensaje
A mí lo que me gustaría saber es ¿cómo has puesto ese caracter en el foro?

En serio, parece que pone 0013... y 13 es el símbolo ASCII de retorno de línea, en windows es muy común el caracter 10 seguido del 13 que viene a significar retorno de carro y retorno de linea. Su representación:
- en delphi str := #10#13;
- En hexadecimal $A$D
- En C y en otros lenguajes se suelen usar constantes CR (Carry Return) y LF (Line Feed??)

para eliminarlos podrías usar cualquier función de delphi:
Código Delphi [-] str := ReplaceStr(lacadena, #13, ' ', [rfReplaceAll]);


Espero sea eso. Saludos
La funcion ReplaceStr es propia de Delphi, API ???? o es una funcion q implementastes tu

Saludos
__________________
La paciencia es un árbol de raíz amarga pero de frutos muy dulces.

Sr.Scorpion
Responder Con Cita
  #13  
Antiguo 21-10-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por Sr.Scorpion Ver Mensaje
La funcion ReplaceStr es propia de Delphi, API ???? o es una funcion q implementastes tu

Saludos
Hola Sr.Scorpion,
Esa función ya viene en Delphi. Para saber más sobre la función escribe su nombre, seleccionalo y presiona F1. Debería aparecerte la ayuda sobre dicha función.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #14  
Antiguo 21-10-2008
Avatar de Sr.Scorpion
Sr.Scorpion Sr.Scorpion is offline
Miembro
 
Registrado: mar 2005
Posts: 92
Poder: 20
Sr.Scorpion Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
Hola Sr.Scorpion,
Esa función ya viene en Delphi. Para saber más sobre la función escribe su nombre, seleccionalo y presiona F1. Debería aparecerte la ayuda sobre dicha función.

Saludos,
Lo q me dices fue lo primero q hice le di F1 a la funcion y me sale un ReplaceText con parametros totalmente diferentes. OJO estoy usando Delphi 6

Saludos
__________________
La paciencia es un árbol de raíz amarga pero de frutos muy dulces.

Sr.Scorpion
Responder Con Cita
  #15  
Antiguo 21-10-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por Sr.Scorpion Ver Mensaje
Lo q me dices fue lo primero q hice le di F1 a la funcion y me sale un ReplaceText con parametros totalmente diferentes. OJO estoy usando Delphi 6

Saludos
Hola,

Tienes razón no es ReplaceStr() es StringReplace()

Código Delphi [-]
type
  TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase);

function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #16  
Antiguo 21-10-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
gracias amigos, ya nos habéis sacado del apuro.

Nunca acierto con el nombre de esa rutina, es mi talón de aquiles... (y la vejez que no perdona ).

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #17  
Antiguo 21-10-2008
Avatar de Sr.Scorpion
Sr.Scorpion Sr.Scorpion is offline
Miembro
 
Registrado: mar 2005
Posts: 92
Poder: 20
Sr.Scorpion Va por buen camino
Cita:
Empezado por egostar Ver Mensaje
Hola,

Tienes razón no es ReplaceStr() es StringReplace()

Código Delphi [-]type TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase); function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;


Salud OS

Disculpen mi ignorancia con esta funcion.... alguien puede postear un ejemplo de esta funcion... algo tengo q estar haciendo mal, q no hay manera q me compile el Delphi

Saludos
__________________
La paciencia es un árbol de raíz amarga pero de frutos muy dulces.

Sr.Scorpion
Responder Con Cita
  #18  
Antiguo 21-10-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Hola...

¿Te da algún error? ¿Cuál? Ponlo aquí para que te podamos ayudar mejor...



Saludos...
Responder Con Cita
  #19  
Antiguo 21-10-2008
Avatar de Sr.Scorpion
Sr.Scorpion Sr.Scorpion is offline
Miembro
 
Registrado: mar 2005
Posts: 92
Poder: 20
Sr.Scorpion Va por buen camino
Thumbs down

Cita:
Empezado por maeyanes Ver Mensaje
Hola...

¿Te da algún error? ¿Cuál? Ponlo aquí para que te podamos ayudar mejor...


Saludos...
Aqui va el codigo q tengo puesto... me imagino q sea algun error de concepto.

Código Delphi [-]
type
  TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase);
  TForm1 = class(TForm)
    ComPort: TComPort;
    Memo: TMemo;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ComPortRxChar(Sender: TObject; Count: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
implementation

{$R *.dfm}


procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
Flags: TReplaceFlags;
str,cadena: string;
begin
ComPort.ReadStr(cadena, Count);
str:= StringReplace(cadena, '#13', '', Flags);
ShowMessage(Str);
Memo.Text := Memo.Text + Str;
end;

La cadena en rojo es la q me da el error y me dice Error [50] Incompatible types

Mil gracias de antemano
__________________
La paciencia es un árbol de raíz amarga pero de frutos muy dulces.

Sr.Scorpion
Responder Con Cita
  #20  
Antiguo 21-10-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Hola...

Prueba así:

Código Delphi [-]
str:= StringReplace(cadena, #13, '', Flags);

Fijate que #13 no está encerrado entre comillas...


Saludos...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Caracteres extraños (#$D#$A) Iuconlas Varios 2 23-09-2005 17:09:05
Puerto serie esquerda21 Varios 2 12-05-2004 23:58:52
caracteres extraños en reportes Tangela Conexión con bases de datos 0 21-01-2004 19:56:22
Puerto serie y tcp mercurio Varios 3 28-10-2003 01:21:59
Caracteres extraños Germi Conexión con bases de datos 1 14-10-2003 15:26:18


La franja horaria es GMT +2. Ahora son las 02:44:51.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi