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 } } }