IF NOT xInitDone THEN
fbReadProperty.RegisterToServer(BACnet_Client);
fbReadProperty(dwTargetDeviceNumber := 718,
objType := BACnet.CmpBACnet.IEC_BACNET_OBJECT_TYPE.OBJ_CALENDAR, objInst := 1,
propID := BACnet.CmpBACnet.IEC_BACNET_PROPERTY_ID.PROP_DATELIST,
udiTimeOut := 5000000);
xInitDone := TRUE;
ELSE
fbReadProperty(xExecute := xReadExecute);
IF fbReadProperty.xDone THEN
xReadExecute := FALSE;
bacCalendarContents := fbReadProperty.result;
IF bacCalendarContents.tag = CmpBACnet.IEC_BACNET_DATA_TYPE.DATA_TYPE_CALENDAR_ENTRY THEN
pCalenderEntry := bacCalendarContents.buffer.pBuffer;
FOR udiIndex := 0 TO bacCalendarContents.nElements -1 DO
CASE pCalenderEntry[udiIndex].tag OF
CmpBACnet.IEC_BACNET_CALENDAR_ENTRY_TYPE.CALENDAR_ENTRY_DATE:
sHelp := CONCAT(BYTE_TO_STRING(pCalenderEntry[udiIndex].entry.dat.dayOfMonth), '.');
sHelp := CONCAT(sHelp, TO_STRING(pCalenderEntry[udiIndex].entry.dat.month));
sHelp := CONCAT(sHelp, '.');
sHelp := CONCAT(sHelp, WORD_TO_STRING(pCalenderEntry[udiIndex].entry.dat.year));
asEntries[udiIndex] := sHelp;
CmpBACnet.IEC_BACNET_CALENDAR_ENTRY_TYPE.CALENDAR_ENTRY_DATE_RANGE:
sHelp := CONCAT(BYTE_TO_STRING(pCalenderEntry[udiIndex].entry.dateRange.startDate.dayOfMonth), '.');
sHelp := CONCAT(sHelp, TO_STRING(pCalenderEntry[udiIndex].entry.dateRange.startDate.month));
sHelp := CONCAT(sHelp, '.');
sHelp := CONCAT(sHelp, WORD_TO_STRING(pCalenderEntry[udiIndex].entry.dateRange.startDate.year));
sHelp := CONCAT(sHelp, ' ... ');
sHelp := CONCAT(sHelp, BYTE_TO_STRING(pCalenderEntry[udiIndex].entry.dateRange.endDate.dayOfMonth));
sHelp := CONCAT(sHelp, '.');
sHelp := CONCAT(sHelp, TO_STRING(pCalenderEntry[udiIndex].entry.dateRange.endDate.month));
sHelp := CONCAT(sHelp, '.');
sHelp := CONCAT(sHelp, WORD_TO_STRING(pCalenderEntry[udiIndex].entry.dateRange.endDate.year));
asEntries[udiIndex] := sHelp;
CmpBACnet.IEC_BACNET_CALENDAR_ENTRY_TYPE.CALENDAR_ENTRY_WEEK_AND_DAY:
// Do Something
ELSE
// Should never used == >> Implement ErrorHandling
END_CASE
IF pCalenderEntry[udiIndex].tag = CmpBACnet.IEC_BACNET_CALENDAR_ENTRY_TYPE.CALENDAR_ENTRY_DATE THEN
dat := pCalenderEntry[udiIndex].entry.dat;
END_IF
IF pCalenderEntry[udiIndex].tag = CmpBACnet.IEC_BACNET_CALENDAR_ENTRY_TYPE.CALENDAR_ENTRY_DATE_RANGE THEN
dateRange := pCalenderEntry[udiIndex].entry.dateRange;
END_IF
END_FOR
END_IF
END_IF
END_IF
|