
Este tutorial se acoge a la licencia de Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.
SC PASCAL: TRABAJANDO CON FICHEROS *.INI
El uso de archivos INI es muy útil cuando trabajamos con scripts copiados de otros usuarios y tenemos que cambiar algunos valores, por ejemplo:
- los nombres de las tarjetas SimIO
- los valores de los ejes analógicos (potenciómetros): dos potenciómetros diferentes seguro que dan diferentes valores en la misma posición
- los valores de los servomotores: dos servomotores diferentes no se posicionan en el mismo lugar con la misma orden
- ...
Como ejemplo vamos a ver cómo definir un nombre general para una tarjeta USB en el script SC Pascal, y un nombre específico en el fichero INI. El fichero Displays_INI.ini se coloca en la carpeta "projects" de SC Pascal y sería:
[General]
; define las tarjetas USB de acuerdo a las tarjetas
; instaladas en tu sisterma.
Main_Board_1=SIMIO000085
Servo_Board_1=SIMIO000025
; defina tus tarjetas de expansion de acuerdo
; a la lista de direcciones de las tarjetas. Por ejemplo,
; Tarjeta de displays ID 3 con dirección 100010
; debería ser : Displays_Board_3=SIMIO*****-EXT17
64In_Board_1=SIMIO000085-EXT0
64Out_Board_1=SIMIO000085-EXT5
32In32Out_Board_1=SIMIO000085-EXT10
Displays_Board_1=SIMIO000085-EXT15
Displays_Board_2=SIMIO000085-EXT16
El uso del archivo INI en el script SC Pascal es el siguiente:
PROGRAM Displays_using_INI_files;
const
OFFSET_HDG=105;
var
file_ini:string;
Main_Board_1:string;
Displays_Board_2:string; //Tarjeta de displays con dirección 000010
procedure OnEncoderChange(id_encoder,value:integer);
begin
end;
//IOCP EVENTs
procedure OnIOCPConnect(socket:byte);
begin
RegIOCPOffset(1,OFFSET_HDG);
end;
procedure OnIOCPConnectClosed(socket:byte);
begin
end;
procedure OnIOCPConnectFail(socket:byte);
begin
end;
procedure OnIOCPChangeSyncro(socket,offset:byte;value:integer);
begin
end;
procedure OnIOCPChange(socket,offset:byte;value:integer);
begin
//WriteDisplaysSwap('SIMIO000085-EXT16',4,inttostr(value),'0',3,0); Esto sería sin ller el valor del fichero INI
WriteDisplaysSwap(Displays_Board_2,4,inttostr(value),'0',3,0); //Se usa el valor leido del fichero INI
end;
//MAIN
Begin
file_ini:='Displays_INI.ini'; //Se define el fichero INI
Displays_Board_2:=ReadINIFile(file_ini,'General','Displays_Board_2'); //Se lee el valor que interesa
SetDisplayIntensity('Displays_Board_2',1,2); //Se usa dicho valor
End.
Ultima edición: 06.02.2018