Настройка плагина PlgMimCalendarJP
Существую три типа передачи данных:- Double
- String
- Hex
У каналов должен быть выбран тип Входной/Выходной или Расчётный/Выходной.
Формула включена - Включено.
Входная формула: Val(); 1
Выходная формула:
- Double. Первый календарь: SetDate(), Второй календарь: SetDate().
- String. Первый календарь: SetDateFromText(), Второй календарь: SetDateFromText().
- Hex. Первый календарь: SetTwoDatesFromHex(номер канала второго календаря), Второй календарь: SetDateFromHex().
// Calendar date scripts.
// The channel stores date and time as OADate double.
// Status 1 means Defined.
// double
// Input formula: Val(); 1
// Output formula: SetDate()
public double SetDate()
{
SetData(CnlNum, CmdVal, 1);
return CmdVal;
}
// text
// cmdData = "2000-01-01T07:06:00.000Z"
// isHex = false
// Input formula: Val(); 1
// Output formula: SetDateFromText()
public double SetDateFromText()
{
if (string.IsNullOrWhiteSpace(CmdDataStr))
{
return double.NaN;
}
DateTime dt = DateTime.Parse(
CmdDataStr,
null,
System.Globalization.DateTimeStyles.RoundtripKind);
double oaDate = EncodeDate(dt.ToUniversalTime());
SetData(CnlNum, oaDate, 1);
return oaDate;
}
// hex, one date
// cmdData = 8 bytes, OADate double
// isHex = true
// Input formula: Val(); 1
// Output formula: SetDateFromHex()
public double SetDateFromHex()
{
if (CmdData == null || CmdData.Length < 
{
return double.NaN;
}
double oaDate = System.BitConverter.ToDouble(CmdData, 0);
SetData(CnlNum, oaDate, 1);
return oaDate;
}
// hex, two dates
// cmdData = 16 bytes:
// bytes 0..7 = first OADate double
// bytes 8..15 = second OADate double
// isHex = true
// Input formula of both channels: Val(); 1
// Output formula of first channel: SetTwoDatesFromHex(7)
// where 7 is the second channel number.
public double SetTwoDatesFromHex(int secondCnlNum)
{
if (CmdData == null || CmdData.Length < 16)
{
return double.NaN;
}
double oaDate1 = System.BitConverter.ToDouble(CmdData, 0);
double oaDate2 = System.BitConverter.ToDouble(CmdData,
;
SetData(CnlNum, oaDate1, 1);
SetData(secondCnlNum, oaDate2, 1);
return oaDate1;
}
