{ RoboLinex 1.5 Programa de control de dispositivos RCX de Lego en entorno grfico. Copyright (C) 2003 Prodel S.A Programador: Daniel Pascual Dominguez Este programa es software libre. Puede redistribuirlo y/o modificarlo bajo los términos de la Licencia Pública General de GNU según es publicada por la Free Software Foundation, bien de la versión 2 de dicha Licencia o bien (según su elección) de cualquier versión posterior. Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA, incluso sin la garantía MERCANTIL implícita o sin garantizar la CONVENIENCIA PARA UN PROPÓSITO PARTICULAR. Véase la Licencia Pública General de GNU para más detalles. Debería haber recibido una copia de la Licencia Pública General junto con este programa. Si no ha sido así, escriba a la Free Software Foundation, Inc., en 675 Mass Ave, Cambridge, MA 02139, EEUU. } unit piloto4; interface uses {$IFDEF LINUX} Libc, {$ENDIF} SysUtils, Types, Classes, Variants, QTypes, QGraphics, QControls, QForms, QDialogs, QStdCtrls, QExtCtrls, Unit2,ppruebas, QButtons, unit6 ,uentradas,fpuertos;//, ppruebas; //type tejecucion=(normal,continua); //tapilot=record // siguiente // salida1:Tfsalidas; // salida2:Tfsalidas; // salida3:Tfsalidas; // sensor1:Tfentradasp4; // activo:boolean; //end; type Tpilot4 = class(TForm) Image5: TImage; Image7: TImage; Image4: TImage; Image1: TImage; Image6: TImage; Image2: TImage; Image3: TImage; BitBtn1: TBitBtn; BitBtn2: TBitBtn; BitBtn3: TBitBtn; BitBtn4: TBitBtn; Label2: TLabel; Image8: TImage; Image9: TImage; Image10: TImage; Image11: TImage; Image12: TImage; discoverde: TImage; discorojo: TImage; Image13: TImage; Image14: TImage; Label4: TLabel; Label1: TLabel; Label3: TLabel; Image15: TImage; enviando: TLabel; procedure Image3Click(Sender: TObject); procedure Image4Click(Sender: TObject); procedure Image1Click(Sender: TObject); procedure Image9Click(Sender: TObject); procedure Image10Click(Sender: TObject); procedure Image11Click(Sender: TObject); procedure Image12Click(Sender: TObject); procedure Image7Click(Sender: TObject); procedure Image6Click(Sender: TObject); procedure Image15Click(Sender: TObject); procedure Image2Click(Sender: TObject); private { Private declarations } milista1:Tlist; comodin, nodo,nimpre:TipoPunterolista; public { Public declarations } lista:TLista; tipoejecucion:tejecucion; indice,maximo:integer; procedure mandardatos; procedure inicializar; procedure refresca_contador; procedure refrescadiscos; end; var pilot4: Tpilot4; conta:string; max:string; implementation uses Unit1; //uses Unit6; {$R *.xfm} procedure Tpilot4.inicializar; var i:integer; begin GetMem(lista.inicio,SizeOf(TipoPunterolista)+SizeOf(TipoNodo)); show; tipoejecucion:=normal; image4.picture:=NIL; maximo:=1; Application.CreateForm(Tfentradasp4, lista.inicio^.sensor1); Application.CreateForm(Tfsalidas, lista.inicio^.salida3); Application.CreateForm(Tfsalidas, lista.inicio^.salida2); Application.CreateForm(Tfsalidas, lista.inicio^.salida1); maximo:=1; lista.inicio^.contador:=1; str(lista.inicio^.contador,conta); str(maximo,max); label2.Caption:='PASO '+ conta+' DE '+max; lista.inicio^.sensor1.inicializar(0,pilot4.Left+450,pilot4.top+240,'1',1,0,'1',40,1,0,1); lista.inicio^.salida3.inicializar(0,pilot4.Left+250,pilot4.top+240,2,2,1,'C',3); lista.inicio^.salida2.inicializar(0,pilot4.Left+185,pilot4.top+240,3,2,1,'B',3); lista.inicio^.salida1.inicializar(0,pilot4.Left+120,pilot4.top+240,1,2,1,'A',5); lista.inicio^.sensor1.Show; lista.inicio^.sensor1.selecentrada.show; if lista.inicio^.salida3.tipo<>4 then lista.inicio^.salida3.fpotencia.Show; lista.inicio^.salida3.Show; if lista.inicio^.salida2.tipo<>4 then lista.inicio^.salida2.fpotencia.Show; lista.inicio^.salida2.Show; if lista.inicio^.salida1.tipo<>4 then lista.inicio^.salida1.fpotencia.Show; lista.inicio^.salida1.Show; lista.inicio^.ant:=NIL; lista.inicio^.sig:=NIL; lista.actual:=lista.inicio; refresca_contador; refrescadiscos; // hide; // fprogramador.hide; end; procedure Tpilot4.Image3Click(Sender: TObject); begin hide; lista.actual:=lista.inicio; while lista.actual<>NIL do begin //{ lista.actual^.sensor1.selecentrada.Hide; lista.actual^.sensor1.hide; lista.actual^.salida1.hide; lista.actual^.salida2.hide; lista.actual^.salida3.hide; lista.actual^.salida3.fpotencia.hide; lista.actual^.salida2.fpotencia.hide; lista.actual^.salida1.fpotencia.hide; // freemem(lista.actual^.sensor1); // freemem(lista.actual^.salida1); // freemem(lista.actual^.salida2); // freemem(lista.actual^.salida3); //Application.CreateForm(Tfentradasp4, lista.inicio^.sensor1); freemem(lista.actual); //} lista.actual:=lista.actual^.sig; end; end; procedure Tpilot4.Image12Click(Sender: TObject); begin if lista.actual^.sig<>NIL then begin lista.actual^.sensor1.hide; lista.actual^.sensor1.selecentrada.hide; lista.actual^.sensor1.selecentrada.hide; lista.actual^.salida3.hide; lista.actual^.salida3.fpotencia.hide; lista.actual^.salida2.hide; lista.actual^.salida2.fpotencia.hide; lista.actual^.salida1.hide; lista.actual^.salida1.fpotencia.hide; lista.actual:=lista.actual^.sig; //lista.actual^.contador:=lista.actual^.contador-1; // str(lista.actual^.contador,conta); // str(maximo,max); // label2.Caption:='PASO '+ conta+' DE '+max; lista.actual^.sensor1.Show; lista.actual^.sensor1.selecentrada.show; lista.actual^.salida3.Show; if lista.actual^.salida3.tipo<>4 then lista.actual^.salida3.fpotencia.Show; lista.actual^.salida2.Show; if lista.actual^.salida2.tipo<>4 then lista.actual^.salida2.fpotencia.Show; lista.actual^.salida1.Show; if lista.actual^.salida1.tipo<>4 then lista.actual^.salida1.fpotencia.Show; refresca_contador; refrescadiscos; end; end; procedure Tpilot4.Image11Click(Sender: TObject); begin if lista.actual^.ant<>NIL then begin lista.actual^.sensor1.hide; lista.actual^.sensor1.selecentrada.hide; lista.actual^.salida3.hide; lista.actual^.salida3.fpotencia.hide; lista.actual^.salida2.hide; lista.actual^.salida2.fpotencia.hide; lista.actual^.salida1.hide; lista.actual^.salida1.fpotencia.hide; lista.actual:=lista.actual^.ant; // lista.actual^.contador:=lista.actual^.contador+1; // str(lista.actual^.contador,conta); // str(maximo,max); // label2.Caption:='PASO '+ conta+' DE '+max; lista.actual^.sensor1.Show; lista.actual^.sensor1.selecentrada.show; lista.actual^.salida3.Show; if lista.actual^.salida3.tipo<>4 then lista.actual^.salida3.fpotencia.Show; lista.actual^.salida2.Show; if lista.actual^.salida2.tipo<>4 then lista.actual^.salida2.fpotencia.Show; lista.actual^.salida1.Show; if lista.actual^.salida1.tipo<>4 then lista.actual^.salida1.fpotencia.Show; refresca_contador; refrescadiscos; end; end; procedure Tpilot4.refrescadiscos; begin if (lista.actual^.ant=NIL) and (lista.actual^.sig=NIL) then begin discorojo.Visible:=true; discoverde.Visible:=true; image12.picture:=image13.picture; image11.picture:=image14.picture; end; if (lista.actual^.ant<>NIL) and (lista.actual^.sig=NIL)then begin discorojo.Visible:=true; discoverde.Visible:=false; image12.picture:=image13.picture; image11.picture:=NIL; end; if (lista.actual^.ant=NIL) and (lista.actual^.sig<>NIL)then begin discorojo.Visible:=false; discoverde.Visible:=true; image12.picture:=NIL; image11.picture:=image14.picture; end; if (lista.actual^.ant<>NIL) and (lista.actual^.sig<>NIL)then begin discorojo.Visible:=false; discoverde.Visible:=false; image12.picture:=NIL; image11.picture:=NIL; end; end; procedure Tpilot4.refresca_contador; var c:integer; begin nimpre:=lista.inicio; c:=1; while nimpre<>lista.actual do begin nimpre:=nimpre^.sig; c:=c+1; end; str(c,conta); str(maximo,max); label2.Caption:='PASO '+ conta+' DE '+max; end; procedure Tpilot4.Image4Click(Sender: TObject); begin if tipoejecucion=normal then begin image4.Picture:=image5.picture; tipoejecucion:=continua; end else begin image4.picture:=NIL; tipoejecucion:=normal; end; end; procedure Tpilot4.mandardatos(); var fichero: textfile; cadena:PChar; dire,cadena1,cad,ct:string; //fichero: tpersistent; cnt:integer; begin dire:= GetCurrentDir; assignfile(fichero,dire+'/programa.nqc'); //showmessage(dire); rewrite(fichero); writeln(fichero,''); writeln(fichero,'task main()'); writeln(fichero,'{'); nimpre:=lista.inicio; cnt:=0; while nimpre^.sig <> NIL do begin cnt:=cnt+1; str(cnt,ct); writeln(fichero,nimpre^.sensor1.dar_comando_ini); nimpre:=nimpre^.sig; end; writeln(fichero,nimpre^.sensor1.dar_comando_ini); if tipoejecucion=continua then begin writeln(fichero,'while (1==1)'); writeln(fichero,'{'); end; nimpre:=lista.inicio; cnt:=0; str(cnt,ct); while nimpre^.sig <> NIL do begin cnt:=cnt+1; str(cnt,ct); writeln(fichero,nimpre^.salida1.dar_comando); writeln(fichero,nimpre^.salida1.dar_potencia); writeln(fichero,nimpre^.salida2.dar_comando); writeln(fichero,nimpre^.salida2.dar_potencia); writeln(fichero,nimpre^.salida3.dar_comando); writeln(fichero,nimpre^.salida3.dar_potencia); writeln(fichero,nimpre^.sensor1.dar_comando); writeln(fichero,nimpre^.sensor1.dar_comando_fin); writeln(fichero,nimpre^.sensor1.dar_comando_clear); nimpre:=nimpre^.sig; end; writeln(fichero,nimpre^.salida1.dar_comando); writeln(fichero,nimpre^.salida1.dar_potencia); writeln(fichero,nimpre^.salida2.dar_comando); writeln(fichero,nimpre^.salida2.dar_potencia); writeln(fichero,nimpre^.salida3.dar_comando); writeln(fichero,nimpre^.salida3.dar_potencia); writeln(fichero,nimpre^.sensor1.dar_comando); writeln(fichero,nimpre^.sensor1.dar_comando_fin); writeln(fichero,nimpre^.sensor1.dar_comando_clear); writeln(fichero,'Off(OUT_A);'); writeln(fichero,'Off(OUT_B);'); writeln(fichero,'Off(OUT_C);'); if tipoejecucion=continua then writeln(fichero,'}'); writeln(fichero,'}'); closefile(fichero); cadena:=PChar('/usr/bin/nqc -S'+puertoactivo+' -d '+dire+'/programa.nqc'); Libc.system(cadena); // showmessage(cadena); end; { RoboLinux 1.0 Programa de control de dispositivos RCX de Lego en entorno grfico. Copyright (C) 2003 Prodel S.A Programador: Daniel Pascual Dominguez Este programa es software libre. Puede redistribuirlo y/o modificarlo bajo los términos de la Licencia Pública General de GNU según es publicada por la Free Software Foundation, bien de la versión 2 de dicha Licencia o bien (según su elección) de cualquier versión posterior. Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA, incluso sin la garantía MERCANTIL implícita o sin garantizar la CONVENIENCIA PARA UN PROPÓSITO PARTICULAR. Véase la Licencia Pública General de GNU para más detalles. Debería haber recibido una copia de la Licencia Pública General junto con este programa. Si no ha sido así, escriba a la Free Software Foundation, Inc., en 675 Mass Ave, Cambridge, MA 02139, EEUU. } procedure Tpilot4.Image1Click(Sender: TObject); var resp:boolean; begin resp:=fprincipal.probar_comunicacion; enviando.Visible:=true; Application.ProcessMessages; if resp=true then begin mandardatos; enviando.Visible:=false; Application.ProcessMessages; pilot4.lista.actual.salida1.Visible:=false; pilot4.lista.actual.salida1.fpotencia.Visible:=false; pilot4.lista.actual.salida2.Visible:=false; pilot4.lista.actual.salida2.fpotencia.Visible:=false; pilot4.lista.actual.salida3.Visible:=false; pilot4.lista.actual.salida3.fpotencia.Visible:=false; showmessage('Datos enviados'); pilot4.lista.actual.salida1.Visible:=true; pilot4.lista.actual.salida1.fpotencia.Visible:=true; pilot4.lista.actual.salida2.Visible:=true; pilot4.lista.actual.salida2.fpotencia.Visible:=true; pilot4.lista.actual.salida3.Visible:=true; pilot4.lista.actual.salida3.fpotencia.Visible:=true; end else begin pilot4.lista.actual.sensor1.selecentrada.Visible:=false; pilot4.lista.actual.sensor1.Visible:=false; pilot4.lista.actual.salida1.Visible:=false; pilot4.lista.actual.salida1.fpotencia.Visible:=false; pilot4.lista.actual.salida2.Visible:=false; pilot4.lista.actual.salida2.fpotencia.Visible:=false; pilot4.lista.actual.salida3.Visible:=false; pilot4.lista.actual.salida3.fpotencia.Visible:=false; showmessage('¡¡ERROR !! No se pudo establecer la comunicación con el'+ ' RCX, compruebe que la configuración del puerto sea correcta, que los cables'+ ' esten bien conectados y que el RCX este encendido.'+#13#10+ ' Si todo es correcto es posible que su RCX no tenga instalado el firmware'+ ' adecuado, si es así seleccione la opcion bajar firmware.'); enviando.Visible:=false; Application.ProcessMessages; pilot4.lista.actual.sensor1.selecentrada.Visible:=true; pilot4.lista.actual.sensor1.Visible:=true; pilot4.lista.actual.salida1.Visible:=true; pilot4.lista.actual.salida1.fpotencia.Visible:=true; pilot4.lista.actual.salida2.Visible:=true; pilot4.lista.actual.salida2.fpotencia.Visible:=true; pilot4.lista.actual.salida3.Visible:=true; pilot4.lista.actual.salida3.fpotencia.Visible:=true; end; end; procedure Tpilot4.Image9Click(Sender: TObject); begin lista.actual^.sensor1.hide; lista.actual^.sensor1.selecentrada.hide; lista.actual^.salida3.hide; lista.actual^.salida3.fpotencia.hide; lista.actual^.salida2.fpotencia.hide; lista.actual^.salida2.hide; lista.actual^.salida1.hide; lista.actual^.salida1.fpotencia.hide; GetMem(nodo,SizeOf(TipoPunterolista)+SizeOf(TipoNodo)); if (lista.actual^.ant<>NIL) and (lista.actual^.sig<>NIL) then begin nodo^.sig:=lista.actual^.sig; nodo^.ant:=lista.actual; lista.actual^.sig:=nodo; nodo^.sig^.ant:=nodo; maximo:=maximo+1; // nodo^.contador:=lista.actual^.contador+1; refresca_contador; refrescadiscos; end else if (lista.actual^.ant=NIL) and (lista.actual^.sig<>NIL)then begin nodo^.sig:=lista.actual^.sig; nodo^.ant:=lista.actual; lista.actual^.sig:=nodo; nodo^.sig^.ant:=nodo; maximo:=maximo+1; // nodo^.contador:=lista.actual^.contador+1; // refresca_contador; end else if (lista.actual^.ant<>NIL) and (lista.actual^.sig=NIL)then begin nodo^.sig:=NIL; nodo^.ant:=lista.actual; lista.actual^.sig:=nodo; maximo:=maximo+1; // nodo^.contador:=lista.actual^.contador+1; // refresca_contador; end; if (lista.actual^.ant=NIL) and (lista.actual^.sig=NIL)then begin nodo^.sig:=NIL; nodo^.ant:=lista.actual; lista.actual^.sig:=nodo; maximo:=maximo+1; // nodo^.contador:=lista.actual^.contador+1; // refresca_contador; end; // lista.actual^.sensor1.CreateNew(Application); //GetMem(lista.actual,SizeOf(TipoPunterolista)); Application.CreateForm(Tfentradasp4, nodo^.sensor1); Application.CreateForm(Tfsalidas, nodo^.salida3); Application.CreateForm(Tfsalidas, nodo^.salida2); Application.CreateForm(Tfsalidas, nodo^.salida1); // maximo:=maximo+1; // nodo^.contador:=maximo; // str(nodo^.contador,conta); // str(maximo,max); // label2.Caption:='PASO '+ conta+' DE '+max; nodo^.sensor1.inicializar(0,(screen.Width div 2)-(pilot4.width div 2)+450,(screen.height div 2)-(pilot4.height div 2)+240,'4',1,0,'1',40,1,0,1); nodo^.salida3.inicializar(0,(screen.Width div 2)-(pilot4.width div 2)+250,(screen.height div 2)-(pilot4.height div 2)+240,4,2,1,'C',3); nodo^.salida2.inicializar(0,(screen.Width div 2)-(pilot4.width div 2)+185,(screen.height div 2)-(pilot4.height div 2)+240,4,2,1,'B',3); nodo^.salida1.inicializar(0,(screen.Width div 2)-(pilot4.width div 2)+120,(screen.height div 2)-(pilot4.height div 2)+240,4,2,1,'A',5); nodo^.sensor1.Show; nodo^.sensor1.selecentrada.show; nodo^.salida3.Show; nodo^.salida3.fpotencia.Show; nodo^.salida2.fpotencia.Show; nodo^.salida2.Show; nodo^.salida1.Show; nodo^.salida1.fpotencia.Show; nodo^.salida3.fpotencia.visible:=false; nodo^.salida2.fpotencia.visible:=false; nodo^.salida1.fpotencia.visible:=false; lista.actual:=nodo; refresca_contador; refrescadiscos; end; procedure Tpilot4.Image10Click(Sender: TObject); begin if (lista.actual^.ant=NIL) and (lista.actual^.sig=NIL)then begin pilot4.lista.actual.salida1.Visible:=false; pilot4.lista.actual.salida1.fpotencia.Visible:=false; pilot4.lista.actual.salida2.Visible:=false; pilot4.lista.actual.salida2.fpotencia.Visible:=false; pilot4.lista.actual.salida3.Visible:=false; pilot4.lista.actual.salida3.fpotencia.Visible:=false; showmessage('No puede borrar, sólo queda un paso'); pilot4.lista.actual.salida1.Visible:=true; pilot4.lista.actual.salida1.fpotencia.Visible:=true; pilot4.lista.actual.salida2.Visible:=true; pilot4.lista.actual.salida2.fpotencia.Visible:=true; pilot4.lista.actual.salida3.Visible:=true; pilot4.lista.actual.salida3.fpotencia.Visible:=true end else if MessageDlg('Seguro que quiere borrar este paso?', mtconfirmation,[mbYes,mbNo],0,mbYes) = mrYes then begin lista.actual^.sensor1.hide; lista.actual^.sensor1.selecentrada.hide; lista.actual^.salida3.hide; lista.actual^.salida3.fpotencia.hide; lista.actual^.salida2.fpotencia.hide; lista.actual^.salida2.hide; lista.actual^.salida1.hide; lista.actual^.salida1.fpotencia.hide; if (lista.actual^.ant<>NIL) and (lista.actual^.sig<>NIL) then begin lista.actual^.ant^.sig:=lista.actual^.sig; lista.actual^.sig^.ant:=lista.actual^.ant; nodo:=lista.actual; lista.actual:=nodo^.sig; // Freemem(nodo); end else if (lista.actual^.ant=NIL) and (lista.actual^.sig<>NIL)then begin nodo:=lista.actual; lista.actual^.sig^.ant:=NIL; lista.actual:=lista.actual^.sig; // Freemem(nodo); end else if (lista.actual^.ant<>NIL) and (lista.actual^.sig=NIL)then begin nodo:=lista.actual; lista.actual^.ant^.sig:=NIL; lista.actual:=lista.actual^.ant; // Freemem(nodo); end; nodo^.sensor1.destroy; nodo^.salida3.destroy; nodo^.salida2.destroy; nodo^.salida1.destroy; // Freemem(nodo); lista.actual^.sensor1.Show; lista.actual^.sensor1.selecentrada.show; lista.actual^.salida3.Show; lista.actual^.salida3.fpotencia.Show; lista.actual^.salida2.fpotencia.Show; lista.actual^.salida2.Show; lista.actual^.salida1.Show; lista.actual^.salida1.fpotencia.Show; // str(lista.actual^.contador,conta); // str(maximo,max); // label2.Caption:='PASO '+ conta+' DE '+max; maximo:=maximo-1; refresca_contador; end; refrescadiscos; end; procedure Tpilot4.Image7Click(Sender: TObject); begin Application.CreateForm(Tpruebas, pruebas); pruebas.tipo:=1; pruebas.Parent:=pilot4; //pilot4.Hide; pilot4.lista.actual.sensor1.selecentrada.Visible:=false; pilot4.lista.actual.sensor1.Visible:=false; pilot4.lista.actual.salida1.Visible:=false; pilot4.lista.actual.salida1.fpotencia.Visible:=false; pilot4.lista.actual.salida2.Visible:=false; pilot4.lista.actual.salida2.fpotencia.Visible:=false; pilot4.lista.actual.salida3.Visible:=false; pilot4.lista.actual.salida3.fpotencia.Visible:=false; pruebas.Show; end; procedure Tpilot4.Image6Click(Sender: TObject); begin //{ Application.CreateForm(Tpruebas, pruebas); pruebas.tipo:=2; pruebas.Parent:=pilot4; //pilot4.Hide; pilot4.lista.actual.sensor1.selecentrada.Visible:=false; pilot4.lista.actual.sensor1.Visible:=false; pilot4.lista.actual.salida1.Visible:=false; pilot4.lista.actual.salida1.fpotencia.Visible:=false; pilot4.lista.actual.salida2.Visible:=false; pilot4.lista.actual.salida2.fpotencia.Visible:=false; pilot4.lista.actual.salida3.Visible:=false; pilot4.lista.actual.salida3.fpotencia.Visible:=false; pruebas.Show; end; procedure Tpilot4.Image15Click(Sender: TObject); begin pilot4.lista.actual.sensor1.selecentrada.Visible:=false; pilot4.lista.actual.sensor1.Visible:=false; pilot4.lista.actual.salida1.Visible:=false; pilot4.lista.actual.salida1.fpotencia.Visible:=false; pilot4.lista.actual.salida2.Visible:=false; pilot4.lista.actual.salida2.fpotencia.Visible:=false; pilot4.lista.actual.salida3.Visible:=false; pilot4.lista.actual.salida3.fpotencia.Visible:=false; showmessage('Impresora sin configurar en el sistema'); pilot4.lista.actual.sensor1.selecentrada.Visible:=true; pilot4.lista.actual.sensor1.Visible:=true; pilot4.lista.actual.salida1.Visible:=true; pilot4.lista.actual.salida1.fpotencia.Visible:=true; pilot4.lista.actual.salida2.Visible:=true; pilot4.lista.actual.salida2.fpotencia.Visible:=true; pilot4.lista.actual.salida3.Visible:=true; pilot4.lista.actual.salida3.fpotencia.Visible:=true; end; procedure Tpilot4.Image2Click(Sender: TObject); begin pilot4.lista.actual.sensor1.selecentrada.Visible:=false; pilot4.lista.actual.sensor1.Visible:=false; pilot4.lista.actual.salida1.Visible:=false; pilot4.lista.actual.salida1.fpotencia.Visible:=false; pilot4.lista.actual.salida2.Visible:=false; pilot4.lista.actual.salida2.fpotencia.Visible:=false; pilot4.lista.actual.salida3.Visible:=false; pilot4.lista.actual.salida3.fpotencia.Visible:=false; showmessage(''+ 'Haga un clic en la flecha de ACTIVAR para descargar el programa sobre el bloque RCX. Posteriormente, presione el botón de RUN del RCX para comenzar a ejecutar el programa.'+#13#10+ 'El programa se almacenará en uno delos campos de almacenamiento disponibles, indicado en el RCX. Podemos cambiar el campo de almacenamiento, presionando el botón PRGM del bloque RCX. Una vez descargado el programa,'+#13#10+ ' se muestra el número del campo de almacenamiento.'+#13#10+ 'Si hay algún problema durante la descarga del programa, aparece una ventana de error, indicando la posible causa del mismo.'+#13#10+ #13#10+ 'El boton con la flecha y la barra nos sirve para cambiar entre modalidad simple o continua.'+#13#10+ 'Modalidad simple:'+#13#10+ 'Una vez descargado el programa y después de activarlo, pulsando la tecla RUN del RCX, el programa sólo se ejecuta una vez.'+#13#10+ 'Modalidad continua:'+#13#10+ 'Una vez descargado el programa y después de activarlo, pulsando la tecla RUN del RCX, el programa se ejecuta cíclicamente.'+#13#10+ #13#10+ 'Insertar Pasos'+#13#10+ 'El nivel 4 de PILOT permite tener tantos pasos como se quiera. Se puede añadir pasos adicionales haciendo clic en el botón de INSERTAR. Los nuevos pasos se inician con todos los comandos de señales de Alto,'+#13#10+ 'Sobre la ventan del paso hay un contador que indica cuál es el paso actual que se está viendo.'+#13#10+ #13#10+ 'Borrando un Paso'+#13#10+ 'Podemos borrar cualquier paso de una secuencia. Para ello, haga clic en el botón de BORRAR para borrar el paso que se está visualizando, teniendo en cuenta que no puede volver atrás una vez eliminado.'+#13#10+ #13#10+ 'Para pasar de un paso al otro, utilice los botones ANTERIOR y SIGUIENTE.'); pilot4.lista.actual.sensor1.selecentrada.Visible:=true; pilot4.lista.actual.sensor1.Visible:=true; pilot4.lista.actual.salida1.Visible:=true; pilot4.lista.actual.salida1.fpotencia.Visible:=true; pilot4.lista.actual.salida2.Visible:=true; pilot4.lista.actual.salida2.fpotencia.Visible:=true; pilot4.lista.actual.salida3.Visible:=true; pilot4.lista.actual.salida3.fpotencia.Visible:=true; end; end.