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); } } }
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}"); } }
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); }
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); } }