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.