From 7dbd32ddcf6611dec88ef56336b364110b019571 Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Tue, 26 Mar 2019 12:54:09 +0200 Subject: A lot of work !!!! --- .../Tango.UnitTesting/Tango.UnitTesting.csproj | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'Software/Visual_Studio/Tango.UnitTesting/Tango.UnitTesting.csproj') diff --git a/Software/Visual_Studio/Tango.UnitTesting/Tango.UnitTesting.csproj b/Software/Visual_Studio/Tango.UnitTesting/Tango.UnitTesting.csproj index d1bba995e..b515ac420 100644 --- a/Software/Visual_Studio/Tango.UnitTesting/Tango.UnitTesting.csproj +++ b/Software/Visual_Studio/Tango.UnitTesting/Tango.UnitTesting.csproj @@ -102,6 +102,7 @@ ..\packages\System.Data.SQLite.Linq.1.0.108.0\lib\net46\System.Data.SQLite.Linq.dll True + ..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll @@ -126,6 +127,7 @@ + @@ -138,6 +140,9 @@ Always + + PreserveNewest + @@ -230,6 +235,14 @@ {5001990f-977b-48ff-b217-0236a5022ad8} Tango.Web + + {f209fae8-73f9-441b-97f4-0844a0279390} + Tango.TCC.BL + + + {5d0d4053-cab3-4a4a-929e-37a76483bc22} + Tango.TCC.OpenCV.DLL + {ebb7cb9f-6af2-456b-a5dd-1b136b605d90} Tango.DBObservablesGenerator.CLI @@ -264,7 +277,7 @@ - + \ No newline at end of file -- cgit v1.3.1 From a3bcf6afe7959686a84050caa2064852ae223667 Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Wed, 27 Mar 2019 17:49:22 +0200 Subject: Added timestamps to external bridge udp packet. Fixed detection of long gone external bridge ppc's. --- .../ExternalBridgeUdpDiscoveryPacket.proto | 1 + .../Build/Shortcuts/Machine Emulator.lnk | Bin 1293 -> 1445 bytes .../ExternalBridge/ExternalBridgeScanner.cs | 45 +++++++++++++++------ .../ExternalBridge/ExternalBridgeService.cs | 8 ++++ .../ExternalBridgeUdpDiscoveryPacket.cs | 36 +++++++++++++++-- .../Tango.Transport/Discovery/IDiscoveryService.cs | 5 +++ .../Discovery/UdpDiscoveryService.cs | 7 ++++ .../Tango.Transport/Tango.Transport.csproj | 2 +- .../TCC/TCC Resources/bitmap_ok.bmp | Bin 0 -> 1351734 bytes .../Visual_Studio/Tango.UnitTesting/TCC/TCC_TST.cs | 20 +++++++-- .../Tango.UnitTesting/Tango.UnitTesting.csproj | 9 ++++- 11 files changed, 111 insertions(+), 22 deletions(-) create mode 100644 Software/Visual_Studio/Tango.UnitTesting/TCC/TCC Resources/bitmap_ok.bmp (limited to 'Software/Visual_Studio/Tango.UnitTesting/Tango.UnitTesting.csproj') diff --git a/Software/PMR/Messages/Integration/ExternalBridgeUdpDiscoveryPacket.proto b/Software/PMR/Messages/Integration/ExternalBridgeUdpDiscoveryPacket.proto index 33c565bae..d797e6de3 100644 --- a/Software/PMR/Messages/Integration/ExternalBridgeUdpDiscoveryPacket.proto +++ b/Software/PMR/Messages/Integration/ExternalBridgeUdpDiscoveryPacket.proto @@ -5,5 +5,6 @@ option java_package = "com.twine.tango.pmr.integration"; message ExternalBridgeUdpDiscoveryPacket { + string Time = 1; string SerialNumber = 2; } \ No newline at end of file diff --git a/Software/Visual_Studio/Build/Shortcuts/Machine Emulator.lnk b/Software/Visual_Studio/Build/Shortcuts/Machine Emulator.lnk index ef854af85..cd539235a 100644 Binary files a/Software/Visual_Studio/Build/Shortcuts/Machine Emulator.lnk and b/Software/Visual_Studio/Build/Shortcuts/Machine Emulator.lnk differ diff --git a/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeScanner.cs b/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeScanner.cs index 25ecd7d09..15ccbf0f7 100644 --- a/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeScanner.cs +++ b/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeScanner.cs @@ -133,25 +133,44 @@ namespace Tango.Integration.ExternalBridge { while (IsStarted) { - var ClientEp = new IPEndPoint(IPAddress.Any, 0); - _server.EnableBroadcast = true; - var ClientRequestData = _server.Receive(ref ClientEp); - - ExternalBridgeUdpDiscoveryPacket packet = ExternalBridgeUdpDiscoveryPacket.Parser.ParseFrom(ClientRequestData); - - if (!AvailableMachines.OfType().ToList().Exists(x => x.SerialNumber == packet.SerialNumber)) + try { - ExternalBridgeTcpClient newMachine = new ExternalBridgeTcpClient(packet.SerialNumber, ClientEp.Address.ToString()); + var ClientEp = new IPEndPoint(IPAddress.Any, 0); + _server.EnableBroadcast = true; + var ClientRequestData = _server.Receive(ref ClientEp); - LogManager.Log("Found a new machine via TCP " + newMachine.SerialNumber); + ExternalBridgeUdpDiscoveryPacket packet = ExternalBridgeUdpDiscoveryPacket.Parser.ParseFrom(ClientRequestData); - ThreadsHelper.InvokeUINow(() => + if (packet.Time == String.Empty || (DateTime.Now - DateTime.Parse(packet.Time)).TotalSeconds < 6) { - AvailableMachines.Insert(1, newMachine); - }); + if (!AvailableMachines.OfType().ToList().Exists(x => x.SerialNumber == packet.SerialNumber && x.IPAddress == ClientEp.Address.ToString())) + { + ExternalBridgeTcpClient newMachine = new ExternalBridgeTcpClient(packet.SerialNumber, ClientEp.Address.ToString()); + + LogManager.Log("Found a new machine via TCP " + newMachine.SerialNumber); + + ThreadsHelper.InvokeUINow(() => + { + AvailableMachines.Insert(1, newMachine); + }); + } + } + //else if (packet.Time != String.Empty && (DateTime.Now - DateTime.Parse(packet.Time)).TotalSeconds > 5) + //{ + // var machine = AvailableMachines.OfType().ToList().FirstOrDefault(x => x.SerialNumber == packet.SerialNumber && x.IPAddress == ClientEp.Address.ToString()); + + // if (machine != null) + // { + // AvailableMachines.Remove(machine); + // } + //} + } + catch (Exception ex) + { + LogManager.Log(ex); } - Thread.Sleep(1000); + //Thread.Sleep(1000); } } diff --git a/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeService.cs b/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeService.cs index 4cdd372f5..faa538e93 100644 --- a/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeService.cs +++ b/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeService.cs @@ -156,6 +156,14 @@ namespace Tango.Integration.ExternalBridge { SerialNumber = Machine.SerialNumber, }); + + _discoverySevice.BeforeBroadcasting -= _discoverySevice_BeforeBroadcasting; + _discoverySevice.BeforeBroadcasting += _discoverySevice_BeforeBroadcasting; + } + + private void _discoverySevice_BeforeBroadcasting(object sender, ExternalBridgeUdpDiscoveryPacket e) + { + e.Time = DateTime.Now.ToString(); } /// diff --git a/Software/Visual_Studio/Tango.PMR/Integration/ExternalBridgeUdpDiscoveryPacket.cs b/Software/Visual_Studio/Tango.PMR/Integration/ExternalBridgeUdpDiscoveryPacket.cs index 163a753b7..df584d5c6 100644 --- a/Software/Visual_Studio/Tango.PMR/Integration/ExternalBridgeUdpDiscoveryPacket.cs +++ b/Software/Visual_Studio/Tango.PMR/Integration/ExternalBridgeUdpDiscoveryPacket.cs @@ -23,13 +23,13 @@ namespace Tango.PMR.Integration { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "CiZFeHRlcm5hbEJyaWRnZVVkcERpc2NvdmVyeVBhY2tldC5wcm90bxIVVGFu", - "Z28uUE1SLkludGVncmF0aW9uIjgKIEV4dGVybmFsQnJpZGdlVWRwRGlzY292", - "ZXJ5UGFja2V0EhQKDFNlcmlhbE51bWJlchgCIAEoCUIhCh9jb20udHdpbmUu", - "dGFuZ28ucG1yLmludGVncmF0aW9uYgZwcm90bzM=")); + "Z28uUE1SLkludGVncmF0aW9uIkYKIEV4dGVybmFsQnJpZGdlVWRwRGlzY292", + "ZXJ5UGFja2V0EgwKBFRpbWUYASABKAkSFAoMU2VyaWFsTnVtYmVyGAIgASgJ", + "QiEKH2NvbS50d2luZS50YW5nby5wbXIuaW50ZWdyYXRpb25iBnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Integration.ExternalBridgeUdpDiscoveryPacket), global::Tango.PMR.Integration.ExternalBridgeUdpDiscoveryPacket.Parser, new[]{ "SerialNumber" }, null, null, null) + new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Integration.ExternalBridgeUdpDiscoveryPacket), global::Tango.PMR.Integration.ExternalBridgeUdpDiscoveryPacket.Parser, new[]{ "Time", "SerialNumber" }, null, null, null) })); } #endregion @@ -60,6 +60,7 @@ namespace Tango.PMR.Integration { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public ExternalBridgeUdpDiscoveryPacket(ExternalBridgeUdpDiscoveryPacket other) : this() { + time_ = other.time_; serialNumber_ = other.serialNumber_; } @@ -68,6 +69,17 @@ namespace Tango.PMR.Integration { return new ExternalBridgeUdpDiscoveryPacket(this); } + /// Field number for the "Time" field. + public const int TimeFieldNumber = 1; + private string time_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string Time { + get { return time_; } + set { + time_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Field number for the "SerialNumber" field. public const int SerialNumberFieldNumber = 2; private string serialNumber_ = ""; @@ -92,6 +104,7 @@ namespace Tango.PMR.Integration { if (ReferenceEquals(other, this)) { return true; } + if (Time != other.Time) return false; if (SerialNumber != other.SerialNumber) return false; return true; } @@ -99,6 +112,7 @@ namespace Tango.PMR.Integration { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override int GetHashCode() { int hash = 1; + if (Time.Length != 0) hash ^= Time.GetHashCode(); if (SerialNumber.Length != 0) hash ^= SerialNumber.GetHashCode(); return hash; } @@ -110,6 +124,10 @@ namespace Tango.PMR.Integration { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public void WriteTo(pb::CodedOutputStream output) { + if (Time.Length != 0) { + output.WriteRawTag(10); + output.WriteString(Time); + } if (SerialNumber.Length != 0) { output.WriteRawTag(18); output.WriteString(SerialNumber); @@ -119,6 +137,9 @@ namespace Tango.PMR.Integration { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public int CalculateSize() { int size = 0; + if (Time.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Time); + } if (SerialNumber.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(SerialNumber); } @@ -130,6 +151,9 @@ namespace Tango.PMR.Integration { if (other == null) { return; } + if (other.Time.Length != 0) { + Time = other.Time; + } if (other.SerialNumber.Length != 0) { SerialNumber = other.SerialNumber; } @@ -143,6 +167,10 @@ namespace Tango.PMR.Integration { default: input.SkipLastField(); break; + case 10: { + Time = input.ReadString(); + break; + } case 18: { SerialNumber = input.ReadString(); break; diff --git a/Software/Visual_Studio/Tango.Transport/Discovery/IDiscoveryService.cs b/Software/Visual_Studio/Tango.Transport/Discovery/IDiscoveryService.cs index 9ec48ba47..f650c77f7 100644 --- a/Software/Visual_Studio/Tango.Transport/Discovery/IDiscoveryService.cs +++ b/Software/Visual_Studio/Tango.Transport/Discovery/IDiscoveryService.cs @@ -13,6 +13,11 @@ namespace Tango.Transport.Discovery /// The type of the discovery message. public interface IDiscoveryService : IDiscoveryComponent where DiscoveryMessage : IMessage { + /// + /// Occurs before broadcasting the discovery message and gives a chance to modify the packet message. + /// + event EventHandler BeforeBroadcasting; + /// /// Gets or sets the current discovery message. /// diff --git a/Software/Visual_Studio/Tango.Transport/Discovery/UdpDiscoveryService.cs b/Software/Visual_Studio/Tango.Transport/Discovery/UdpDiscoveryService.cs index 97736e7fb..1fa486e68 100644 --- a/Software/Visual_Studio/Tango.Transport/Discovery/UdpDiscoveryService.cs +++ b/Software/Visual_Studio/Tango.Transport/Discovery/UdpDiscoveryService.cs @@ -19,6 +19,11 @@ namespace Tango.Transport.Discovery { private Timer _timer; + /// + /// Occurs before broadcasting the discovery message and gives a chance to modify the packet message. + /// + public event EventHandler BeforeBroadcasting; + /// /// Gets or sets the current discovery message. /// @@ -107,6 +112,8 @@ namespace Tango.Transport.Discovery IPEndPoint endPoint = new IPEndPoint(IPAddress.Broadcast, Port); + BeforeBroadcasting?.Invoke(this, CurrentDiscoveryMessage); + byte[] bytes = CurrentDiscoveryMessage.ToByteArray(); client.EnableBroadcast = true; diff --git a/Software/Visual_Studio/Tango.Transport/Tango.Transport.csproj b/Software/Visual_Studio/Tango.Transport/Tango.Transport.csproj index 2fe525153..87af709e0 100644 --- a/Software/Visual_Studio/Tango.Transport/Tango.Transport.csproj +++ b/Software/Visual_Studio/Tango.Transport/Tango.Transport.csproj @@ -148,7 +148,7 @@ - + \ No newline at end of file diff --git a/Software/Visual_Studio/Tango.UnitTesting/TCC/TCC Resources/bitmap_ok.bmp b/Software/Visual_Studio/Tango.UnitTesting/TCC/TCC Resources/bitmap_ok.bmp new file mode 100644 index 000000000..0135298a5 Binary files /dev/null and b/Software/Visual_Studio/Tango.UnitTesting/TCC/TCC Resources/bitmap_ok.bmp differ diff --git a/Software/Visual_Studio/Tango.UnitTesting/TCC/TCC_TST.cs b/Software/Visual_Studio/Tango.UnitTesting/TCC/TCC_TST.cs index a96328e8b..475bc68fd 100644 --- a/Software/Visual_Studio/Tango.UnitTesting/TCC/TCC_TST.cs +++ b/Software/Visual_Studio/Tango.UnitTesting/TCC/TCC_TST.cs @@ -11,6 +11,7 @@ using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using Tango.Core.IO; +using Tango.CSV; using Tango.PMR.TCC; using Tango.TCC.BL; @@ -23,13 +24,13 @@ namespace Tango.UnitTesting.TCC [TestMethod] public void Detect() { - var original_bitmap = Directory.GetCurrentDirectory() + "\\TCC\\TCC Resources\\bitmap.bmp"; + var original_bitmap = Directory.GetCurrentDirectory() + "\\TCC\\TCC Resources\\bitmap_ok.bmp"; using (ColorDetector detector = new ColorDetector()) { DetectionInput input = new DetectionInput() { - Number = 10, + Number = 5, Columns = 10, Rows = 11, TargetIndex = 99, @@ -57,7 +58,20 @@ namespace Tango.UnitTesting.TCC Process.Start(outputBitmap); } - Assert.IsTrue(output.Number == 20); + var benchmarksCsvFile = TemporaryManager.Default.CreateFile(".csv"); + benchmarksCsvFile.Persist = true; + + using (CsvFile benchmarksRGB = new CsvFile(new CsvDestination(benchmarksCsvFile))) + { + foreach (var color in output.ColorMatrix) + { + benchmarksRGB.Append(color); + } + } + + Helper.ShowInExplorer(benchmarksCsvFile); + + Assert.IsTrue(output.Number == 15); } } diff --git a/Software/Visual_Studio/Tango.UnitTesting/Tango.UnitTesting.csproj b/Software/Visual_Studio/Tango.UnitTesting/Tango.UnitTesting.csproj index b515ac420..3e5434c98 100644 --- a/Software/Visual_Studio/Tango.UnitTesting/Tango.UnitTesting.csproj +++ b/Software/Visual_Studio/Tango.UnitTesting/Tango.UnitTesting.csproj @@ -143,6 +143,9 @@ PreserveNewest + + PreserveNewest + @@ -179,6 +182,10 @@ {a34ee0f0-649d-41c8-8489-b6f1cc6924ee} Tango.Core + + {58e8825f-0c96-449c-b320-1e82b0aa876b} + Tango.CSV + {0e0eef3e-8f4e-4f23-9d19-479fd8d76c12} Tango.DAL.Local @@ -277,7 +284,7 @@ - + \ No newline at end of file -- cgit v1.3.1 From 34d86579a1f4e3842566b3dd187f9fa5f3838d07 Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Sun, 14 Apr 2019 17:40:23 +0300 Subject: Implemented some test methods for pulse. --- Software/Visual_Studio/Resources/Pulse/ABC.dst | Bin 0 -> 4266 bytes Software/Visual_Studio/Resources/Pulse/test.twn | Bin 0 -> 4938881 bytes Software/Visual_Studio/Tango.UnitTesting/Helper.cs | 9 +++ .../Tango.UnitTesting/Pulse/Pulse_TST.cs | 84 +++++++++++++++++++++ .../Tango.UnitTesting/Tango.UnitTesting.csproj | 7 +- 5 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 Software/Visual_Studio/Resources/Pulse/ABC.dst create mode 100644 Software/Visual_Studio/Resources/Pulse/test.twn create mode 100644 Software/Visual_Studio/Tango.UnitTesting/Pulse/Pulse_TST.cs (limited to 'Software/Visual_Studio/Tango.UnitTesting/Tango.UnitTesting.csproj') diff --git a/Software/Visual_Studio/Resources/Pulse/ABC.dst b/Software/Visual_Studio/Resources/Pulse/ABC.dst new file mode 100644 index 000000000..71839e39f Binary files /dev/null and b/Software/Visual_Studio/Resources/Pulse/ABC.dst differ diff --git a/Software/Visual_Studio/Resources/Pulse/test.twn b/Software/Visual_Studio/Resources/Pulse/test.twn new file mode 100644 index 000000000..3a564f625 Binary files /dev/null and b/Software/Visual_Studio/Resources/Pulse/test.twn differ diff --git a/Software/Visual_Studio/Tango.UnitTesting/Helper.cs b/Software/Visual_Studio/Tango.UnitTesting/Helper.cs index 6a4f860b9..0498935ae 100644 --- a/Software/Visual_Studio/Tango.UnitTesting/Helper.cs +++ b/Software/Visual_Studio/Tango.UnitTesting/Helper.cs @@ -27,6 +27,15 @@ namespace Tango.UnitTesting return Path.GetFullPath(@"..\..\..\Resources\" + fileName); } + /// + /// Gets the absolute path to the 'Resources' folder. + /// + /// + public static String GetResourcePath() + { + return Path.GetFullPath(@"..\..\..\Resources\"); + } + /// /// Gets the PMR (Protobuf Messages Repository) path. /// diff --git a/Software/Visual_Studio/Tango.UnitTesting/Pulse/Pulse_TST.cs b/Software/Visual_Studio/Tango.UnitTesting/Pulse/Pulse_TST.cs new file mode 100644 index 000000000..b25a3140b --- /dev/null +++ b/Software/Visual_Studio/Tango.UnitTesting/Pulse/Pulse_TST.cs @@ -0,0 +1,84 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.Core.IO; +using Tango.Pulse; + +namespace Tango.UnitTesting.Pulse +{ + [TestClass] + [TestCategory("Pulse")] + public class Pulse_TST + { + [TestMethod] + public void Validate_Reading_Writing() + { + String abcFile = Path.Combine(Helper.GetResourcePath(), "Pulse", "ABC.dst"); + + TwnFile twnFile = new TwnFile(); + twnFile.Name = "My design"; + twnFile.NumberOfCopies = 1; + twnFile.MediaID = 0; + twnFile.SpoolingMethod = SpoolingMethods.SpoolPerSegment; + + Bitmap thumbnail = new Bitmap(1280, 720); + using (Graphics g = Graphics.FromImage(thumbnail)) + { + g.Clear(Color.Transparent); + g.DrawString("My design", new Font(new FontFamily("Arial"), 70), Brushes.Red, 1280 / 2, 720 / 2); + } + twnFile.Thumbnail = thumbnail; + + twnFile.EmbroideryFileFormat = "dst"; + twnFile.EmbroideryFile = File.ReadAllBytes(abcFile); + + //Add gradient segment. + TwnSegment gradientSegment = new TwnSegment(); + gradientSegment.Length = 10; //10 centimeters. + gradientSegment.BrushStops.Add(new TwnStop(255, 0, 0, 0)); //0% + gradientSegment.BrushStops.Add(new TwnStop(0, 0, 255, 1)); //100% + twnFile.Segments.Add(gradientSegment); + + //Add solid segment. + TwnSegment solidSegment = new TwnSegment(); + solidSegment.Length = 20; + solidSegment.BrushStops.Add(new TwnStop(0, 255, 0, 0)); + twnFile.Segments.Add(solidSegment); + + //Validate reading/writing. + using (MemoryStream ms = new MemoryStream()) + { + twnFile.ToStream(ms); + + ms.Position = 0; + + TwnFile twnFile2 = TwnFile.FromStream(ms); + + String serialized = JsonConvert.SerializeObject(twnFile, Formatting.Indented); + + String deserialized = JsonConvert.SerializeObject(twnFile2, Formatting.Indented); + + Assert.AreEqual(serialized, deserialized); + } + } + + [TestMethod] + public void Read_Pulse_Sample_File() + { + String sampleFile = Path.Combine(Helper.GetResourcePath(), "Pulse", "test.twn"); + TwnFile twnFile = TwnFile.FromFile(sampleFile); + var imgFile = TemporaryManager.Default.CreateFile(".png"); + + twnFile.Thumbnail.Save(imgFile, ImageFormat.Png); + + Helper.ShowInExplorer(imgFile); + } + } +} diff --git a/Software/Visual_Studio/Tango.UnitTesting/Tango.UnitTesting.csproj b/Software/Visual_Studio/Tango.UnitTesting/Tango.UnitTesting.csproj index 3e5434c98..6fd23451d 100644 --- a/Software/Visual_Studio/Tango.UnitTesting/Tango.UnitTesting.csproj +++ b/Software/Visual_Studio/Tango.UnitTesting/Tango.UnitTesting.csproj @@ -124,6 +124,7 @@ + @@ -214,6 +215,10 @@ {40073806-914e-4e78-97ab-fa9639308ebe} Tango.Protobuf + + {8435223D-DB6B-45E3-A08B-45B7416F8481} + Tango.Pulse + {401989e7-ae1e-4002-b0ee-9a9f63740b97} Tango.Scripting @@ -284,7 +289,7 @@ - + \ No newline at end of file -- cgit v1.3.1