La creazione del codice di programma per l'Add-In avviene con C# e l'API di TIA Portal Openness. Accertarsi che siano disponibili tutti i riferimenti necessari e le direttive using. Generalmente per il proprio Add-In possono essere utilizzate tutte le funzioni dell'API di TIA Portal Openness. Per le due funzioni indicate di seguito è necessario tuttavia osservare alcune particolarità:
-
Avviare un altro processo tramite l'Add-In:
Oltre al codice di programma per il collegamento, l'avvio di un nuovo processo richiede il consenso nel file di configurazione.
-
Creazione di un collegamento ad un'altra istanza di TIA Portal:
Per poter creare Add-Ins è necessario un riferimento all'assembly "Siemens.Engineering.AddIn.dll". Per avviare un'altra istanza di TIA Portal è inoltre necessario un riferimento all'assembly "Siemens.Engineering.dll". Le due assembly contengono tuttavia alcuni tipi di nomi uguali completi. Per comunicare al compiler da quale assembly debba provenire il tipo da impiegare è possibile utilizzare un alias esterno dell'assembly. Questa operazione funziona come nello spazio dei nomi. Se mancano gli alias viene segnalato un errore di compilazione.
Avviare un altro processo tramite l'Add-In
Per avviare un ulteriore processo utilizzando un Add-In procedere nel seguente modo:
-
Aprire il file di configurazione.
-
Come contenuto della variabile "SecurityPermissions" inserire il seguente codice:
<Siemens.Engineering.AddIn.Permissions.ProcessStartPermission><Comment>Commento a piacere</Comment></Siemens.Engineering.AddIn.Permissions.ProcessStartPermission> -
Se non è ancora stato creato un riferimento al file "Siemens.Engineering.AddIn.Utilities.dll" aggiungere questo.
-
Creare il codice di programma desiderato per l'avvio del processo.
La seguente tabella riepiloga le proprietà della classe "Siemens.Engineering.AddIn.Utilities.Process":
|
Nome |
Tipo |
|---|---|
|
StartInfo |
ProcessStartInfo |
|
HasExited |
bool |
|
ExitCode |
int |
|
Responding |
bool |
|
Id |
int |
|
StartTime |
DateTime |
|
ExitTime |
DateTime |
|
ProcessName |
String |
|
StandardOutput |
StreamReader |
|
StandardError |
StreamReader |
|
StandardInput |
StreamWriter |
|
EnableRaisingEvents |
bool |
L'elenco sottostante mostra i metodi della classe "Siemens.Engineering.AddIn.Utilities.Process":
-
public bool Start ()
-
public static Siemens.Engineering.AddIn.Utilities.Process Start (Siemens.Engineering.AddIn.Utilities.ProcessStartInfo startInfo)
-
public static Siemens.Engineering.AddIn.Utilities.Process Start (string fileName)
-
public static Siemens.Engineering.AddIn.Utilities.Process Start (string fileName, string arguments)
-
public static Process Start(string fileName, string userName, System.Security.SecureString password, string domain)
-
public static Process Start(string fileName, string arguments, string userName, System.Security.SecureString password, string domain)
-
public void Close()
-
public void Kill()
-
public void Refresh()
-
public bool WaitForExit()
-
public bool WaitForExit(int milliseconds)
-
public void BeginErrorReadLine()
-
public void BeginOutputReadLine()
-
public void CancelErrorRead()
-
public void CancelOutputRead()
-
public bool CloseMainWindow ()
L'elenco sottostante mostra gli eventi della classe "Siemens.Engineering.AddIn.Utilities.Process":
-
ErrorDataReceived
-
OutputDataReceived
-
Exited
Tenere presente che queste proprietà, metodi ed eventi possono essere impiegati esattamente come previsto in .NET.
Esempio di un semplice richiamo del processo senza argomenti:
Siemens.Engineering.AddIn.Utilities.Process process = Siemens.Engineering.AddIn.Utilities.Process.Start(@"C:\Program Files\MyProgram\MyProcess.exe");
Creazione di un collegamento ad un'altra istanza di TIA Portal
Per configurare un collegamento con un'altra istanza di TIA Portal; procedere nel seguente modo:
-
Aprire il progetto C#.
-
Selezionare il nuovo riferimento "Siemens.Engineering.dll" e aprire "Proprietà".
-
Nel campo "Alias", inserire un nome alias, ad es. "OpnsAPI". Può trattarsi di un testo qualsiasi.
-
Selezionare il riferimento al file "Siemens.Engineering.AddIn.dll" e aprire le proprietà.
-
Nel campo "Alias", inserire un nome alias, ad es. "AddInAPI". Può trattarsi di un testo qualsiasi.
-
Nelle direttive, indicare le due direttive alias seguenti:
-
extern alias<Nome alias di Openness API> -
extern alias<Nome alias dell'Add-InAPI>
-
-
Se si configura il collegamento ad una nuova istanza di TIA Portal, utilizzare i nomi alias come prefisso. Esempio:
OpnsApi::Siemens.Engineering.TiaPortalnewTiaPortalInstance= new OpnsApi::Siemens.Engineering.TiaPortal();
Se si cerca di collegarsi da TIA Portal Openness a una copia in esecuzione di TIA Portal e non è stata creata una voce apposita in nella whitelist, TIA Portal chiede se si vuole accettare o rifiutare il collegamento. Consultare anche il capitolo "Firewall di TIA Portal Openness" nella documentazione di Openness. Per ragioni di sicurezza si sconsiglia di selezionare "Sì verso tutti".