Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-03-2011
harimuya harimuya is offline
Miembro
 
Registrado: ago 2003
Posts: 19
Poder: 0
harimuya Va por buen camino
Unhappy Componente Comport

Tengo un problema con el componente CPortLib, exactamente con el
Comport, no me captura la informacion a traves de un For - End
funciona bien si lo hago por partes (es decir click para capturar, click para procesar) pero no me sirve asi, debo poner todo el proceso a traves de un for, les paso algo...
Código Delphi [-]
for Wvez := 1 to 50 do
begin
ComPort.Port:='COM12';
ComPort.BaudRate:=brCustom;
ComPort.Open
ComPort.WriteStr('1');
        
ComPort.ReadStr(Str, 3000);   // Esta parte no me funciona
Memo1.Text := Str;    // Si le pongo un Message recien captura
.        // si le pongo Sleep(xx) tampoco funciona 
.
.
end;
esto debe ser automatico,
alguien podria ayudar con este tema
desde ya gracias por su respuestas

Última edición por ecfisa fecha: 30-03-2011 a las 22:16:54. Razón: Etiquetas DELPHI
Responder Con Cita
  #2  
Antiguo 30-03-2011
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Cita:
Empezado por harimuya Ver Mensaje
Tengo un problema con el componente CPortLib, exactamente con el
Comport, no me captura la informacion a traves de un For - End
funciona bien si lo hago por partes (es decir click para capturar, click para procesar) pero no me sirve asi, debo poner todo el proceso a traves de un for, les paso algo...
Código Delphi [-]
Application.Processmessages;
for Wvez := 1 to 50 do begin
 ComPort.Port:='COM12';
 ComPort.BaudRate:=brCustom;
ComPort.Open ComPort.WriteStr('1');
                  ComPort.ReadStr(Str, 3000);   
// Esta parte no me funciona
 Memo1.Text := Str;
      // Si le pongo un Message recien captura .
              // si le pongo Sleep(xx) tampoco funciona  . .
 end;
esto debe ser automatico,
alguien podria ayudar con este tema
desde ya gracias por su respuestas

Prueba de esta manera a ver.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 30-03-2011
harimuya harimuya is offline
Miembro
 
Registrado: ago 2003
Posts: 19
Poder: 0
harimuya Va por buen camino
Cita:
Empezado por marcoszorrilla Ver Mensaje
Prueba de esta manera a ver.

Un Saludo.


Nada MarcosZorrila,

sigue sin funcionar y me va a volver loco este tema

Saludos.
Responder Con Cita
  #4  
Antiguo 30-03-2011
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
Hola!

1. No veo el porque en cada iteracion del ciclo for asignas puerto baudios y abres el puerto. Creo que eso lo debes de hacer antes de entrar en el ciclo for.

Código Delphi [-]
 ComPort.Port:='COM12';
 ComPort.BaudRate:=brCustom;
 ComPort.Open
Application.Processmessages;
for Wvez := 1 to 50 do 
  begin
     ComPort.WriteStr('1');
     ComPort.ReadStr(Str, 3000);   
     // Esta parte no me funciona
     Memo1.Text := Str;
     // Si le pongo un Message recien captura .
     // si le pongo Sleep(xx) tampoco funciona  . .
 end;

2. ¿Has visto los ejemplos que tre el comport? Ahi te muestra que deberias de usar el evento OnRxChar para capturar los datos entrantes:

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

3. Por supuesto esto ultimo lo deberas adaptar a tus nececidades.

Saludos!!
__________________
ESTO ES UN FORO ... NO UN MÓVIL
¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender?
Responder Con Cita
  #5  
Antiguo 30-03-2011
harimuya harimuya is offline
Miembro
 
Registrado: ago 2003
Posts: 19
Poder: 0
harimuya Va por buen camino
Cita:
Empezado por FGarcia Ver Mensaje
Hola!

1. No veo el porque en cada iteracion del ciclo for asignas puerto baudios y abres el puerto. Creo que eso lo debes de hacer antes de entrar en el ciclo for.

Código Delphi [-]
 ComPort.Port:='COM12';
 ComPort.BaudRate:=brCustom;
 ComPort.Open
Application.Processmessages;
for Wvez := 1 to 50 do 
  begin
     ComPort.WriteStr('1');
     ComPort.ReadStr(Str, 3000);   
     // Esta parte no me funciona
     Memo1.Text := Str;
     // Si le pongo un Message recien captura .
     // si le pongo Sleep(xx) tampoco funciona  . .
 end;

