/secs4net

SECS-II/HSMS-SS/GEM implementation on .NET

Primary LanguageC#

secs4net

Project Description
SECS-II/HSMS-SS/GEM implementation on .NET. This library provide easy way to communicate with SEMI standard compatible device.

1. Send message to device

try{
    var s3f18 = await device.SendAsync(s3f17); //await device's reply secondary message
    //access item value with strong type
    byte returnCode = (byte)s3f18.SecsItem.Items[0]; // access item value. Equal to s3f18.SecsItem.Items[0].Value()
}catch(SecsException){
    // exception  when
    // T3 timeout
    // device reply SxF0
    // device reply S9Fx
}

2. Receive message from device
provide a delegate to SecsGem constructor's last argument

(primaryMsg, reply) => {
    try {
       //do something for primaryMsg
       reply( secondaryMsg );  // reply secondary msg to device
    } catch (Exception ex) {

    }
};

3. SecsMessage construction is LINQ friendly

var s16f15 = new SecsMessage(16, 15, "CreateProcessJob",
                Item.L(
                    Item.U4(0),
                    Item.L(from pj in tx.ProcessJobs select
                        Item.L(
                            Item.A(pj.Id),
                            Item.B(0x0D),
                            Item.L(from carrier in pj.Carriers select
                                Item.L(
                                    Item.A(carrier.Id),
                                    Item.L(from slotInfo in carrier.SlotMap select
                                        Item.U1(slotInfo.SlotNo)))),
                            Item.L(
                                Item.U1(1),
                                Item.A(pj.RecipeId),
                                Item.L()),
                            Item.Boolean(true),
                            Item.L()))));

4. SecsMessage/Item is immutable.
5. SecsMessage/Item is .NET Remoting operatable. It mean you can build an scalable distributed device control system.