public void GetTheSameMessageCountAsSend() { int messagesToSend = 20; int messagesReceived = 0; int messagesSuccessfullySent = 0; IMavlinkCommunicator mavlinkCommunicator = MavlinkCommunicatorFactory.Create(Stream); IMessageNotifier messageNotifier = mavlinkCommunicator.SubscribeForReceive(m => m.Id == MessageId.Heartbeat); messageNotifier.MessageReceived += (s, e) => { Interlocked.Increment(ref messagesReceived); }; HeartbeatMessage sentHeartbeat = new HeartbeatMessage { Autopilot = MavAutopilot.Ardupilotmega, BaseMode = MavModeFlag.CustomModeEnabled | MavModeFlag.StabilizeEnabled | MavModeFlag.ManualInputEnabled, MavlinkVersion = 3, Type = MavType.Quadrotor, SystemStatus = MavState.Active, CustomMode = 0 }; for (int i = 0; i < messagesToSend; i++) { bool result = mavlinkCommunicator.SendMessage(sentHeartbeat, 1, 1); if (result) { messagesSuccessfullySent++; } } Stream.Seek(0, SeekOrigin.Begin); Thread.Sleep(8000); Assert.AreEqual(messagesSuccessfullySent, messagesReceived, 0, $"Successfully sent {messagesSuccessfullySent}. Successfully received {messagesReceived}"); mavlinkCommunicator.Dispose(); Thread.Sleep(1000); }
public void GetTheSameMessageAsSend() { HeartbeatMessage receivedHeartbeat = default(HeartbeatMessage); IMavlinkCommunicator mavlinkCommunicator = MavlinkCommunicatorFactory.Create(Stream); IMessageNotifier messageNotifier = mavlinkCommunicator.SubscribeForReceive(m => m.Id == MessageId.Heartbeat); messageNotifier.MessageReceived += (s, e) => { receivedHeartbeat = (HeartbeatMessage)e.Message; }; HeartbeatMessage sentHeartbetat = new HeartbeatMessage { Autopilot = MavAutopilot.Ardupilotmega, BaseMode = MavModeFlag.CustomModeEnabled | MavModeFlag.StabilizeEnabled | MavModeFlag.ManualInputEnabled, MavlinkVersion = 3, Type = MavType.Quadrotor, SystemStatus = MavState.Active, CustomMode = 0 }; mavlinkCommunicator.SendMessage(sentHeartbetat, 1, 1); Stream.Seek(0, SeekOrigin.Begin); Thread.Sleep(3000); Assert.AreEqual(sentHeartbetat.Autopilot, receivedHeartbeat.Autopilot); Assert.AreEqual(sentHeartbetat.Type, receivedHeartbeat.Type); Assert.AreEqual(sentHeartbetat.CustomMode, receivedHeartbeat.CustomMode); Assert.AreEqual(sentHeartbetat.BaseMode, receivedHeartbeat.BaseMode); Assert.AreEqual(sentHeartbetat.SystemStatus, receivedHeartbeat.SystemStatus); Assert.AreEqual(sentHeartbetat.MavlinkVersion, receivedHeartbeat.MavlinkVersion); mavlinkCommunicator.Dispose(); Thread.Sleep(1000); }
private static void Main(string[] args) { FileStream file = File.Open(@"E:\Desktop\Test.txt", FileMode.Open); var mavlinkcommunicatorFactory = new MavlinkCommunicatorFactory(); IMavlinkCommunicator mavlinkCommunicator = mavlinkcommunicatorFactory.Create(file); mavlinkCommunicator.SendMessage(new HeartbeatMessage { Autopilot = MavAutopilot.Aerob, BaseMode = MavModeFlag.AutoEnabled, CustomMode = 1, MavlinkVersion = 2, SystemStatus = MavState.Active, Type = MavType.Airship }, 1, 1); // 00 00 00 00 02 03 51 04 03 var bytes = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x51, 0x04, 0x03 }; IMessage heartbeatMessage = ByteArrayToStructure(bytes, typeof(HeartbeatMessage)); Console.ReadKey(); }