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