23.03.2011, 16:47
|
Специалист
|
|
Регистрация: 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.
|