using DTS.Common.Interface.Sensors; namespace DTS.Common.Interface.TestSetups { public interface IISFFile { /// /// RECORD_LENGTH bytes (80) /// char [] HeaderLine1 {get; set; } /// /// 8 characters, starting at character 7 /// char [] TestSetupName {get; set;} /// /// starts at character 15, 5 characters long /// short NumberOfRecords { get; } /// /// 22 characters, starting at character 20 /// char [] TestType { get; set; } /// /// 30 characters, starting at character 42 /// char [] TestDivision { get; set; } /// /// 8 characters start at character 72, without .TCF extension /// char [] TCFile { get; set; } /// /// RECORD_LENGTH, we don't use anything from it currently... /// char [] HeaderLine2 { get; set; } /// /// RECORD_LENGTH, we don't use anything from it currently /// char [] HeaderLine3 { get; set; } IISFSensorRecord [] Records { get; } /// /// adds a record, updates record count /// /// void AddRecord(IISFSensorRecord record); void WriteToFile(string pathToFile); void AddSensors(ISensorData[] sensors); } public interface IISFSensorRecord { /// /// RECORD_LENGTH the whole first record /// char [] Record1 { get; set; } /// /// 2 characters, starting at character 75 /// char [] Tag { get; set; } /// /// 5 characters start at character 7 /// char [] DataChannelNumber { get; set; } void SetDataChannelNumber(short value); /// /// 1 character, starting at character 15 /// bool UserIdSensorIDIsNotSpecified { get; set; } /// /// 11 characters start at 19 /// char [] CapacityCharacters { get; set; } void SetCapacity(double capacity); double GetCapacity(); /// /// 12 characters, starting at 30 /// char [] SerialNumber { get; set; } /// /// 11 characters, start at 42 /// is Sensitivity/1000 (V) /// can also be c0 if polynomial /// char [] Sensitivity { get; set; } void SetSensitivity(double sensitivity); double GetSensitivity(); /// /// 11 characters starting at 53 /// char [] BridgeResistance { get; set; } void SetBridgeResistance(double resistance); /// /// RECORD_LENGTH /// char [] Record2 { get; set; } /// /// 12 characters, starting at character 7 (of record 2) /// char [] EngineeringUnits { get; set; } /// /// 11 characters, starting at character 20 /// char [] C1 { get; set; } void SetC1(double c1); double GetC1(); /// /// 17 characters, starting at character 31 /// char [] EID { get; set; } /// /// 4 characters, starting at 49 /// char [] Unknown1 { get; set; } /// /// 2 characters, starting at 53 /// char [] Unknown2 { get; set; } /// /// 11 characters starting at 55 (TOM ONLY [sensortype TI]) /// is /1000 of ordinary /// char [] FireDelay { get; set; } /// /// 8 characters, starting at 66 /// STANDARD is the default value, we don't really support anything else currently /// char [] TOMConfigurationName { get; set; } /// /// RECORD_LENGTH, third record of 4 /// char [] Record3 { get; set; } /// /// 15 characters start at 14 of record 3 /// char [] CommentPart1 { get; set; } /// /// 40 characters starting at 33 /// char [] CommentPart2 { get; set; } /// /// RECORD_LENGTH, the 4th record of 4 /// char [] Record4 { get; set; } /// /// 15 characters, starting at character 12 /// char [] CommentPart3 { get; set; } /// /// sets CommentPart1, CommentPart2, CommentPart3 /// /// void SetSensorComment(string s); /// /// 20 characters starting at 30 /// checked for digital inputs (should contain N/O or N/C) /// char [] SensorType { get; set; } /// /// 11 characters starting at 50 /// char [] C2 { get; set; } void SetC2(double c2); /// /// 11 characters starting at 61 /// notice for poly's we should be multiplying by 1000D? /// calibration.Records.Records.First().Poly.SetCoefficient(0, calibration.Records.Records[0].Sensitivity / 1000.0D); /// calibration.Records.Records.First().Poly.SetCoefficient(1, c1 / 1000.0D); /// calibration.Records.Records.First().Poly.SetCoefficient(2, c2 / 1000.0D); /// calibration.Records.Records.First().Poly.SetCoefficient(3, c3 / 1000.0D); /// char [] C3 { get; set; } void SetC3(double c3); /// /// writes record to stream /// /// void Write(System.IO.BinaryWriter writer); void SetSensor(ISensorData sensor); } public abstract class ConstantsAndEnums { public const int RECORD_LENGTH = 80; public enum ISFKnownChannelTypes { VS, VU, SB, TI, //not analog (TOM) TC, //not analog (TOM) CT, //Digital XP, P4, VF, NB, EX } } }