Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > ASM y Microcontroladores
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-05-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
en delphi.zip has puesto todo menos el .pas .
Responder Con Cita
  #2  
Antiguo 12-05-2008
italo_grossi italo_grossi is offline
Registrado
 
Registrado: jun 2006
Posts: 4
Poder: 0
italo_grossi Va por buen camino
Ahora sip esta el codigo entero

Amigos aca esta el codigo completo pero si lo kieren probar tendran que instalar el compornente cport que esta en la direccion que anteriormente he puublicado grax
Archivos Adjuntos
Tipo de Archivo: zip com.zip (16,3 KB, 31 visitas)
Responder Con Cita
  #3  
Antiguo 12-05-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Italo_grossi me da la impresion que has ido cogiendo y pegando codigo de varios sitios sin comprender bien bien que hace...
mira, vamos a hacer que se te pongan los valores muestreados en la memo 'numero', sin que de momento lo pase al tchart, y me dices q te sale

en vez de ... (ComportRxChar)

Código Delphi [-]
var
  Str,z,b,g: String;
  dato, conv : real;
  s,i:integer;
  nume:double;

begin
   ComPort.ReadStr(Str, count);
   memo.Lines.Add(Str);
   f:=f+1;
 // label1.Caption:=floattostr(h);
  //label2.Caption:=Str;
  if (((memo.Lines[0]='x')or(memo.Lines[1]='x')or(memo.Lines[2]='x'))and(memo.Lines[3]<>'x')) then begin  memo.Lines.Clear; f:=0;  end;//goto GotoLabel;  end;

  if (f=4) then
      begin
        h:=h+1;
        gran:=gran+1;
          if (h=200) then begin series1.Clear; h:=0; end;
          if (gran=2500) then begin series2.Clear; gran:=0;  end;

            z:=memo.Lines[0]+memo.Lines[1]+memo.Lines[2];
            val(z,nume,s);
            numero.Lines.Add(floattostr(nume));
            series1.Add(nume*(strtofloat(edit1.Text))/255);
            series2.Add(nume*(strtofloat(edit1.Text))/255);
            f:=0;
            memo.Clear;
           // ComPort.ClearBuffer(True, False);
      end;

  end;

pon

Código Delphi [-]
var
   s : string;
begin
   ComPort.ReadStr(s,count);
   while (s = 'x') or (s='y')do 
   begin 
       ComPort.ReadStr(s, count);
       Application.ProcessMessages; 
   end;
   numero.Add(s);
end;

esto en teoria te tiene que ir llenando la memo 'numero' de los numeros muestreados, sin las x ni las y...que por cierto, desde el fichero 7.c ... para q son las 'x' y las 'y's? no te iria mejor cambiarlo a printf("%lu",s) sin poner el printf("x") delante y el printf("y") detras?

venga, espero tu respuesta

Última edición por coso fecha: 12-05-2008 a las 19:07:09.
Responder Con Cita
  #4  
Antiguo 12-05-2008
[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
Hice una prueba colocando un TrackBar en el formulario y este código:

Código Delphi [-]
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  If comport.Connected then
    Comport.WriteStr(IntTostr(TrackBar1.Position ))
  else
    showmessage('Abra el Puerto primero');
end;

Conecte los pines 2 (Tx) y 3 (Rx) de mi puerto com en puente para que el trasmita y reciba simultaneamente.
Al TrackBar le puse un valor de mínimo 100 y máximo 500 con intervalos de 15 y en memo me aparecen perfectamente los tres dígitos. tres lecturas y se limpia el memo.

Pienso que el problema no esta en la recepcion sino en la manera en que estas enviando los datos, pero eso ya es codigo de los pics y ahi si no se nada.

Última edición por FGarcia fecha: 23-05-2008 a las 22:17:58.
Responder Con Cita
  #5  
Antiguo 12-05-2008
italo_grossi italo_grossi is offline
Registrado
 
Registrado: jun 2006
Posts: 4
Poder: 0
italo_grossi Va por buen camino
hola

grax amigos por la ayuda pero contesto algunas preguntas.....los ocntervalos de 15 ms??? eso es demasiado timepo la idea es muestrear menos de 1 ms 500us seria lo ideal lo que pasa es que a esa velocidad el porgrama de delphi si agrupa los valores en 3 cifras y toodo bien pero cuendo bajo la velocidad ......entonces en algunas lineas del memo encontremos solo un valor y entraas nada o en otroas la cifra entera.

la cosa creo k va mas que nada en trabajar no recepcionando el buffer del puerto serial se que mi codigo es muy basico y no he solo copiado o pegado como se dice ahi me base en un ejemplo que traia el mismo componente cport se que a baja velocidad ni un problema... pero es no es mi idea.....

estoy probando las posibles soluciones que me han anviado.........ahhh lo ultimo la rutina del microcontrolado es muy basica y solo manda un string....noc reo que eso sea el problema.
Responder Con Cita
  #6  
Antiguo 12-05-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Quiza el problema esta en que por debajo de los 15 ms la aplicación aun esta ejecutando otro codigo, por lo que algunas muestras se 'pierden'...

bueno, es una idea. Quiza pasa por optimizar el codigo de 7.c...
Responder Con Cita
  #7  
Antiguo 13-05-2008
[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!
No me explique correctamente, los intervalos de 15 no son intervalos de ningun temporizador, son los intervalos que avanza en su posicion el trackbar.

Despues de dormir y descansar (aja!) probe con un timer en intervalos de 1ms e insisto funciona bien. Solo añadi al formulario un Timer con su propiedad Interval a 1 y un boton de inicio.

Código Delphi [-]
procedure TForm1.Button7Click(Sender: TObject);
begin
  if timer1.Enabled then
    begin
      Button7.Caption := 'Timer On';
      timer1.Enabled := false;
    end
  else
    begin
      Button7.Caption := 'Timer Off';
      timer1.Enabled := true;
    end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  trackbar1.Position := TrackBar1.Position + 1;
end;

Última edición por FGarcia fecha: 13-05-2008 a las 18:29:37. Razón: Pruebas extras
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
Consulta Delphi 6, Delphi 2005 y Delphi 2006 Leviatan Varios 6 18-08-2007 16:02:08
Ayuda con Cport VNNO Varios 0 10-02-2007 02:07:30


La franja horaria es GMT +2. Ahora son las 02:13:42.


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