{ 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 Unit1; interface uses {$IFDEF LINUX} Libc, {$ENDIF} Qt, QGraphics, Classes, QControls, QExtCtrls {Windows}, {Messages} SysUtils, Variants, QForms, QDialogs, QStdCtrls; type Tfprincipal = class(TForm) Image2: TImage; Image3: TImage; Image5: TImage; Image6: TImage; Label1: TLabel; procedure Image5Click(Sender: TObject); procedure Image2Click(Sender: TObject); procedure Image3Click(Sender: TObject); procedure Image6Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public function probar_comunicacion():boolean; { Public declarations } end; var fprincipal: Tfprincipal; implementation uses Unit5, Unit6,fpuertos; {$R *.xfm} procedure mandar_programa(progr:string); var i:integer; AppPath,parametros, cadena: string; myCharPtr, paramptr : PAnsiChar; begin AppPath := ExtractFilePath(Application.ExeName+'nqc.exe'); cadena:='"'+AppPath+'nqc.exe"'; parametros:='-Scom2 -d '+progr; i := 1; myCharPtr := Addr(cadena[i]); paramptr :=Addr(parametros[i]); //edit1.Text:=cadena; // ShellExecute(fprincipal.Handle, nil, myCharPtr, paramptr, nil, SW_HIDE); // SW_HIDE end; procedure Tfprincipal.Image5Click(Sender: TObject); begin Application.Terminate; end; procedure Tfprincipal.Image2Click(Sender: TObject); begin fprincipal.Hide; //fadministrador.Left:=fprincipal.Left; //fadministrador.top:=fprincipal.top; fadministrador.left:=(screen.Width div 2)-(fadministrador.width div 2); fadministrador.top:=(screen.height div 2)-(fadministrador.height div 2); fadministrador.show; end; procedure Tfprincipal.Image3Click(Sender: TObject); begin fprincipal.Hide; //fprogramador.Left:=fprincipal.Left; //fprogramador.top:=fprincipal.top; fprogramador.show; end; function Tfprincipal.probar_comunicacion():boolean; var Output: PIOFile; line: PChar; txt,dire: string; str: string; cad:PChar; StrLst: TStringList; rb: integer; fichero: textfile; cadena:PChar; cadena1:string; cadena2:PChar; const BufferSize: Integer = 1000; begin SetLength(txt,0); cad:=PChar('/usr/bin/nqc -S'+puertoactivo+' -raw 120001'); Output := popen(cad,'r'); StrLst := TStringList.Create; GetMem(Line,BufferSize); //StrLst.Add('Hallo'); rb := libc.fread(line,1,BufferSize,Output); //line:='hola esto es'; cadena1:=line[1]; cadena2:=PChar(cadena1); probar_comunicacion:=false; if StrComp('0',cadena2)=0 then probar_comunicacion:=true; // showmessage('*'+cadena2+'*'); libc.pclose(output); wait(nil); FreeMem(Line,BufferSize); end; procedure Tfprincipal.Image6Click(Sender: TObject); begin showmessage('Opciones de Administrador y Programador'+#13#10+ 'En esta ventana se dispone de dos opciones, utilizar el sistema como Administrador o como Programador.'+#13#10+ 'La opción de Administrador permite:'+#13#10+ 'Ajustar las configuraciones básicas del RCX.'+#13#10+ 'Definir los directorios de los archivos creados por el software.'+#13#10+ 'Realizar pruebas sobre el RCX.'+#13#10+ 'La opción de Programador permite comenzar a programar y elegir el nivel de dificultad.'); end; procedure Tfprincipal.FormCreate(Sender: TObject); var cadena:PChar; begin if FileExists('/dev/usb/lego0')= false then begin cadena:=PChar('mkdir /dev/usb'); Libc.system(cadena); cadena:=PChar('ln -s /dev/legousbtower0 /dev/usb/lego0'); Libc.system(cadena); end; end; end.