public int Unconfirmed_Event_Notification_Pack(ref Byte[] buffer, ref BACNET_EVENT_NOTIFICATION_DATA data)
        {
            int len                     = 0;
            int pdu_len                 = 0;
            int bytes_sent              = 0;
            BACNET_NPDU_DATA npdu_data  = new BACNET_NPDU_DATA();
            BACNET_ADDRESS   dest       = new BACNET_ADDRESS();
            BACNET_ADDRESS   my_address = new BACNET_ADDRESS();

            BacnetAddresssProcessor.Get_My_Address(ref my_address);
            BacnetAddresssProcessor.Get_My_Address(ref dest);


            NpduProcessor n_pro = new NpduProcessor();
            BvlcProcessor b_pro = new BvlcProcessor();

            n_pro.Encode_NpduData(ref npdu_data, true, BACNET_MESSAGE_PRIORITY.MESSAGE_PRIORITY_NORMAL);

            pdu_len = n_pro.Encode(ref buffer, ref dest, ref my_address, ref npdu_data);

            len      = Uevent_Notify_Encode(ref buffer, ref data, pdu_len);
            pdu_len += len;


            bytes_sent = b_pro.Encode(ref buffer, ref dest, ref npdu_data, pdu_len);
            return(bytes_sent);
        }
コード例 #2
0
        public Byte Cov_Subscribe_pack(ref Byte[] Handler_Transmit_Buffer, UInt32 device_id, ref BACNET_SUBSCRIBE_COV_DATA cov_data)
        {
            Byte           invoke_id  = 0;
            BACNET_ADDRESS dest       = new BACNET_ADDRESS();
            BACNET_ADDRESS my_address = new BACNET_ADDRESS();

            BacnetAddresssProcessor.Get_My_Address(ref my_address);
            BacnetAddresssProcessor.Get_Device_Address(ref dest, device_id);
            //   uint max_apdu = 0;
            //   bool status = false;
            int len      = 0;
            int pdu_len  = 0;
            int byte_len = 0;
            BACNET_NPDU_DATA npdu_data = new BACNET_NPDU_DATA();
            NpduProcessor    n_pro     = new NpduProcessor();
            BvlcProcessor    b_pro     = new BvlcProcessor();

            //status = address_get_by_device(device_id, &max_apdu, &dest);
            //invoke_id = tsm_next_free_invokeID();
            invoke_id = 1;
            n_pro.Encode_NpduData(ref npdu_data, true, BACNET_MESSAGE_PRIORITY.MESSAGE_PRIORITY_NORMAL);

            pdu_len  = n_pro.Encode(ref Handler_Transmit_Buffer, ref dest, ref my_address, ref npdu_data);
            len      = Cov_Subscribe_Encode(ref Handler_Transmit_Buffer, invoke_id, ref cov_data, pdu_len);
            pdu_len += len;
            // if ((unsigned) pdu_len < max_apdu) {
            // tsm_set_confirmed_unsegmented_transaction(invoke_id, &dest,
            //    &npdu_data, &Handler_Transmit_Buffer[0], (uint16_t) pdu_len);

            byte_len = b_pro.Encode(ref Handler_Transmit_Buffer, ref dest, ref npdu_data, pdu_len);

            return(invoke_id);
        }
コード例 #3
0
        public int Pack_Read_Property_Request(ref byte[] Handler_Transmit_Buffer, UInt32 device_id)
        {
            BACNET_ADDRESS dest       = new BACNET_ADDRESS();
            BACNET_ADDRESS my_address = new BACNET_ADDRESS();

            BacnetAddresssProcessor.Get_My_Address(ref my_address);
            //  BacnetAddresss.Get_Device_Address(ref dest, device_id);
            BacnetAddresssProcessor.Get_My_Address(ref dest);


            int              byte_len = 0;
            Byte             invoke_id;
            int              len       = 0;
            int              pdu_len   = 0;
            NpduProcessor    n_pro     = new NpduProcessor();
            BACNET_NPDU_DATA npdu_data = new BACNET_NPDU_DATA();
            BvlcProcessor    b_pro     = new BvlcProcessor();

            invoke_id = TsmProcessor.next_free_id();


            n_pro.Encode_NpduData(ref npdu_data, true, BACNET_MESSAGE_PRIORITY.MESSAGE_PRIORITY_NORMAL);

            pdu_len  = n_pro.Encode(ref Handler_Transmit_Buffer, ref dest, ref my_address, ref npdu_data);
            len      = Read_Property_Encode(ref Handler_Transmit_Buffer, invoke_id, rp_data, pdu_len);
            pdu_len += len;
            byte_len = b_pro.Encode(ref Handler_Transmit_Buffer, ref dest, ref npdu_data, pdu_len);

            return(invoke_id);;
        }
