public void Encode(EncodeBuffer buffer) { ASN1.encode_tag(buffer, (byte)BacnetApplicationTags.BACNET_APPLICATION_TAG_TIME, false, 4); ASN1.encode_bacnet_time(buffer, Time.Time); ASN1.bacapp_encode_application_data(buffer, Value); }
public void Encode(EncodeBuffer buffer) { for (int i = 0; i < 1; i++) { ASN1.encode_opening_tag(buffer, 0); List <ExceptionScheduleArray> loArray = loExceptionScheduleArray[i]; for (int j = 0; j < 1; j++) { var loExceptionScheduleTimeValue = loArray[j]; ASN1.bacapp_encode_application_data(buffer, new BacnetValue(BacnetApplicationTags.BACNET_APPLICATION_TAG_DATE, loArray[j].period)); foreach (var ds in loExceptionScheduleTimeValue.loExceptionScheduleTimeValue) { var loTime = ds[0].dt; var loValue = ds[0].Value; ASN1.bacapp_encode_application_data(buffer, new BacnetValue(BacnetApplicationTags.BACNET_APPLICATION_TAG_TIME, loTime)); ASN1.bacapp_encode_application_data(buffer, new BacnetValue(loValue)); } } ASN1.encode_closing_tag(buffer, 0); } }
// no test here if buffer is to small private void WriteEffectiveWeeklySchedule() { // Write Default Schedule First try { BacnetValue[] bv = new BacnetValue[1]; bv[0] = Property.DeserializeValue(TxtScheduleDefault.Text, ScheduleType); comm.WritePropertyRequest(adr, schedule_id, BacnetPropertyIds.PROP_SCHEDULE_DEFAULT, bv); } catch { } // Manual ASN.1/BER encoding EncodeBuffer b = comm.GetEncodeBuffer(0); ASN1.encode_opening_tag(b, 3); // Monday // Time // Value // Time // Value // Thusday // .... for (int i = 0; i < 7; i++) { ASN1.encode_opening_tag(b, 0); TreeNode T = Schedule.Nodes[i]; foreach (TreeNode entry in T.Nodes) { String[] s = entry.Text.Split('='); BacnetValue bdt = Property.DeserializeValue(s[0], BacnetApplicationTags.BACNET_APPLICATION_TAG_TIME); BacnetValue bval; if (s[1].ToLower().Contains("null")) { bval = new BacnetValue(null); } else { bval = Property.DeserializeValue(s[1], ScheduleType); } ASN1.bacapp_encode_application_data(b, bdt); ASN1.bacapp_encode_application_data(b, bval); } ASN1.encode_closing_tag(b, 0); } ASN1.encode_closing_tag(b, 3); Array.Resize <byte>(ref b.buffer, b.offset); byte[] InOutBuffer = b.buffer; comm.RawEncodedDecodedPropertyConfirmedRequest(adr, schedule_id, BacnetPropertyIds.PROP_WEEKLY_SCHEDULE, BacnetConfirmedServices.SERVICE_CONFIRMED_WRITE_PROPERTY, ref InOutBuffer); }
public void ASN1encode(EncodeBuffer buffer) { for (int i = 0; i < 7; i++) { ASN1.encode_opening_tag(buffer, 0); if (days[i] != null) { List <DaySchedule> dsl = days[i]; foreach (DaySchedule ds in dsl) { ASN1.bacapp_encode_application_data(buffer, new BacnetValue(BacnetApplicationTags.BACNET_APPLICATION_TAG_TIME, ds.dt)); ASN1.bacapp_encode_application_data(buffer, new BacnetValue(ds.Value)); } } ASN1.encode_closing_tag(buffer, 0); } }
public void ASN1encode(EncodeBuffer buffer) { ASN1.bacapp_encode_application_data(buffer, new BacnetValue(WeekofDay)); ASN1.bacapp_encode_application_data(buffer, new BacnetValue(BacnetApplicationTags.BACNET_APPLICATION_TAG_TIME, fromTime)); ASN1.bacapp_encode_application_data(buffer, new BacnetValue(BacnetApplicationTags.BACNET_APPLICATION_TAG_TIME, toTime)); if (adr != null) { adr.ASN1encode(buffer); } else { ASN1.encode_context_object_id(buffer, 0, Id.type, Id.instance); // BacnetObjectId is context specific encoded } ASN1.bacapp_encode_application_data(buffer, new BacnetValue(processIdentifier)); ASN1.bacapp_encode_application_data(buffer, new BacnetValue(Ack_Required)); ASN1.bacapp_encode_application_data(buffer, new BacnetValue(evenType)); }