2. ¿Has visto los ejemplos que tre el comport? Ahi te muestra que deberias de usar el evento OnRxChar para capturar los datos entrantes:

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

3. Por supuesto esto ultimo lo deberas adaptar a tus nececidades.

Saludos!!

Gracias FGarcia por la respuesta.
Con respecto a asignar y abrir el puerto lo hago antes del for y con respecto al OnRxChar si fue lo primero que probe pero igual no recibo la informacion hasta que termine el programa, y necesito recibir la informacion despues de cada ComPort.WriteStr('1'); para poder trabajar con la informacion que recibo antes de tener la siguiente vuelta.

Saludos.
Responder Con Cita
  #6  
Antiguo 31-03-2011
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
harimuya:

Con un ratillo libre hice este ejemplo, revisalo y espero que sea lo que necesitas.

El proyecto esta en delphi 2010, se supone que en versiones anteriores lo puedes abrir, en caso de algun problema solo comenta la linea siguiente (en el Source Code del proyecto)

Código Delphi [-]
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True; //COMENTA ESTA LINEA
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.Run;
end.

La unit2 solo la cree para hacer pruebas con el hardware adecuado, no es necesario que la uses.

Otro detalle es en comport version 2010 es el uso de AnsiString en vez de String solamente, solo cambia el tipo de variable donde sea necesario en el proyecto si tienes una version anterior.

No olvides comentarnos como te fue.
Archivos Adjuntos
Tipo de Archivo: zip TestComPort_CDelphi.zip (15,9 KB, 105 visitas)
__________________
ESTO ES UN FORO ... NO UN MÓVIL
¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender?
Responder Con Cita
  #7  
Antiguo 08-04-2011
harimuya harimuya is offline
Miembro
 
Registrado: ago 2003
Posts: 19
Poder: 0
harimuya Va por buen camino
Estimado FGarcia:

Ante todo gracias por la respuesta, te comento los casos que tengo ahora,

1.- Probe lo que me enviastes y funciona pero la informacion que recibe se corta en algunos casos, recibiendo de las 130 muestras a veces 20 muestras, por cada pasada, es decir en cada for, no, en todo los for
2.- Hice una prueba parecida al que me enviastes y tengo el mismo problema no me funciona, no recepciona la data, cambie mi programa le cambie los propiedades, etc, y no me funciona, solo funciona el que me enviastes,
le cambiastes algo ???, ademas si le incluyo algun componente a tu proyecto cambia de propiedades, para mostrarse como windows vista,

A la espera de tus comentarios.

Saludos.

harimuya
Responder Con Cita
  #8  
Antiguo 09-04-2011
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
El proyecto que te envie esta hecho en D2010 con los updates 4 y 5.
El ComPort es la version 4.0 con algunas modificaciones para funcionar con D2010, pero estas modificaciones solo se hicieron para que operara correctamente el ComPacket no tengo idea si esten afectando a RxChar.

¿Que version de delphi y/o comport estas usando?


Delphi2010 esta corriendo en Win 7 Pro 64 bits SP1

Aqui esta el como modificar el comport para 2010
__________________
ESTO ES UN FORO ... NO UN MÓVIL
¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender?

Última edición por FGarcia fecha: 09-04-2011 a las 22:17:01. Razón: Version del SO
Responder Con Cita
  #9  
Antiguo 11-04-2011
harimuya harimuya is offline
Miembro
 
Registrado: ago 2003
Posts: 19
Poder: 0
harimuya Va por buen camino
Gracias por tu tiempo FGarcia
Responder Con Cita
  #10  
Antiguo 18-05-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.009
Poder: 20
oscarac Va por buen camino
donde consigo el componente comport ???
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #11  
Antiguo 19-05-2011
harimuya harimuya is offline
Miembro
 
Registrado: ago 2003
Posts: 19
Poder: 0
harimuya Va por buen camino
en esta pagina puedes encontrarla:

http://www.torry.net/pages.php?s=89

Saludos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
problemas con comport juanpa130679 Varios 1 30-03-2011 23:34:53
Componente ComPort Mary Carmen G. Varios 1 06-08-2008 01:30:26
ayuda para instalar el componente ComPort en Builder 5 pollo_c C++ Builder 0 04-08-2008 16:05:48
componente ComPort pollo_c Varios 12 03-08-2008 00:14:33
ayuda con componente comport dperezju ASM y Microcontroladores 22 02-08-2008 21:45:08


La franja horaria es GMT +2. Ahora son las 03:58:03.


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