TODOPIC

Lenguajes de programación para PC => Delphi => Mensaje iniciado por: huichoman en 02 de Febrero de 2008, 02:47:54

Título: Comenzando con Delphi
Publicado por: huichoman en 02 de Febrero de 2008, 02:47:54
Hola, estoy comenzando a programar con Delphi. Así que a darle duro jeje. Iré posteando por acá cada programita que vaya haciendo, a modo de historial. La intención principal (o a largo plazo) es aprender a programar en Delphi. Y la intención espécifica (o a corto plazo, por el momento) es realizar la interfaz para el monitoreo la humedad y temperatura dentro de un invernadero, utlizando rs485 para comunicación serial entre el circuito del sensor y la pc corriendo el programa hecho en delphi.  Deseo utilizar las tpapro. Ya hice unas pequeñas pruebas, pero no logro controlar el rts, bueno hice una prueba modificando un poco el programa de ejmplo que viene y proteus isis utilizando el compimp, pero no me activa el rts, o no se logra ver, pero voy a tratar de leer a conciencia la documentación, y hacer las pruebas físicamente. Cualquier ayuda brindada y consejos (cuando postee los programas (y dudas)), serán de valiosa ayuda. Saludos, y a dar el mejor esfuerzo.

Ganbatte kudasai.

