Foros del Web » Programación para mayores de 30 ;) » Programación General »

Captar Se~nales en un puerto Rs232

Estas en el tema de Captar Se~nales en un puerto Rs232 en el foro de Programación General en Foros del Web. Hola ! Souy estudiante de Ingenieria mecanica y estoy metido en un proyecto en el cual estamos realizando un equipo para investigar caracteristicas de electrodos ...
  #1 (permalink)  
Antiguo 02/06/2009, 08:44
 
Fecha de Ingreso: marzo-2009
Mensajes: 39
Antigüedad: 15 años, 1 mes
Puntos: 0
Captar Se~nales en un puerto Rs232

Hola !
Souy estudiante de Ingenieria mecanica y estoy metido en un proyecto en el cual estamos realizando un equipo para investigar caracteristicas de electrodos de soldadura, este equipo tiene un censor de movimiento que es básicamente un mouse puerto serie, y a mi me toco la parte de captar esa señal y convertirla en distancia recorrida, y velocidad, asta el momento lo había hecho con "GetCursPos" de windows con las que obtenía la posición del mouse y ya con eso y un timer hacia todo lo demás, pero eso tiene el inconveniente de que no puedo utilizar el mouse mientras el equipo esta andando, y los datos no son muy exactos, ya que cuando el cursor llega a la parte inferior del monitor hay que reposicionarlo y en ese intervalo se perdía tiempo ademas e que en la reposicion hay que empesar a sumar lso datos obtenidos con los anteriores para que de los valores reales, y esto repetidas veces introduce datos erróneos en la investigación. Entonces me decidí a investigar sobre los puertos rs232 y vi que hay forma de hacer eso captando la señales recibidas, o algo así, el gran problema es que mis conocimientos sobre programación son muy muy pocos y entonces fue que me encontré un componente para Delphi (que es en donde lo estoy haciendo) se llama delphi-paralelo, ya ni se en que sitio porque he revisado tantos que ni recuerdo, pero este, según entendí en la poca info que traia, no me deja chequear el estado de los pines del 1,2,3,4,5,6,7,20,22 del DB-25 que según leí son los equivalentes a 1,3,2,7,8,6,5,1,4,9 en el DB-9 respectivamente, solo me deja establecerle el estado a los pines del 1 – 9 (que son casi todos los que necesito) y chequear el estado de los otros restante, es decir al contrario de lo que necesito, o por lo menos eso entendí.
Bueno la pregunta se cae de la mata. Como podría captar esas señales, y si es posible convertirlas, en la información que necesito, según tengo entendido, el movimiento mínimo del mouse es 1px por lo que cada señal de esas equivaldría a 1px, o por lo menos esa es la idea que tengo sobre todo esto aunque no estoy muy seguro, no se si estaré en lo correcto.

Les agradecería mucho su ayuda,
Saludos y muchas gracias de antemano

aqui les pongo lo que tego hecho por si sirve del algo

Código:
function MouseY:integer;
 begin
   GetCursorPos(Cur);
   Result := Cur.Y ;
 end;



Procedure Cronometro;

begin

  mSeg:=mSeg+1;

  if mSeg = 100

    then

      begin

        Seg  := Seg + 1;

        mSeg := 0;

      end

      else

      if Seg = 60

      then

        begin

         Min  := Min + 1;

         Seg  := 1;

         mSeg := 0;

     end;

end;



procedure TForm1.Timer2Timer(Sender: TObject);

var

  H: HDC;

begin

  H:= Canvas.Handle;

  MouseY();

  If Cur.y = 0

   then

     begin

       Timer3.Enabled:= false;

       Label3.Caption:= 'Descativado';

     end

   else

   begin

      Timer3.Enabled:= true;

      Label3.Caption:= 'Activado';

   end;

   label2.Caption := 'YPOS: ' + FloatToStr( GetDeviceCaps(H, VERTSIZE)*Cur.y/Screen.Height) + ' mm';

end;



procedure TForm1.Timer3Timer(Sender: TObject);

var

  F: TextFile;

  H:Hdc;



begin

  H:= Canvas.Handle;

  SetCursorPos(0,cur.Y);

  Cronometro;

  AssignFile(F, 'Output.txt');

  Append (F);

    if (cur.y >= 400)

    then

      begin

         count := count + 1;

         SetCursorPos(0,0);

      end;

  Writeln (F, FloatToStr(Seg+mSeg/100) + '     ' + FloatToStr( GetDeviceCaps(H, VERTSIZE)*Cur.y/Screen.Height));

  CloseFile(F);

  label4.Caption := FloatToStr(Seg+mSeg/100) +  '      ' + IntToStr(count);

end;



procedure TForm1.FormCreate(Sender: TObject);

var

  F: TextFile;

begin

  SetCursorPos(0,0);

  AssignFile(F, 'Output.txt');

  Rewrite (F);

  WriteLn (F, 'Time  Pos');

  CloseFile(F);

end;



end.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:43.