Показать сообщение отдельно
  #6  
Старый 23.03.2011, 16:47
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

Код:
implementation

uses ComObj;

class function CoS7ProSim.Create: IS7ProSim;
begin
  Result := CreateComObject(CLASS_S7ProSim) as IS7ProSim;
end;

class function CoS7ProSim.CreateRemote(const MachineName: string): IS7ProSim;
begin
  Result := CreateRemoteComObject(MachineName, CLASS_S7ProSim) as IS7ProSim;
end;

procedure TS7ProSim.InitServerData;
const
  CServerData: TServerData = (
    ClassID:   '{83CC0D83-FEDA-11D1-BE76-0060B06816CF}';
    IntfIID:   '{83CC0D81-FEDA-11D1-BE76-0060B06816CF}';
    EventIID:  '{83CC0D82-FEDA-11D1-BE76-0060B06816CF}';
    LicenseKey: nil;
    Version: 500);
begin
  ServerData := @CServerData;
end;

procedure TS7ProSim.Connect;
var
  punk: IUnknown;
begin
  if FIntf = nil then
  begin
    punk := GetServer;
    ConnectEvents(punk);
    Fintf:= punk as IS7ProSim;
  end;
end;

procedure TS7ProSim.ConnectTo(svrIntf: IS7ProSim);
begin
  Disconnect;
  FIntf := svrIntf;
  ConnectEvents(FIntf);
end;

procedure TS7ProSim.DisConnect;
begin
  if Fintf <> nil then
  begin
    DisconnectEvents(FIntf);
    FIntf := nil;
  end;
end;

function TS7ProSim.GetDefaultInterface: IS7ProSim;
begin
  if FIntf = nil then
    Connect;
  Assert(FIntf <> nil, 'DefaultInterface is NULL. Component is not connected to Server. You must call ''Connect'' or ''ConnectTo'' before this operation');
  Result := FIntf;
end;

constructor TS7ProSim.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
  FProps := TS7ProSimProperties.Create(Self);
{$ENDIF}
end;

destructor TS7ProSim.Destroy;
begin
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
  FProps.Free;
{$ENDIF}
  inherited Destroy;
end;