コード例 #4
0
        public int Unconfirm_Cov_Service_Pack(ref byte[] Handler_Transmit_Buffer, ref BACNET_COV_DATA cov_data)
        {   //无证实服务 广播
            int              len        = 0;
            int              pdu_len    = 0;
            int              bytes_len  = 0;
            BACNET_ADDRESS   dest       = new  BACNET_ADDRESS();
            BACNET_NPDU_DATA npdu_data  = new BACNET_NPDU_DATA();
            BACNET_ADDRESS   my_address = new BACNET_ADDRESS();

            BacnetAddresssProcessor.Get_My_Address(ref my_address);
            BacnetAddresssProcessor.Get_Broadcast_Address(ref dest, true, 60);
            NpduProcessor n_pro = new NpduProcessor();
            BvlcProcessor b_pro = new BvlcProcessor();


            // datalink_get_my_address(&my_address);
            //  datalink_get_broadcast_address(dest);
            n_pro.Encode_NpduData(ref npdu_data, true, BACNET_MESSAGE_PRIORITY.MESSAGE_PRIORITY_NORMAL);
            pdu_len   = n_pro.Encode(ref Handler_Transmit_Buffer, ref dest, ref my_address, ref npdu_data);
            len       = Unconfirm_Cov(ref Handler_Transmit_Buffer, cov_data, pdu_len);
            pdu_len  += len;
            bytes_len = b_pro.Encode(ref Handler_Transmit_Buffer, ref dest, ref npdu_data, pdu_len);
            return(bytes_len);
        }
コード例 #5
0
        public int AcknowledgeAlarmService_Pack(ref byte[] Handler_Transmit_Buffer, BACNET_ADDRESS dest, ref ACKNOWLEDGE_ALARM_DATA Ack_data)
        {
            BACNET_ADDRESS my_address = new BACNET_ADDRESS();

            BacnetAddresssProcessor.Get_My_Address(ref my_address);
            int              byte_len = 0;
            Byte             invoke_id;
            int              len       = 0;
            int              pdu_len   = 0;
            NpduProcessor    n_pro     = new NpduProcessor();
            BACNET_NPDU_DATA npdu_data = new BACNET_NPDU_DATA();
            BvlcProcessor    b_pro     = new BvlcProcessor();

            //invoke_id=get_invoke_id()  获取invoke_id未写 假设为1
            invoke_id = 1;
            n_pro.Encode_NpduData(ref npdu_data, true, BACNET_MESSAGE_PRIORITY.MESSAGE_PRIORITY_NORMAL);

            pdu_len  = n_pro.Encode(ref Handler_Transmit_Buffer, ref dest, ref my_address, ref npdu_data);
            len      = Acknowledge_Alarm_Encode(ref Handler_Transmit_Buffer, invoke_id, ref Ack_data, pdu_len);
            pdu_len += len;
            byte_len = b_pro.Encode(ref Handler_Transmit_Buffer, ref dest, ref npdu_data, pdu_len);

            return(invoke_id);;
        }
コード例 #6
0
        public void Read_Property_Handler(ref Byte[] request, UInt16 request_len, ref BACNET_ADDRESS src, ref BACNET_CONFIRMED_SERVICE_DATA request_data)
        {
            Byte[] buffer = new Byte[1024];
            BACnet_Read_Property_Data rpdata = new BACnet_Read_Property_Data();
            int len      = 0;
            int pdu_len  = 0;
            int apdu_len = -1;
            int npdu_len = -1;
            BACNET_NPDU_DATA npdu_data = new BACNET_NPDU_DATA();
            bool             error     = true; /* assume that there is an error */
            int            bytes_sent  = 0;
            BACNET_ADDRESS my_address  = new BACNET_ADDRESS();

            BacnetAddresssProcessor.Get_My_Address(ref my_address);
            NpduProcessor n_pro = new NpduProcessor();
            BvlcProcessor b_pro = new BvlcProcessor();

            n_pro.Encode_NpduData(ref npdu_data, false, BACNET_MESSAGE_PRIORITY.MESSAGE_PRIORITY_NORMAL);
            npdu_len = n_pro.Encode(ref buffer, ref src, ref my_address, ref npdu_data);
            //  if (service_data.segmented_message)
            /* we don't support segmentation - send an abort */
            len = Decode_Service_Request(ref request, request_len, ref rpdata);

            len     = Read_Property_ACK_Pack_Int(ref buffer, request_data.invoke_id, ref rpdata, npdu_len);
            pdu_len = npdu_len + len;

            bytes_sent = b_pro.Encode(ref buffer, ref src, ref npdu_data, pdu_len);



            IPEndPoint Ipep = new IPEndPoint(
                IPAddress.Parse("10.10.161.153"), 60);
            UdpSender udpsendr = new UdpSender(ref buffer, Ipep);

            udpsendr.Send(bytes_sent);
        }