Programmatic TransSECS

TransSECS is a code/class generator. It flattens the SECS/GEM message structure and provides simple set/get methods for data access. Messages are received by simple event notifications. Rapid development in the TransSECS editor and easy integration with Java, .NET or scripting languages.

After creating the interface in the TransSECS editor, you build the code to provide you with a Java jar and/or .NET assembly.
TransSECS and MIStudio

After that, it takes only three lines of code to create the interface (Java example)

host = new EquipmentController();
host.init();
host.start();

Sending a message is equally easy

s1f1 = (AreYouThere)host.getMessageBean("AreYouThere");
s1f2 = (AreYouThereResponseFromHost)s1f1.sendMessageAndWait();

and you can just register to receive messages

boolean success = equipmentController.registerForReceiveNotification("RemoteCommand", new MessageNotifier() {
@Override
public void messageReceived(int status, VIBMessageBean vibmb) {
[...]
});

TransSECS has flattened the structure so you just reference elements of the message by the names you provided. Simple set/get methods are generated.

s2f23 = (TraceInitializationCustomizable)host.getMessageBean("TraceInitializationCustomizable");
//set up trace
s2f23.setTOTSMP(maxTraceCount);
s2f23.setDSPER(traceInterval);
s2f23.setTRID(TRID++); //increment the TraceID
[...]
s2f24 = (Trace_Initialization_ACK)s2f23.sendMessageAndWait();

The generated code is thread safe and messages can be sent from any thread. Received messages are processed on a single thread to ensure that all messages are received in the correct order.