{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
function TS7ProSim.GetServerProperties: TS7ProSimProperties;
begin
  Result := FProps;
end;
{$ENDIF}

procedure TS7ProSim.InvokeEvent(DispID: TDispID; var Params: TVariantArray);
begin
  case DispID of
    -1: Exit;  // DISPID_UNKNOWN
    1: if Assigned(FOnScanFinished) then
         FOnScanFinished(Self, Params[0] {OleVariant});
    2: if Assigned(FOnConnectionError) then
         FOnConnectionError(Self,
                            Params[0] {const WideString},
                            Params[1] {Integer});
    3: if Assigned(FOnPLCSimStateChanged) then
         FOnPLCSimStateChanged(Self, Params[0] {const WideString});
    4: if Assigned(FOnPauseStateChanged) then
         FOnPauseStateChanged(Self, Params[0] {const WideString});
    5: if Assigned(FOnScanModeChanged) then
         FOnScanModeChanged(Self, Params[0] {const WideString});
  end; {case DispID}
end;

procedure TS7ProSim.ReadOutputImage(StartIndex: Integer; ElementsToRead: Integer; 
                                    DataType: ImageDataTypeConstants; var pData: OleVariant);
begin
  DefaultInterface.ReadOutputImage(StartIndex, ElementsToRead, DataType, pData);
end;

procedure TS7ProSim.WriteInputImage(StartIndex: Integer; var pData: OleVariant);
begin
  DefaultInterface.WriteInputImage(StartIndex, pData);
end;

procedure TS7ProSim.ReadOutputPoint(ByteIndex: Integer; BitIndex: Integer; 
                                    DataType: PointDataTypeConstants; var pData: OleVariant);
begin
  DefaultInterface.ReadOutputPoint(ByteIndex, BitIndex, DataType, pData);
end;

procedure TS7ProSim.WriteInputPoint(ByteIndex: Integer; BitIndex: Integer; var pData: OleVariant);
begin
  DefaultInterface.WriteInputPoint(ByteIndex, BitIndex, pData);
end;

procedure TS7ProSim.ExecuteSingleScan;
begin
  DefaultInterface.ExecuteSingleScan;
end;

procedure TS7ProSim.Connect1;
begin
  DefaultInterface.Connect;
end;

procedure TS7ProSim.Disconnect1;
begin
  DefaultInterface.Disconnect;
end;

procedure TS7ProSim.BeginScanNotify;
begin
  DefaultInterface.BeginScanNotify;
end;

procedure TS7ProSim.EndScanNotify;
begin
  DefaultInterface.EndScanNotify;
end;

procedure TS7ProSim.ExecuteNmsScan(MsNumber: Integer);
begin
  DefaultInterface.ExecuteNmsScan(MsNumber);
end;

procedure TS7ProSim.ExecuteNScans(NScanNumber: Integer);
begin
  DefaultInterface.ExecuteNScans(NScanNumber);
end;

function TS7ProSim.GetScanMode: ScanModeConstants;
begin
  Result := DefaultInterface.GetScanMode;
end;

procedure TS7ProSim.SetScanMode(newVal: ScanModeConstants);
begin
  DefaultInterface.SetScanMode(newVal);
end;

procedure TS7ProSim.Pause;
begin
  DefaultInterface.Pause;
end;

procedure TS7ProSim.Continue;
begin
  DefaultInterface.Continue;
end;

function TS7ProSim.GetPauseState: PauseStateConstants;
begin
  Result := DefaultInterface.GetPauseState;
end;

procedure TS7ProSim.SavePLC(const FileName: WideString);
begin
  DefaultInterface.SavePLC(FileName);
end;

procedure TS7ProSim.HotStartWithSavedValues(val: Integer);
begin
  DefaultInterface.HotStartWithSavedValues(val);
end;

function TS7ProSim.GetState: WideString;
begin
  Result := DefaultInterface.GetState;
end;

procedure TS7ProSim.SetState(const newVal: WideString);
begin
  DefaultInterface.SetState(newVal);
end;

procedure TS7ProSim.StartPLCSim(const plcFile: WideString);
begin
  DefaultInterface.StartPLCSim(plcFile);
end;

procedure TS7ProSim.SetStartUpSwitch(postion: RestartSwitchPositionConstants);
begin
  DefaultInterface.SetStartUpSwitch(postion);
end;

function TS7ProSim.GetStartUpSwitch: RestartSwitchPositionConstants;
begin
  Result := DefaultInterface.GetStartUpSwitch;
end;

procedure TS7ProSim.ReadDataBlockValue(BlockNum: Integer; ByteIndex: Integer; BitIndex: Integer; 
                                       DataType: PointDataTypeConstants; var pData: OleVariant);
begin
  DefaultInterface.ReadDataBlockValue(BlockNum, ByteIndex, BitIndex, DataType, pData);
end;

procedure TS7ProSim.WriteDataBlockValue(BlockNum: Integer; ByteIndex: Integer; BitIndex: Integer; 
                                        var pData: OleVariant);
begin
  DefaultInterface.WriteDataBlockValue(BlockNum, ByteIndex, BitIndex, pData);
end;

procedure TS7ProSim.ReadFlagValue(ByteIndex: Integer; BitIndex: Integer; 
                                  DataType: PointDataTypeConstants; var pData: OleVariant);
begin
  DefaultInterface.ReadFlagValue(ByteIndex, BitIndex, DataType, pData);
end;

procedure TS7ProSim.WriteFlagValue(ByteIndex: Integer; BitIndex: Integer; var pData: OleVariant);
begin
  DefaultInterface.WriteFlagValue(ByteIndex, BitIndex, pData);
end;

procedure TS7ProSim.ConnectExt(InstanceNumber: Integer);
begin
  DefaultInterface.ConnectExt(InstanceNumber);
end;

procedure TS7ProSim.StartPLCSimExt(const plcFile: WideString);
begin
  DefaultInterface.StartPLCSimExt(plcFile);
end;

{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
constructor TS7ProSimProperties.Create(AServer: TS7ProSim);
begin
  inherited Create;
  FServer := AServer;
end;

function TS7ProSimProperties.GetDefaultInterface: IS7ProSim;
begin
  Result := FServer.DefaultInterface;
end;

{$ENDIF}

procedure Register;
begin
  RegisterComponents(dtlServerPage, [TS7ProSim]);
end;

end.
Ответить с цитированием