public static WorkstationCommandBase ParseFactory(InputByteArray InputArray) { WorkstationCommandBase dsCmd = null; if (InputArray.RemainingLength >= 2) { // command codes as documented on 15.2 - 1 of 5494 function ref manual var buf = InputArray.PeekBytes(2); if (buf[0] == 0x04) { var wrkstnCode = buf[1].ToWorkstationCode(); if (wrkstnCode != null) { var code = wrkstnCode.Value; if (code == WorkstationCode.ClearUnit) { dsCmd = new ClearUnitCommand(InputArray); } else if (code == WorkstationCode.WTD) { dsCmd = new WriteToDisplayCommand(InputArray); } else if (code == WorkstationCode.ReadMdtFields) { dsCmd = new ReadMdtFieldsCommand(InputArray); } // 04 F3. write structure field. Used as vehicle for the D9 70 5250 query // command. else if (code == WorkstationCode.WriteStructuredField) { dsCmd = new WriteStructuredFieldCommand(InputArray); } else if (code == WorkstationCode.SaveScreen) { dsCmd = new SaveScreenCommand(InputArray); } else if (code == WorkstationCode.RestoreScreen) { dsCmd = new RestoreScreenCommand(InputArray); } else { throw new Exception( "workstation data stream command code not supported. " + code.ToString()); } } } } return(dsCmd); }
public static byte[] Build(byte ControlChar1, byte ControlChar2, byte[] OrderBytes) { var ba = new ByteArrayBuilder(); { var buf = WorkstationCommandBase.ToBytes(WorkstationCode.WTD); ba.Append(buf); } ba.Append(ControlChar1); ba.Append(ControlChar2); ba.Append(OrderBytes); return(ba.ToByteArray()); }