204 lines
6.7 KiB
Plaintext
204 lines
6.7 KiB
Plaintext
using DTS.Common.Interface.Sensors;
|
|
|
|
namespace DTS.Common.Interface.TestSetups
|
|
{
|
|
public interface IISFFile
|
|
{
|
|
/// <summary>
|
|
/// RECORD_LENGTH bytes (80)
|
|
/// </summary>
|
|
char[] HeaderLine1 { get; set; }
|
|
/// <summary>
|
|
/// 8 characters, starting at character 7
|
|
/// </summary>
|
|
char[] TestSetupName { get; set; }
|
|
/// <summary>
|
|
/// starts at character 15, 5 characters long
|
|
/// </summary>
|
|
short NumberOfRecords { get; }
|
|
/// <summary>
|
|
/// 22 characters, starting at character 20
|
|
/// </summary>
|
|
char[] TestType { get; set; }
|
|
/// <summary>
|
|
/// 30 characters, starting at character 42
|
|
/// </summary>
|
|
char[] TestDivision { get; set; }
|
|
/// <summary>
|
|
/// 8 characters start at character 72, without .TCF extension
|
|
/// </summary>
|
|
char[] TCFile { get; set; }
|
|
/// <summary>
|
|
/// RECORD_LENGTH, we don't use anything from it currently...
|
|
/// </summary>
|
|
char[] HeaderLine2 { get; set; }
|
|
/// <summary>
|
|
/// RECORD_LENGTH, we don't use anything from it currently
|
|
/// </summary>
|
|
char[] HeaderLine3 { get; set; }
|
|
|
|
IISFSensorRecord[] Records { get; }
|
|
/// <summary>
|
|
/// adds a record, updates record count
|
|
/// </summary>
|
|
/// <param name="record"></param>
|
|
void AddRecord(IISFSensorRecord record);
|
|
void WriteToFile(string pathToFile);
|
|
void AddSensors(ISensorData[] sensors);
|
|
}
|
|
|
|
public interface IISFSensorRecord
|
|
{
|
|
/// <summary>
|
|
/// RECORD_LENGTH the whole first record
|
|
/// </summary>
|
|
char[] Record1 { get; set; }
|
|
/// <summary>
|
|
/// 2 characters, starting at character 75
|
|
/// </summary>
|
|
char[] Tag { get; set; }
|
|
/// <summary>
|
|
/// 5 characters start at character 7
|
|
/// </summary>
|
|
char[] DataChannelNumber { get; set; }
|
|
void SetDataChannelNumber(short value);
|
|
|
|
/// <summary>
|
|
/// 1 character, starting at character 15
|
|
/// </summary>
|
|
bool UserIdSensorIDIsNotSpecified { get; set; }
|
|
|
|
/// <summary>
|
|
/// 11 characters start at 19
|
|
/// </summary>
|
|
char[] CapacityCharacters { get; set; }
|
|
void SetCapacity(double capacity);
|
|
double GetCapacity();
|
|
/// <summary>
|
|
/// 12 characters, starting at 30
|
|
/// </summary>
|
|
char[] SerialNumber { get; set; }
|
|
/// <summary>
|
|
/// 11 characters, start at 42
|
|
/// is Sensitivity/1000 (V)
|
|
/// can also be c0 if polynomial
|
|
/// </summary>
|
|
char[] Sensitivity { get; set; }
|
|
void SetSensitivity(double sensitivity);
|
|
double GetSensitivity();
|
|
/// <summary>
|
|
/// 11 characters starting at 53
|
|
/// </summary>
|
|
char[] BridgeResistance { get; set; }
|
|
|
|
void SetBridgeResistance(double resistance);
|
|
/// <summary>
|
|
/// RECORD_LENGTH
|
|
/// </summary>
|
|
char[] Record2 { get; set; }
|
|
/// <summary>
|
|
/// 12 characters, starting at character 7 (of record 2)
|
|
/// </summary>
|
|
char[] EngineeringUnits { get; set; }
|
|
/// <summary>
|
|
/// 11 characters, starting at character 20
|
|
/// </summary>
|
|
char[] C1 { get; set; }
|
|
void SetC1(double c1);
|
|
double GetC1();
|
|
/// <summary>
|
|
/// 17 characters, starting at character 31
|
|
/// </summary>
|
|
char[] EID { get; set; }
|
|
/// <summary>
|
|
/// 4 characters, starting at 49
|
|
/// </summary>
|
|
char[] Unknown1 { get; set; }
|
|
/// <summary>
|
|
/// 2 characters, starting at 53
|
|
/// </summary>
|
|
char[] Unknown2 { get; set; }
|
|
/// <summary>
|
|
/// 11 characters starting at 55 (TOM ONLY [sensortype TI])
|
|
/// is /1000 of ordinary
|
|
/// </summary>
|
|
char[] FireDelay { get; set; }
|
|
/// <summary>
|
|
/// 8 characters, starting at 66
|
|
/// STANDARD is the default value, we don't really support anything else currently
|
|
/// </summary>
|
|
char[] TOMConfigurationName { get; set; }
|
|
/// <summary>
|
|
/// RECORD_LENGTH, third record of 4
|
|
/// </summary>
|
|
char[] Record3 { get; set; }
|
|
/// <summary>
|
|
/// 15 characters start at 14 of record 3
|
|
/// </summary>
|
|
char[] CommentPart1 { get; set; }
|
|
/// <summary>
|
|
/// 40 characters starting at 33
|
|
/// </summary>
|
|
char[] CommentPart2 { get; set; }
|
|
/// <summary>
|
|
/// RECORD_LENGTH, the 4th record of 4
|
|
/// </summary>
|
|
char[] Record4 { get; set; }
|
|
/// <summary>
|
|
/// 15 characters, starting at character 12
|
|
/// </summary>
|
|
char[] CommentPart3 { get; set; }
|
|
/// <summary>
|
|
/// sets CommentPart1, CommentPart2, CommentPart3
|
|
/// </summary>
|
|
/// <param name="s"></param>
|
|
void SetSensorComment(string s);
|
|
/// <summary>
|
|
/// 20 characters starting at 30
|
|
/// checked for digital inputs (should contain N/O or N/C)
|
|
/// </summary>
|
|
char[] SensorType { get; set; }
|
|
/// <summary>
|
|
/// 11 characters starting at 50
|
|
/// </summary>
|
|
char[] C2 { get; set; }
|
|
void SetC2(double c2);
|
|
/// <summary>
|
|
/// 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);
|
|
/// </summary>
|
|
char[] C3 { get; set; }
|
|
void SetC3(double c3);
|
|
/// <summary>
|
|
/// writes record to stream
|
|
/// </summary>
|
|
/// <param name="writer"></param>
|
|
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
|
|
}
|
|
}
|
|
}
|