The OTX-Runtime API 7.x is a complete new implementation based at C++. It is independent from the former OTX-Runtime API 6.x (DotNet, Java). Applications which based at the OTX-Runtime API 6.x can be migrate to the OTX-Runtime API 7.x. The picture shows the main structure of the OTX-Runtime API 7.x.
The main differences between OTX-Runtime API 6.x and 7.x are listed in the following table.
Feature | 6.x | 7.x | Description |
OTX Runner | Own process | Own process or inside application process | OTX Runner is the process where the OTX logic will be executed |
IPC Between Runner and API | Sockets | Sockets, Pipe or Raw | IPC means inter process communication. Raw do not need IPC. |
Diagnostic Runtime System (MVCI) | Inside Runner | Outside Runner inside OTX-DiagManager API | DiagManager can be run inside its own process and is stand-alone usable |
IPC Between Runner and DiagManager | - | Sockets, Pipe or Raw | IPC means inter process communication. Raw do not need IPC. |
Configuration and start Diagnostic Runtime System | Implicit inside Runner | Explicit with DiagManager | IPC means inter process communication. Raw do not need IPC. |
Implementations for access to external systems | Implicit inside Runner | Explicit outside Runner inside so called Custom Implementations | CustomImplementations can be changed by the user. A default custom implementation with the same functionality like in 6.x will delivered together with the OTX-Runtime API. Some custom implementations, e.g. DefaultCustomScreenImplementation must be set explicitly, see example below. |
API entry point | RuntimeManager | RuntimeManagerFactory and IRuntimeManager | The main structures of the APIs are very similar |
The basic proceeding how the OTX-Runtime API 7.x can be used is described in the following pseudo code example. The example executes the main procedure of a PTX file.
void main()
{
RuntimeConfig.Instance.TraceFolder = "C://");
CustomScreenImplementation customScreenImplementation = new CustomScreenImplementation();
runtimeManager.SetCustomImplementation(customScreenImplementation);
if (procedure != null)
{
if (procedure.Parameters.Size > 0)
{
{
}
}
if (runtimeContext.IsFinished)
{
}
else if (runtimeContext.IsStopped)
{
}
else if (runtimeContext.HasRuntimeException)
{
}
else if (runtimeContext.HasOtxException)
{
}
else
{
}
}
}
private void ProcedureStarted(IRuntimeContext context)
{
}
private void ProcedureFinished(IRuntimeContext context)
{
}
private void ProcedureStopped(IRuntimeContext context)
{
}
private void ProcedureAborted(IRuntimeContext context)
{
}
Class to manage the OTX-Runtime API licenses
Definition: LicenseManager.cs:12
static void SetLicenseKey(string licenseKey)
Sets a valid license key to release the API.
Definition: LicenseManager.cs:26
Factory class for creating runtime managers, see IRuntimeManager
Definition: RuntimeManagerFactory.cs:16
static IRuntimeManager CreateSocketRuntimeManager(ushort otxRunnerPort)
Creates SocketRuntimeManager without DiagManager.
Definition: RuntimeManagerFactory.cs:34
Contains information of a Runner instance.
Definition: IRuntimeContext.cs:15
Main class to load and execute an OTX project
Definition: IRuntimeManager.cs:30
Represents an OTX Procedure.
Definition: IProcedure.cs:8
Represents class for InParameter of a Procedure. The parameter is identical to a related parameter in...
Definition: IProcedureInParameter.cs:8
Represents base class for InParameter, OutParameter and InOutParameter of a Procedure....
Definition: IProcedureParameter.cs:8
object Value
Gets Parameter value.
Definition: IProcedureParameter.cs:32
The Project is the root element of the OTX Data Structure. It mainly contains the Packages and the Pr...
Definition: IProject.cs:15
delegate void ProcedureStoppedHandler(IRuntimeContext context)
Represents the method that will handle the ProcedureStopped event raised when execution stopped.
delegate void ProcedureStartedHandler(IRuntimeContext context)
Represents the method that will handle the ProcedureStarted event raised when the procedure started.
delegate void ProcedureFinishedHandler(IRuntimeContext context)
Represents the method that will handle the ProcedureFinished event raised when a procedure completed ...
delegate void ProcedureAbortedHandler(IRuntimeContext context)
Represents the method that will handle the ProcedureAborted event raised when a procedure aborted run...
Namespace containing all objects related to licensing
Definition: IpcLicenseCheckerBase.cs:10
Namespace for browsing at OTX data structure.
Definition: IContextVariable.cs:5
Namespace containing main entries: IProject and IPlayerProject.
Definition: IPlayerProject.cs:5
Namespace containing the programming interface for browsing and execution of OTX procedures in own ap...
Definition: ApiConstants.cs:5
Namespace containing all objects for browsing and execution of OTX procedures
Definition: ApiConstants.cs:5
Namespace containing all objects which are standardized according to ISO 13209 (OTX)
Namespace containing all objects related to testing inside automotive industry
OTX file related to the examples above.
<?xml version="1.0" encoding="utf-8"?>
<otx xmlns="http://iso.org/OTX/1.0.0" xmlns:hmi="http://iso.org/OTX/1.0.0/HMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="id_0a4aa7adb9484acd80fd9b8cc0889d1c" name="HelloWorldSampleDocument" package="HelloWorldSample1Package1" version="1.0.0.0" timestamp="2020-04-30T15:12:52.8454075+02:00">
<procedures>
<procedure id="id_9fd318a128cd4945aa7ed8d5cd57c0b8" name="main" visibility="PUBLIC">
<realisation>
<parameters>
<inParam name="Message" id="InParameterDeclaration_9d68143af6864f9b89691051826e9f9a">
<realisation>
<dataType xsi:type="String" />
</realisation>
</inParam>
</parameters>
<flow>
<action name="ConfirmDialog1" id="ConfirmDialog_9f6feabe81034ffab0d6113e65df827f">
<realisation xsi:type="hmi:ConfirmDialog">
<hmi:title xsi:type="StringLiteral" value="Hello World" />
<hmi:message xsi:type="StringValue" valueOf="Message" />
</realisation>
</action>
</flow>
</realisation>
</procedure>
</procedures>
</otx>