1. Hola mundo. (http://www.todopic.com.ar/foros/index.php?topic=20323.msg151870#msg151870)
2. Codcol (Calculadora de valores de resistencias). (http://www.todopic.com.ar/foros/index.php?topic=20323.msg152484#msg152484)
Título: Re: Comenzando con Delphi
Publicado por: RedPic en 02 de Febrero de 2008, 06:02:10
Muy bien huichoman, muy bien. Te recuerdo que para las comunicaciones serie hay un juego de VCL freeware muy bueno, que son las Async Professional (APRO) (http://tpapro.sourceforge.net/) que son las que yo uso y van de lujo.  :mrgreen:
Título: Re: Comenzando con Delphi
Publicado por: micro_cadaver en 02 de Febrero de 2008, 20:55:25
me apunto.  :mrgreen:
Título: Re: Comenzando con Delphi
Publicado por: huichoman en 03 de Febrero de 2008, 04:05:36
Antes que nada lo primero  :mrgreen:

Versión de Delphi que utilizaré: Borland Delphi Enterprise Versión 7.0 (Build 4.453) .
Título: Programa 1: Hola mundo
Publicado por: huichoman en 03 de Febrero de 2008, 05:11:20
Bueno, lo prometido es deuda, comienzo con delphi. Como no, mi primer programa "Hola mundo". Voy a ir rápido, sin ahondar mucho, pues necesito ayuda de los expertos en las partes que no entienda, siempre y cuando tengan tiempo, que es lo que la mayoría no tenemos jeje. Saludos y aca vamos.


0.- Creamos una nueva aplicattion. En mi caso la guardé como hola_mundo.pas.

1.- Colocamos un button (http://huichoman.diinoweb.com/files/button.png) (de la pestaña standard).

(http://huichoman.diinoweb.com/files/hmf.jpg)


Despues al darle doble click a su evento onclick, escribimos: Showmessage('Hola mundo');  entre el begin y el end;


El código debe lucir así:
Código: [Seleccionar]
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage('Hola mundo');
end;

end.

2.- Una vez hecho lo anterior, le damos click al botón run (http://huichoman.diinoweb.com/files/run.png) para ejecutar nuestro programa, el cual debe desplegar el  mensaje hola mundo, al clickar el botón.

(http://huichoman.diinoweb.com/files/hme.jpg)



Listo, mi primer programa. Son bienvenidas las dudas para los principiantes como su servidor, y con mas entusiasmo las sugerencias y/o consejos de los avanzados. Saludos y a dar el mejor esfuerzo.

Ganbatte kudasai.
Título: Re: Comenzando con Delphi
Publicado por: jfh900 en 04 de Febrero de 2008, 00:19:34
Si pulsas directamente dos veces sobre el botón te crea el evento OnClic y te lleva a él.

Un saludo
Título: Programa 2: Codcol resistencias (Programa para calcular valor de resistencias)
Publicado por: huichoman en 05 de Febrero de 2008, 22:36:35
Bueno, despues del primer programa hola mundo, leí unos manuales, descargué unos componentes, visité algunas páginas como la de Trucomanía (http://www.q3.nu/trucomania/ftesp.html), le tuve moviendo por aquí, por allá. Y pues me lancé de lleno con el segundo programa, el cual debería de ser algo útil para que compensara las horas de estudio  :mrgreen:. Así que me pusé a hacer una calculadora de valores de resistencias mediante el código de colores.

Componentes externos utilizados:

Coolcontrols. (Para los botones de colores).
Alphacontrols. (Pa que se vea chipocluda la interfaz).

OJO: No soy experto en utilizar esos componentes. De hecho tengo varias dudas, pero trasteando se checa que hace cada cosa.


Este es el ejecutable en acción.

(http://huichoman.diinoweb.com/files/codcol_exe.png)


Este es el aspecto del Form. (o la form?)

(http://huichoman.diinoweb.com/files/codcol_form.png)

Y este es el código fuente:

Código: [Seleccionar]

unit resistencias;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, CoolCtrls, Math, sSkinManager, sSkinProvider,
  sLabel, sPanel, sButton, sTabControl, sScrollBox, sFrameBar;

type
  TForm1 = class(TForm)
    btn_black1: TCoolBtn;
    banda1: TShape;
    btn_brown1: TCoolBtn;
    btn_red1: TCoolBtn;
    btn_orange1: TCoolBtn;
    boton_yellow1: TCoolBtn;
    btn_green1: TCoolBtn;
    btn_blue1: TCoolBtn;
    btn_purple1: TCoolBtn;
    btn_gray1: TCoolBtn;
    btn_white1: TCoolBtn;
    Shape1: TShape;
    banda2: TShape;
    banda3: TShape;
    Shape4: TShape;
    btn_black2: TCoolBtn;
    btn_brown2: TCoolBtn;
    btn_red2: TCoolBtn;
    btn_orange2: TCoolBtn;
    boton_yellow2: TCoolBtn;
    btn_green2: TCoolBtn;
    btn_blue2: TCoolBtn;
    btn_purple2: TCoolBtn;
    btn_gray2: TCoolBtn;
    btn_white2: TCoolBtn;
    btn_black3: TCoolBtn;
    btn_brown3: TCoolBtn;
    btn_red3: TCoolBtn;
    btn_orange3: TCoolBtn;
    boton_yellow3: TCoolBtn;
    btn_green3: TCoolBtn;
    btn_blue3: TCoolBtn;
    btn_purple3: TCoolBtn;
    btn_gray3: TCoolBtn;
    btn_white3: TCoolBtn;
    sSkinManager1: TsSkinManager;
    sSkinProvider1: TsSkinProvider;
    sPanel1: TsPanel;
    sPanel2: TsPanel;
    lbl_valor: TsLabel;
    salir: TsButton;
    sLabel1: TsLabel;
    sPanel3: TsPanel;
    sPanel4: TsPanel;
    sPanel5: TsPanel;
    sLabel2: TsLabel;
    sLabel3: TsLabel;
    sLabel4: TsLabel;
   
    procedure salirClick(Sender: TObject);
    procedure btn_black1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure btn_brown1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure btn_red1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure btn_orange1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure boton_yellow1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure btn_green1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure btn_blue1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure btn_purple1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure btn_gray1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure btn_white1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure btn_black2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure btn_brown2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure btn_red2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure btn_orange2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure boton_yellow2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure btn_green2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure btn_blue2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure btn_purple2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure btn_gray2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure btn_white2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure btn_brown3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure btn_black3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure btn_red3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure btn_orange3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure boton_yellow3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure btn_green3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure btn_blue3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure btn_purple3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure btn_gray3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure btn_white3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    procedure FormCreate(Sender: TObject);

    procedure calculaClick(Sender: TObject);


  private
    { Private declarations }
  public
    { Public declarations }
    vb1,vb2,vb3,vb3_aux:integer;
    valor:Real;

  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.salirClick(Sender: TObject);
begin
close;
end;

//Banda 1

procedure TForm1.btn_black1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda1.Brush.Color:=clBlack;
  vb1:=0;
end;

procedure TForm1.btn_brown1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,
  Y: Integer);
begin
     banda1.Brush.Color:=$00024480;
     vb1:=10;
end;

procedure TForm1.btn_red1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda1.Brush.Color:=clRed;
  vb1:=20;
end;

procedure TForm1.btn_orange1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda1.Brush.Color:=$000080FF;
  vb1:=30;
end;

procedure TForm1.boton_yellow1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda1.Brush.Color:=clYellow;
  vb1:=40;
end;

procedure TForm1.btn_green1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda1.Brush.Color:=clGreen;
  vb1:=50;
end;

procedure TForm1.btn_blue1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda1.Brush.Color:=clNavy;
  vb1:=60;
end;

procedure TForm1.btn_purple1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda1.Brush.Color:=clPurple;
  vb1:=70;
end;

procedure TForm1.btn_gray1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda1.Brush.Color:=clGray;
  vb1:=80;
end;

procedure TForm1.btn_white1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda1.Brush.Color:=clWhite;
  vb1:=90;
end;

//Banda 2

procedure TForm1.btn_black2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda2.Brush.Color:=clBlack;
  vb2:=0;
end;

procedure TForm1.btn_brown2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda2.Brush.Color:=$00024480;
  vb2:=1;
end;

procedure TForm1.btn_red2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda2.Brush.Color:=clRed;
  vb2:=2;
end;

procedure TForm1.btn_orange2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda2.Brush.Color:=$000080FF;
  vb2:=3;
end;

procedure TForm1.boton_yellow2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda2.Brush.Color:=clYellow;
  vb2:=4;
end;

procedure TForm1.btn_green2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda2.Brush.Color:=clGreen;
  vb2:=5;
end;

procedure TForm1.btn_blue2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda2.Brush.Color:=clNavy;
  vb2:=6;
end;

procedure TForm1.btn_purple2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda2.Brush.Color:=clPurple;
  vb2:=7;
end;

procedure TForm1.btn_gray2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda2.Brush.Color:=clGray;
  vb2:=8;
end;

procedure TForm1.btn_white2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda2.Brush.Color:=clWhite;
  vb2:=9;
end;

//Banda 3

procedure TForm1.btn_black3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
Begin
  banda3.Brush.Color:=clBlack;
  vb3:=1;
  vb3_aux:=0;
end;

procedure TForm1.btn_brown3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
     banda3.Brush.Color:=$00024480;
     vb3:=10;
     vb3_aux:=0;
end;

procedure TForm1.btn_red3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda3.Brush.Color:=clRed;
  vb3:=1;
  vb3_aux:=1;
end;

procedure TForm1.btn_orange3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda3.Brush.Color:=$000080FF;
  vb3:=10;
  vb3_aux:=1
end;

procedure TForm1.boton_yellow3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda3.Brush.Color:=clYellow;
  vb3:=100;
  vb3_aux:=1;
end;

procedure TForm1.btn_green3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda3.Brush.Color:=clGreen;
  vb3:=1;
  vb3_aux:=2;
end;

procedure TForm1.btn_blue3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda3.Brush.Color:=clNavy;
  vb3:=10;
  vb3_aux:=2;
end;

procedure TForm1.btn_purple3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda3.Brush.Color:=clPurple;
  vb3:=100;
  vb3_aux:=2;
end;

procedure TForm1.btn_gray3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda3.Brush.Color:=clGray;
  vb3:=1000;
  vb3_aux:=2;
end;

procedure TForm1.btn_white3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
  banda3.Brush.Color:=clWhite;
  vb3:=10000;
  vb3_aux:=2;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
vb1:=1;
vb2:=0;
vb3:=1;
vb3_aux:=1;
lbl_valor.Caption:='1 '+ 'K'+char(234);
end;


procedure TForm1.calculaClick(Sender: TObject);
begin
   valor:=(vb1+vb2)*vb3;

      if (vb3_aux=1) then begin
    lbl_valor.Caption:=FloatToStr(valor/10)+' K' + #$EA;
   end else
    if vb3_aux=2 then begin
      lbl_valor.Caption:=FloatToStr(valor/10)+' M' +char(234);
    end else
      lbl_valor.Caption:=FloatToStr(valor)+' ' +#$EA;

    end;

end.


Mis dudas:

1.- En mi compu se desplega bien el caracter Omega, pero en otras compus no. ¿Como puedo solucionarlo?.
2.- Comohacerle para que el programa se quedé del tamaño que le puse. (Que el usuario no lo pueda  redimensionar.)
3.- Es una buena manera de hacer este programa, o se puede depurar un poco? Tips, sugerencias...

A los novatos como su servidor, si tienen dudas de como le hice para poner, quitar, descomponer, etc  :mrgreen:, con gusto les explicaré.

Saludos. Y a dar el mejor esfuerzo.

Ganbatte kudasai.

Título: Re: Comenzando con Delphi
Publicado por: jfh900 en 05 de Febrero de 2008, 22:43:23
Aquí tienes un programilla echo en Delphi para trabajar con las resistencias. Se puede mejorar el valor de las resistencias generadas aleatoriamente, pero como lo que se pretende es la didáctica de la lectura de las resistencias, de momento lo dejo tal y como está.

Un saludo
Título: Re: Comenzando con Delphi
Publicado por: RedPic en 06 de Febrero de 2008, 03:16:08
La mejor forma de aprender Delphi es viendo ejemplos y modificándolos, tomando prestados bloques de código y mezclando unos con otros.

Todo Delphi tiene un directorio de ejemplos que tiene casi de todo. Abrid cada proyecto compiladlo y ved que hace. Por ahí empecé yo y llevo quince años ganándome la vida con él.  :mrgreen:

C:\Archivos de programa\Borland\Delphi6\Demos o similar.



Título: Re: Programa 2: Codcol resistencias (Programa para calcular valor de resistencias)
Publicado por: huichoman en 07 de Febrero de 2008, 01:46:21
Citar
1.- En mi compu se desplega bien el caracter Omega, pero en otras compus no. ¿Como puedo solucionarlo?.

Me autorespondo  :mrgreen:.  Le busqué y rebusqué como desplegar el caracter omega en otras compus diferentes a la mía, pero no lo logré. Utilicé, char, ansichar y widechar pero nomas no. Algo leí por ahi, que se debe a que Delphi no puede desplegar caracteres unicode o algo por el estilo, así que tenía dos opciones o cambiaba el símbolo omega por "Ohms" o le metía una imagen. Puesto que soy muy testarudo y me gusta que las cosas me salgan como las visualizo, pos me incliné por la segunda opción.

Les dejo el ejecutable (http://hostfile.org/CodCol.rar) por si alguien desea probarlo, y una captura de pantalla del programa funcionando.

(http://huichoman.diinoweb.com/files/codcol.png)

Saludos.

Ganbatte kudasai
Título: Comenzando con Delphi (Ayuda con las APRO para rs485)
Publicado por: huichoman en 08 de Febrero de 2008, 03:43:30
Citar
Muy bien huichoman, muy bien. Te recuerdo que para las comunicaciones serie hay un juego de VCL freeware muy bueno, que son las Async Professional (APRO) que son las que yo uso y van de lujo.

La mejor forma de aprender Delphi es viendo ejemplos y modificándolos, tomando prestados bloques de código y mezclando unos con otros.

Hola Redpic, ya instalé las apro, estoy leyendo los dos pdfs que vienen con los archivos, pero me sería de muchísima ayuda si me pudieras proporcionar un ejemplo sencillo, de como utilizar la comunicación con el rs485. Como se configura para que automáticamente controle el pin RTS, y cual la configuración para hacerlo manualmente. Y coincido contigo que la mejor manera de aprender es viendo ejemplos y modificándolos  :mrgreen:. Así se le puede meter mano y ver que hace si le modifico por aquí, si le pongo esto allá, si quito esta parte, etc. jejeje.  Saludos y gracias de antemano por la ayuda que puedas brindarme.

Ganbatte kudasai.
Título: Re: Comenzando con Delphi
Publicado por: RedPic en 08 de Febrero de 2008, 04:26:50
Ahora estoy en la oficina, cuando llegue a casa te pongo un ejemplo del RS485 en Delphi con las APro.  :mrgreen:
Título: Re: Comenzando con Delphi
Publicado por: huichoman en 08 de Febrero de 2008, 05:17:15
Ahora estoy en la oficina, cuando llegue a casa te pongo un ejemplo del RS485 en Delphi con las APro.  :mrgreen:

Muchisimas gracias. Mañana checo despues de la escuela. Estoy leyendo el APRO_ReferenceGuide.pdf. Son la 1:20 am por acá, mañana tengo examen, así que me voy a dormir. Al rato entre clases estudiaré un poco  :mrgreen:. jejeje

Saludos y gracias de nuevo.


Ganbatte kudasai.
Título: Re: Comenzando con Delphi
Publicado por: Modulay en 08 de Febrero de 2008, 06:43:38
¿La versión de AlphaControls que tienes es la de prueba?
Yo los he usado y si no recuerdo mal la limitación que tenía era la de que no se podía usar en un pc que no tuviera instalado el IDE.
Por cierto Diego ¿qué añadidura usas para esos forms tan chulos con barra de titulo negra como el de tu analizador lógico?
Título: Re: Comenzando con Delphi
Publicado por: huichoman en 08 de Febrero de 2008, 10:38:59
Hola Modulay.  La puedes encontrar xxxxxxxxxxxxxxxxxxxxxxxxxxxx

EDITADO X  MODERADOR: ViTAL---> A ver si nos leemos las normas....
Título: Re: Comenzando con Delphi
Publicado por: RedPic en 08 de Febrero de 2008, 12:19:00
Por cierto Diego ¿qué añadidura usas para esos forms tan chulos con barra de titulo negra como el de tu analizador lógico?

Jóse, son estas VCL : Skin de Link-Rank (http://www.link-rank.com/)

Título: Re: Comenzando con Delphi
Publicado por: Modulay en 08 de Febrero de 2008, 13:56:33
Gracias.
Les echo el guante ¡¡ya!! :)
Título: Re: Comenzando con Delphi
Publicado por: huichoman en 08 de Febrero de 2008, 18:48:11
Citar
EDITADO X  MODERADOR: ViTAL---> A ver si nos leemos las normas

Me he leido las normas. No entiendo cual de ellas fué la que violé.
La versión que utilizo no está en la página de alphacontrols. Una de las formas de encontrarla es en emule. No necesariamente emule implica piratería. Saludos
Título: Re: Comenzando con Delphi (RS485 con las APRO-- dudas)
Publicado por: huichoman en 10 de Febrero de 2008, 01:24:28
Estoy probando la comunicación RS485 con las APRO.

Revisé un poco  el APRO_referenceguide, y probé el ejemplo que viene incluido: Excom0.

En la página 86 del documento se puede leer lo siguiente:

Citar
property RS485Mode : Boolean
Default: False
Determines whether the RTS line should be raised or lowered automatically when transmitting data.
Set this property to True when using an RS-485 board or converter that uses the RTS line to enable the transmit line. In this mode, RTS will be raised whenever the program is transmitting data and lowered at all other times.
.
.
.
Because RS-485 mode requires control over the RTS line, the RTS property is set to False and CTS/RTS hardware flow control is disabled whenever RS485Mode is set to True.

Guiándome de esto, así configuré el ApdComPort, como se ve en la captura de abajo:

(http://hostfile.org/rs485set.png)


Este es el código en delphi del Excom0, solo modifiqué el mensaje que envia.

Código: [Seleccionar]
unit Excom0;

interface

uses
  WinTypes, WinProcs, SysUtils, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls, AdPort, OoMisc;

type
  TForm1 = class(TForm)
    Test: TButton;
    ApdComPort1: TApdComPort;
    procedure TestClick(Sender: TObject);
    procedure ApdComPort1TriggerAvail(CP: TObject; Count: Word);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.TestClick(Sender: TObject);
  {TestClick button click - Send output}
begin
  ApdComPort1.OutPut := '&&&&&&&';
end;

procedure TForm1.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
  {Event OnTriggerAvail - Example how OnTriggerAvail works}
var
  I : Word;
  C : Char;
  S : String;
begin
  S := '';
  for I := 1 to Count do begin
    C := ApdComPort1.GetChar;
    case C of
      #0..#31 : {Don't display} ;
      else S := S + C;
    end;
  end;
  ShowMessage('Got an OnTriggerAvail event for: ' + S);
end;

end.


Esta es la simulación en proteus:

(http://hostfile.org/simulacionrs485.png)



Lo que veo, es que al mandar el mensaje, no me activa la el pin RTS por lo que no se transmite. El pic al recibir datos, va desplegando los caracteres recibidos en el LCD. Este circuito ya está probado con un programa en visual basic. Me falta revisar a fondo, pero ya voy comenzando con las pruebas :) . ... Maestro Redpic, espero me heche una :idea:.  :mrgreen:

Saludos y a seguirle dando.


Ganbatte kudasai.
Título: Re: Comenzando con Delphi (RS485 con APRO - Avances)
Publicado por: huichoman en 10 de Febrero de 2008, 02:22:45
Citar
Lo que veo, es que al mandar el mensaje, no me activa la el pin RTS por lo que no se transmite.

Me autorespondo de nuevo  :mrgreen:.

Como trabajo en la lap, estoy utlizando puertos virtuales generados por Virtual Serial Port Driver V 6.0. Lei la ayuda y al activar el PIN RTS de un lado, lo que hace es poner en alto el pin CTS del otro lado, osease que activa al CTS del COMPIM de proteus. Ahora, tenía conectado el PIN CTS al R2IN del MAX233 para utilizar la salida del R2OUT para activar la transmisión del MAX485, pero apesar de que estaba en alto CTS, no me activaba el R2IN del MAX233, ¿Porqué? No sé. Pero donectando directamente a masa me activa en alto, y si lo conecto a voltaje me tira en bajo, supongo que está negada, pero el problema es que hay un conflicto y me cierra la aplicación en delphi.

Seguiré investigando.

(http://hostfile.org/simulacionrs4852.png)


Bueno le sigo macheteando.  :mrgreen:

Ganbatte kudasai.

Título: RS485 con Delphi APRO y PIC4525. Avances. (Esquemático y VIDEO).
Publicado por: huichoman en 11 de Febrero de 2008, 19:41:54
Hola, Yo de nuevo  :mrgreen:.

Paso a pasito avanzando.  El esquema en proteus funcionando, tuve que negar las señales, para que funcionará, supongo que físicamente esto no será necesario.

Le dejo el video de las primeras pruebas de la comunicación funcionando mas o menos bien.




El esquemático funcinal para simular con Delphi y los puertos virtuales creados con Virtual Serial Port Driver.

(http://hostfile.org/schok1.png)

Regreso despues para postear el código en Delphi y del Pic (Gracias  al Maestro redpic, me guíe del código de iRELE485-628.C).

Saludos... me agarró la tarde... me voy a volando que hoy comienzan mis clases de japonés... :-/

Ganbatte kudasai.
Título: Re: RS485 con Delphi APRO y PIC4525. Avances. (Esquemático y VIDEO).
Publicado por: RedPic en 11 de Febrero de 2008, 19:45:59

Saludos... me agarró la tarde... me voy a volando que hoy comienzan mis clases de japonés... :-/

Ganbatte kudasai.


A mi también me gusta hacerlo lo mejor posible. 頑張ります  :mrgreen: :mrgreen: :mrgreen:

Domo arigato gozaimasu.
Título: Re: RS485 con Delphi APRO y PIC4525. Avances. (Esquemático y VIDEO).
Publicado por: huichoman en 12 de Febrero de 2008, 06:12:17
                              :-/ :-/ :-/ :-/ :-/

Ajuuua.  Que les comento, despues de las clases de japonés (4-5 pm), regresé a mi casa leí los manuales de las apro + investigación en san google... de 7 - 8:30 fui a mis clases de inglés, regresando me tomé un cafecito bien cargado, me puse a pulir la comunicación que se veía en el video de arriba. Y listo.... por el momento está jalando al 100%. Por el lado de delphi utilicé el componente TApdDataPacket con lo que recibe la cadena de caracteres OK, y por el lado del pic modifiqué la función donde guarda los datos (Con el permiso del maestro Redpic) y le añadí un caracter de inicio para complementar el caracter de fin de trama ya estipulado, para que funcione de la misma manera que su homologa TApdDataPacked del lado de Delphi. Y listo la última prueba, como el agua. Son exactamente las 2:12 AM, me voy a descansar. Que mañana voy a clases y al médico. En el primer chance subo las capturas y el video.

Saludos.

Gabatte kudasai.
Título: RS485 DELPHI-PIC utilizando las APRO. Capturas comunicación al 100%.
Publicado por: huichoman en 13 de Febrero de 2008, 02:44:03
Hola de nuevo  :-/ .

Lo prometido es deuda.  Les adelanto las capturas de la comunicación al 100% (en esta etapa por el momento). El video esta en proceso de subida.

Recibiendo una cadena corta:
(http://hostfile.org/simulacionOK1.png)

Recibiendo una cadena laaaarga.

(http://hostfile.org/simulacionOK2.png)

En breve el video para apreciar mejor la comunicación.

Saludos y a darle con lo que sigue.

Agradezco enormemente a Redpic, por sus ejemplos posteados en el foro, que de el me he guiado en muchas ocasiones. Tienes una excelente página (http://www.garcia-cuervo.com/picmania.garcia-cuervo.net/index.php). Ya estuve checando la utilización del USB, en especial  El USB Desencadenado: CDC (http://www.garcia-cuervo.com/picmania.garcia-cuervo.net/USB_3_CDCTransfers.php). Me pregunto si es conveniente y factible utilizar un 4550 como puente, algo así:  PC-PICX5XX-MAX485-MAX485-PIC ??? 

Ganbatte kudasai.







Título: Re: Comenzando con Delphi
Publicado por: RedPic en 13 de Febrero de 2008, 03:15:37
huichoman: el puente del que hablas es perfectamente factible. Y no es nignguna locura sino algo muy normal e interesante.  :mrgreen:
Título: Re: Comenzando con Delphi
Publicado por: AKENAFAB en 13 de Febrero de 2008, 03:30:21
Felicitaciones HUICHOMAN   :-/ :-/

 :-/ :-/ :-/ :-/ :-/


Gracias por compartir.

Andaré por aquí mas seguido pues quiero aprender delphi  :mrgreen:
Solo que tenga ratotes libres  :D pues también voy a la escuelita xD y más chucherias xD

También quiero decirte que haces un buen trabajo y se contagia el entusiasmo que le pones al asunto.

Y ando atento a los programas de Redpic , que los hace muy padres , requetebuenos  :-)


Saludos!

Atentamente
  Akenafab
Título: Re: Comenzando con Delphi
Publicado por: huichoman en 13 de Febrero de 2008, 04:14:50
huichoman: el puente del que hablas es perfectamente factible. Y no es nignguna locura sino algo muy normal e interesante.  :mrgreen:

Excelente   :-/ .   Entonces a hacer las pruebas...  :mrgreen:


Citar
Felicitaciones HUICHOMAN 

Gracias AKENAFAB  En lo que pueda ayudarte cuenta conmigo. Sobre DELPHI aun comienzo,  mi primer programa el hola mundo, el segundo el calculador de resistencias y el tercer pues este el de comunicación 485.  :mrgreen:. El secreto es leer, leer, leer, leer, leer,  leer, leer, probar, leer, probar, leer, leer, leer, leer, probar, leer, preguntar,  leer, probar, leer...  :mrgreen:  :D

Saludos.


Ganbatte kudasai
Título: RS485 DELPHI-PIC !!VIDEO comunicación al 100%.¡¡
Publicado por: huichoman en 13 de Febrero de 2008, 05:31:48
Ya regresé con lo prometido   :-/

El video de la comunicación al 100% (por el momento  :mrgreen:)



Ganbatte kudasai.
Título: Re: Comenzando con Delphi
Publicado por: PalitroqueZ en 13 de Febrero de 2008, 13:51:30
Felicidades huichoman, grandes avances que estas haciendo  :mrgreen:

 :-/ :-/ :-/
Título: Re: Comenzando con Delphi
Publicado por: huichoman en 13 de Febrero de 2008, 14:28:38
Felicidades huichoman, grandes avances que estas haciendo  :mrgreen:

 :-/ :-/ :-/

Gracias amigo, ahora a seguirle con las pruebas del puente USB  :mrgreen:.

Ahora mismo estoy leyendo los ejemplos los del foro, especialmente los del maestro RedPic,  estoy analizando los programas, para ver como hacerle el puente, ya tengo algunas ideas y algunas dudas.  :mrgreen:. Iré  posteando los avances y tropiezos.

Saludos.

Ganbatte kudasai.
Título: Re: Comenzando con Delphi
Publicado por: RedPic en 13 de Febrero de 2008, 16:09:15
Vas como un tren-bala.  :D :D :D

P.D. Nunca he usado el TApdDataPacket pero sospecho que me va a quitar cierta problemática que tengo al recibir los strings a "trozos" en el TApdComport en el OnPortTriggerAvail y tener que componerlo antes de darlo por bueno. Tendré que investigarlo.  :mrgreen:
Título: Re:Comenzando con Delphi <TApdDataPacket Vs OnPortTriggerAvail>
Publicado por: huichoman en 13 de Febrero de 2008, 19:56:38
Vas como un tren-bala.  :D :D :D

P.D. Nunca he usado el TApdDataPacket pero sospecho que me va a quitar cierta problemática que tengo al recibir los strings a "trozos" en el TApdComport en el OnPortTriggerAvail y tener que componerlo antes de darlo por bueno. Tendré que investigarlo.  :mrgreen:

Hola Redpic, gracias por el comentario. El TApdDataPacket es una maravilla, si te fijas en el primer video, tengo problemas porque recibe por trozos, en ocasiones debo clickar doble vez, en esa parte utilizaba el OnportTrigger Avail, investigué y dí con la TApdDataPacket, solo pones el caracter de inicio y el de final en mi caso puse el caracter #2 STX para inicio y el #3 ETX para fin de trama, el packete te guarda lo que este entre ellos con la opción de incluir dichos caracteres de inicio y fin en la cadena o no incluirlos, también puedes poner el número de caracteres.  En el segundo video quité el Ontriggeravail y utilicé la Datapacket, y va como la seda.

Una captura para congifurar el TApdDataPacket: (Utilizo el evento OnStringPacket)

(http://hostfile.org/tapddatapacket.png)

Y el código fuente del progama:

Código: [Seleccionar]
unit rs485_1;
interface
uses
  WinTypes, WinProcs, SysUtils, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls, AdPort, OoMisc, WinSkinData, WinSkinStore,
  ExtCtrls, Grids, AdPacket;

type
  TForm1 = class(TForm)
    ApdComPort1: TApdComPort;
    SkinData1: TSkinData;
    SkinStore1: TSkinStore;
    enviar: TButton;
    comandos: TRadioGroup;
    ApdDataPacket1: TApdDataPacket;
    Memo1: TMemo;

    procedure FormCreate(Sender: TObject);
    procedure enviarClick(Sender: TObject);
    procedure ApdDataPacket1StringPacket(Sender: TObject; Data: String);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  STX,ETX:Char;
implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Skindata1.LoadFromCollection(skinstore1,0);
  STX:=#2;
  ETX:=#3;
end;

procedure TForm1.enviarClick(Sender: TObject);
  var comando:char;

  begin
  Case comandos.ItemIndex of
   0:comando:='/';
   1:comando:='%';
   2:comando:='#';
   3:comando:='=';
   4:comando:='$';
   end;

ApdComPort1.OutPut :=STX+'1234'+comando+ETX;
end;

procedure TForm1.ApdDataPacket1StringPacket(Sender: TObject; Data: String);
begin
  Caption:=data;
  memo1.Lines.Add(data);
end;

end.


Una pequeña retribución de lo que he aprendido del maestro.

Saludos.

Ganbatte kudasai.

Título: Re: Comenzando con Delphi
Publicado por: RedPic en 14 de Febrero de 2008, 03:12:04
Adopto al TApdDataPacket como César hizo con Bruto, como hijo propio. Muchas gracias Huicho-man.  :mrgreen:
Título: Re: Comenzando con Delphi
Publicado por: huichoman en 14 de Febrero de 2008, 03:21:34
Adopto al TApdDataPacket como César hizo con Bruto, como hijo propio. Muchas gracias Huicho-man.  :mrgreen:

Al contrario, muchas gracias a tí.

Ganbatte kudasai.