Beispiel #1
0
        public void SendSimpleDataStream()
        {
            ulong  broadcast    = 0x000000000000FFFF;
            ulong  long_address = 0x0013A20041B764AD;
            string text         = "";

            for (int i = 0; i < CONSTANTS.MAX_FRAME_DATA; i++)
            {
                text += "x";
            } // looks like 84 is the magic number so that the packets dont fragment; should probably start making a transmission/packet/etc class that can hold arrays of these 84 byte transmissions
            byte[] data_bytes = Encoding.UTF8.GetBytes(text);
            byte[] bytes      = factory.CreateSendDataFrame(long_address, data_bytes, 1);
            using (SerialRelay relay = new SerialRelay("COM4", this.byteReceiver))
            {
                relay.SendBytes(bytes);
                EmissionDescriptor             em       = this.byteReceiver.WaitForEmission(EmissionTypes.ExtendedTransmitStatus, 1000);
                ExtendedTransmitStatusEmission response = new ExtendedTransmitStatusEmission();
                response.Unpack(em.Data);
                Console.WriteLine("ID: {0}; Address: 0x{1:X4}; Result: 0x{2:X2}",
                                  response.FrameID, response.Address, response.DeliveryStatus);
                bytes = factory.CreateSendDataFrame(response.Address, data_bytes, 1);
                for (int i = 0; i < 10; i++)
                {
                    relay.SendBytes(bytes);
                    em = this.byteReceiver.WaitForEmission(EmissionTypes.ExtendedTransmitStatus, 1000);
                    response.Unpack(em.Data);
                    Console.WriteLine("ID: {0}; Address: 0x{1:X4}; Result: 0x{2:X2}",
                                      response.FrameID, response.Address, response.DeliveryStatus);
                    Assert.AreEqual(0, response.DeliveryStatus);
                    //System.Threading.Thread.Sleep(10);
                }
            }
        }
Beispiel #2
0
        internal void SendRawBytes(ulong address, byte[] data)
        {
            if (data.Length < 1)
            {
                return;
            }
            byte[] frame_bytes = this.relay.TranmissionFormatter.FormatDataBytes(address, data);
            this.relay.SendBytes(frame_bytes);
            EmissionDescriptor             desc     = this.emissionProcessor.WaitForEmission(EmissionTypes.ExtendedTransmitStatus, 1000);
            ExtendedTransmitStatusEmission response = new ExtendedTransmitStatusEmission();

            response.Unpack(desc.Data);
            if (response.DeliveryStatus != 0)
            {
                throw new Exception($"Error during data transmission of {data.Length} bytes to {address}");
            }
        }
Beispiel #3
0
        public ushort Discover(ulong address)
        {
            string text = CONSTANTS.DISCOVER;

            byte[] data_bytes = Encoding.UTF8.GetBytes(text);
            byte[] bytes      = this.relay.TranmissionFormatter.FormatDataBytes(address, data_bytes);
            relay.SendBytes(bytes);
            //
            EmissionDescriptor             desc     = this.emissionProcessor.WaitForEmission(EmissionTypes.ExtendedTransmitStatus, 1000);
            ExtendedTransmitStatusEmission response = new ExtendedTransmitStatusEmission();

            response.Unpack(desc.Data);
            if (response.DeliveryStatus != 0)
            {
                throw new Exception($"Error while discovering full address for {address}");
            }
            return(response.Address);
        }
Beispiel #4
0
        public void SendSimpleData()
        {
            ulong  broadcast = 0x000000000000FFFF;
            ulong  address   = 0x0013A20041B764AD;
            string text      = "xxxxx";

            byte[] data_bytes = Encoding.UTF8.GetBytes(text);
            byte[] bytes      = factory.CreateSendDataFrame(address, data_bytes, 1);
            using (SerialRelay relay = new SerialRelay("COM4", this.byteReceiver))
            {
                relay.SendBytes(bytes);
                EmissionDescriptor             em       = this.byteReceiver.WaitForEmission(EmissionTypes.ExtendedTransmitStatus, 1000);
                ExtendedTransmitStatusEmission response = new ExtendedTransmitStatusEmission();
                response.Unpack(em.Data);
                Console.WriteLine("Frame ID: {0}; Result: {1}",
                                  response.FrameID, response.DeliveryStatus);
                Assert.AreEqual(0, response.DeliveryStatus);
            }
        }