From 565e48de649d3d14e6b82012b6aa2e3819a3c82c Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Wed, 4 Mar 2020 14:09:45 +0200 Subject: Improved BitmapCliper. Implemented auto throw when max differences reached. Implemented fallback TurboJpeg encoder. Fixed issue with UpdateMachine.xml script removing DISPENSERS before IDS_PACKS. Added GlobalHost.Configuration.MaxIncomingWebSocketMessageSize for WebSockets support for large messages on SignalR. --- .../Tango.RemoteDesktop/Clipping/BitmapCliper.cs | 16 ++-- .../Tango.RemoteDesktop/WpfApp1/MainWindow.xaml.cs | 2 +- .../RemoteDesktop/DefaultRemoteDesktopService.cs | 40 +++++++--- .../Tango.RemoteDesktop/Clipping/BitmapCliper.cs | 16 ++-- .../Comparers/RasterBitmapComparer.cs | 15 ++++ .../Comparers/VectorBitmapComparer.cs | 13 +++ .../Tango.RemoteDesktop/Encoders/JpegEncoder.cs | 6 -- .../Encoders/TurboJpegEncoder.cs | 62 +++++++++++++++ .../Visual_Studio/Tango.RemoteDesktop/Frame.cs | 4 +- .../Tango.RemoteDesktop/FrameEncoder.cs | 2 +- .../Tango.RemoteDesktop/IBitmapComparer.cs | 7 ++ .../Visual_Studio/Tango.RemoteDesktop/IFrame.cs | 2 +- .../MaxDifferencesReachedException.cs | 16 ++++ .../Tango.RemoteDesktop/ScreenCaptureEngine.cs | 17 +++- .../Tango.RemoteDesktop/Tango.RemoteDesktop.csproj | 24 ++++++ .../Tango.RemoteDesktop/packages.config | 4 + .../Tango.RemoteDesktop/win7-x64/turbojpeg.dll | Bin 0 -> 573440 bytes .../win7-x64/turbojpeg.dll.meta | 87 +++++++++++++++++++++ .../Tango.RemoteDesktop/win7-x86/turbojpeg.dll | Bin 0 -> 533504 bytes .../win7-x86/turbojpeg.dll.meta | 87 +++++++++++++++++++++ .../SQLExaminer/Configurations/UpdateMachine.xml | Bin 55002 -> 55002 bytes .../Adapters/SignalRTransportAdapter.cs | 2 +- .../Adapters/TcpTransportAdapter.cs | 2 +- .../Web/Tango.MachineService/Startup.cs | 4 +- 24 files changed, 381 insertions(+), 47 deletions(-) create mode 100644 Software/Visual_Studio/Tango.RemoteDesktop/Encoders/TurboJpegEncoder.cs create mode 100644 Software/Visual_Studio/Tango.RemoteDesktop/MaxDifferencesReachedException.cs create mode 100644 Software/Visual_Studio/Tango.RemoteDesktop/packages.config create mode 100644 Software/Visual_Studio/Tango.RemoteDesktop/win7-x64/turbojpeg.dll create mode 100644 Software/Visual_Studio/Tango.RemoteDesktop/win7-x64/turbojpeg.dll.meta create mode 100644 Software/Visual_Studio/Tango.RemoteDesktop/win7-x86/turbojpeg.dll create mode 100644 Software/Visual_Studio/Tango.RemoteDesktop/win7-x86/turbojpeg.dll.meta (limited to 'Software') diff --git a/Software/Experiments/Tango.RemoteDesktop/Tango.RemoteDesktop/Clipping/BitmapCliper.cs b/Software/Experiments/Tango.RemoteDesktop/Tango.RemoteDesktop/Clipping/BitmapCliper.cs index 5bd8beaa3..5bfec8612 100644 --- a/Software/Experiments/Tango.RemoteDesktop/Tango.RemoteDesktop/Clipping/BitmapCliper.cs +++ b/Software/Experiments/Tango.RemoteDesktop/Tango.RemoteDesktop/Clipping/BitmapCliper.cs @@ -30,8 +30,7 @@ namespace Tango.RemoteDesktop.Clipping //determine top for (int i = 0; i < rgbValues.Length; i++) { - int color = rgbValues[i] & 0xffffff; - if (color != 0x0) + if (rgbValues[i] != 16777215) { int r = i / bd.Width; int c = i % bd.Width; @@ -53,8 +52,7 @@ namespace Tango.RemoteDesktop.Clipping //determine bottom for (int i = rgbValues.Length - 1; i >= 0; i--) { - int color = rgbValues[i] & 0xffffff; - if (color != 0x0) + if (rgbValues[i] != 16777215) { int r = i / bd.Width; int c = i % bd.Width; @@ -79,8 +77,7 @@ namespace Tango.RemoteDesktop.Clipping //determine left for (int c = 0; c < left; c++) { - int color = rgbValues[r * bd.Width + c] & 0xffffff; - if (color != 0x0) + if (rgbValues[r * bd.Width + c] != 16777215) { if (left > c) { @@ -93,8 +90,7 @@ namespace Tango.RemoteDesktop.Clipping //determine right for (int c = bd.Width - 1; c > right; c--) { - int color = rgbValues[r * bd.Width + c] & 0xffffff; - if (color != 0x0) + if (rgbValues[r * bd.Width + c] != 16777215) { if (right < c) { @@ -128,7 +124,9 @@ namespace Tango.RemoteDesktop.Clipping //create new image Bitmap newImage = new Bitmap(width, height, PixelFormat.Format32bppArgb); - BitmapData nbd = newImage.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb); + BitmapData nbd + = newImage.LockBits(new Rectangle(0, 0, width, height), + ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb); Marshal.Copy(imgData, 0, nbd.Scan0, imgData.Length); newImage.UnlockBits(nbd); diff --git a/Software/Experiments/Tango.RemoteDesktop/WpfApp1/MainWindow.xaml.cs b/Software/Experiments/Tango.RemoteDesktop/WpfApp1/MainWindow.xaml.cs index 7953e9666..ec0cd852a 100644 --- a/Software/Experiments/Tango.RemoteDesktop/WpfApp1/MainWindow.xaml.cs +++ b/Software/Experiments/Tango.RemoteDesktop/WpfApp1/MainWindow.xaml.cs @@ -40,7 +40,7 @@ namespace WpfApp1 _engine = new RasterScreenCaptureEngine() { - CaptureRegion = new CaptureRegion(1920 + 1920, 0, 1280, 800) + CaptureRegion = new CaptureRegion(0, 0, 1280, 800) }; _engine.CaptureMethod = new GdiScreenCapture(); _engine.FrameRate = 5; //Per second diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/RemoteDesktop/DefaultRemoteDesktopService.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/RemoteDesktop/DefaultRemoteDesktopService.cs index 9099e6346..67d0b85de 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/RemoteDesktop/DefaultRemoteDesktopService.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/RemoteDesktop/DefaultRemoteDesktopService.cs @@ -67,6 +67,8 @@ namespace Tango.PPC.Common.RemoteDesktop _engine.CaptureMethod = new GdiScreenCapture(); #endif + _engine.Comparer.MaxDifferencesThrow = _engine.CaptureRegion.Width * _engine.CaptureRegion.Height / 2; + if (_settings.EnableRemoteDesktop) { Start(); @@ -119,7 +121,7 @@ namespace Tango.PPC.Common.RemoteDesktop FrameRate = _engine.FrameRate }, token, new TransportResponseConfig() { - Immediate = true, + Immediate = false, }); } @@ -139,7 +141,7 @@ namespace Tango.PPC.Common.RemoteDesktop Packet = _initialPacket, }, client.Token, new TransportResponseConfig() { - Immediate = true, + Immediate = false, }); client.InitialPacketSent = true; @@ -150,19 +152,35 @@ namespace Tango.PPC.Common.RemoteDesktop } } - if (e.Frame.DifferenceAvailable && e.Frame.DifferenceCount > 0) + if (e.Frame.DifferenceCount > 0) { - var diffFrame = e.Frame.ToDifference(); - diffFrame = diffFrame.OptimizeBounds(); + RemoteDesktopPacket packet = null; - RemoteDesktopPacket packet = new RemoteDesktopPacket() + if (!e.Frame.DifferenceAvailable) { - Bitmap = diffFrame.ToEncoder().ToArray(), - IsPartial = true, - PartialRegion = new CaptureRegion(diffFrame.Left, diffFrame.Top, diffFrame.Width, diffFrame.Height), - }; + Debug.WriteLine("Using Jpeg..."); + packet = new RemoteDesktopPacket() + { + Bitmap = e.Frame.ToEncoder().ToArray(30) + }; + } + else + { + var diffFrame = e.Frame.ToDifference(); + diffFrame = diffFrame.OptimizeBounds(); + + packet = new RemoteDesktopPacket() + { + Bitmap = diffFrame.ToEncoder().ToArray(), + IsPartial = true, + PartialRegion = new CaptureRegion(diffFrame.Left, diffFrame.Top, diffFrame.Width, diffFrame.Height), + }; + + diffFrame.Dispose(); + } + + Debug.WriteLine($"Bitmap Size: {packet.Bitmap.Length / 1000} kb"); - diffFrame.Dispose(); e.Frame.Dispose(); foreach (var client in _clients.ToList().Where(x => x.InitialPacketSent)) diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/Clipping/BitmapCliper.cs b/Software/Visual_Studio/Tango.RemoteDesktop/Clipping/BitmapCliper.cs index 8866f6d9a..f2e500e4e 100644 --- a/Software/Visual_Studio/Tango.RemoteDesktop/Clipping/BitmapCliper.cs +++ b/Software/Visual_Studio/Tango.RemoteDesktop/Clipping/BitmapCliper.cs @@ -30,8 +30,7 @@ namespace Tango.RemoteDesktop.Clipping //determine top for (int i = 0; i < rgbValues.Length; i++) { - int color = rgbValues[i] & 0xffffff; - if (color != 0x0) + if (rgbValues[i] != 16777215) { int r = i / bd.Width; int c = i % bd.Width; @@ -53,8 +52,7 @@ namespace Tango.RemoteDesktop.Clipping //determine bottom for (int i = rgbValues.Length - 1; i >= 0; i--) { - int color = rgbValues[i] & 0xffffff; - if (color != 0x0) + if (rgbValues[i] != 16777215) { int r = i / bd.Width; int c = i % bd.Width; @@ -79,8 +77,7 @@ namespace Tango.RemoteDesktop.Clipping //determine left for (int c = 0; c < left; c++) { - int color = rgbValues[r * bd.Width + c] & 0xffffff; - if (color != 0x0) + if (rgbValues[r * bd.Width + c] != 16777215) { if (left > c) { @@ -93,8 +90,7 @@ namespace Tango.RemoteDesktop.Clipping //determine right for (int c = bd.Width - 1; c > right; c--) { - int color = rgbValues[r * bd.Width + c] & 0xffffff; - if (color != 0x0) + if (rgbValues[r * bd.Width + c] != 16777215) { if (right < c) { @@ -128,7 +124,9 @@ namespace Tango.RemoteDesktop.Clipping //create new image Bitmap newImage = new Bitmap(width, height, PixelFormat.Format32bppArgb); - BitmapData nbd = newImage.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb); + BitmapData nbd + = newImage.LockBits(new Rectangle(0, 0, width, height), + ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb); Marshal.Copy(imgData, 0, nbd.Scan0, imgData.Length); newImage.UnlockBits(nbd); diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/Comparers/RasterBitmapComparer.cs b/Software/Visual_Studio/Tango.RemoteDesktop/Comparers/RasterBitmapComparer.cs index b1b186065..7aa6a07a0 100644 --- a/Software/Visual_Studio/Tango.RemoteDesktop/Comparers/RasterBitmapComparer.cs +++ b/Software/Visual_Studio/Tango.RemoteDesktop/Comparers/RasterBitmapComparer.cs @@ -15,6 +15,12 @@ namespace Tango.RemoteDesktop.Comparers /// public class RasterBitmapComparer : IBitmapComparer { + /// + /// When max number of differences reached, the comparer will immediately return the current difference frame. + /// This should enforce the screen capture engine to report 'No Difference Available'. + /// + public long? MaxDifferencesThrow { get; set; } + /// /// Creates the difference as . /// @@ -94,6 +100,15 @@ namespace Tango.RemoteDesktop.Comparers if (same != 4) { count++; + + if (MaxDifferencesThrow != null && count > MaxDifferencesThrow.Value) + { + previousBitmap.UnlockBits(data1); + currentBitmap.UnlockBits(data2); + diffImage.UnlockBits(diffData); + diffImage.Dispose(); + throw new MaxDifferencesReachedException(); + } } } diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/Comparers/VectorBitmapComparer.cs b/Software/Visual_Studio/Tango.RemoteDesktop/Comparers/VectorBitmapComparer.cs index 7f6dd9ccf..338318177 100644 --- a/Software/Visual_Studio/Tango.RemoteDesktop/Comparers/VectorBitmapComparer.cs +++ b/Software/Visual_Studio/Tango.RemoteDesktop/Comparers/VectorBitmapComparer.cs @@ -16,6 +16,12 @@ namespace Tango.RemoteDesktop.Comparers /// public class VectorBitmapComparer : IBitmapComparer { + /// + /// When max number of differences reached, the comparer will immediately return the current difference frame. + /// This should enforce the screen capture engine to report 'No Difference Available'. + /// + public long? MaxDifferencesThrow { get; set; } + /// /// Creates the difference as . /// @@ -105,6 +111,13 @@ namespace Tango.RemoteDesktop.Comparers }); count++; + + if (MaxDifferencesThrow != null && count > MaxDifferencesThrow.Value) + { + previousBitmap.UnlockBits(data1); + currentBitmap.UnlockBits(data2); + throw new MaxDifferencesReachedException(); + } } } diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/Encoders/JpegEncoder.cs b/Software/Visual_Studio/Tango.RemoteDesktop/Encoders/JpegEncoder.cs index 744849977..c72f1afc4 100644 --- a/Software/Visual_Studio/Tango.RemoteDesktop/Encoders/JpegEncoder.cs +++ b/Software/Visual_Studio/Tango.RemoteDesktop/Encoders/JpegEncoder.cs @@ -58,11 +58,5 @@ namespace Tango.RemoteDesktop.Encoders return ms.ToArray(); } } - - private ImageCodecInfo GetEncoder(ImageFormat format) - { - ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders(); - return codecs.Single(codec => codec.FormatID == format.Guid); - } } } diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/Encoders/TurboJpegEncoder.cs b/Software/Visual_Studio/Tango.RemoteDesktop/Encoders/TurboJpegEncoder.cs new file mode 100644 index 000000000..b3909911f --- /dev/null +++ b/Software/Visual_Studio/Tango.RemoteDesktop/Encoders/TurboJpegEncoder.cs @@ -0,0 +1,62 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using TurboJpegWrapper; + +namespace Tango.RemoteDesktop.Encoders +{ + public class TurboJpegEncoder : FrameEncoder + { + private TJCompressor _compressor; + + /// + /// Initializes a new instance of the class. + /// + /// The frame. + public TurboJpegEncoder(IFrame frame) : base(frame) + { + _compressor = new TJCompressor(); + } + + /// + /// Returns a stream containing the encoded frame. + /// + /// + public override MemoryStream ToStream() + { + return ToStream(100); + } + + /// + /// Returns a byte array containing the encoded frame. + /// + /// + public override byte[] ToArray() + { + return ToArray(100); + } + + /// + /// Returns a stream containing the encoded frame with the specified quality. + /// + /// The quality. + /// + public virtual MemoryStream ToStream(int quality) + { + return new MemoryStream(ToArray(quality)); + } + + /// + /// Returns a byte array containing the encoded frame with the specified quality. + /// + /// The quality. + /// + public byte[] ToArray(int quality) + { + return _compressor.Compress(Frame.ToBitmap(), TJSubsamplingOption.Chrominance411, quality, TJFlags.None); + } + } +} diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/Frame.cs b/Software/Visual_Studio/Tango.RemoteDesktop/Frame.cs index e871d5da2..105a99134 100644 --- a/Software/Visual_Studio/Tango.RemoteDesktop/Frame.cs +++ b/Software/Visual_Studio/Tango.RemoteDesktop/Frame.cs @@ -76,9 +76,9 @@ namespace Tango.RemoteDesktop /// /// /// - public IFrameEncoder ToEncoder() where T : IFrameEncoder + public T ToEncoder() where T : IFrameEncoder { - return Activator.CreateInstance(typeof(T), new object[] { this }) as IFrameEncoder; + return (T)Activator.CreateInstance(typeof(T), new object[] { this }); } /// diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/FrameEncoder.cs b/Software/Visual_Studio/Tango.RemoteDesktop/FrameEncoder.cs index a1413d9c9..dd5f5c064 100644 --- a/Software/Visual_Studio/Tango.RemoteDesktop/FrameEncoder.cs +++ b/Software/Visual_Studio/Tango.RemoteDesktop/FrameEncoder.cs @@ -39,7 +39,7 @@ namespace Tango.RemoteDesktop /// Returns a byte array containing the encoded frame. /// /// - public byte[] ToArray() + public virtual byte[] ToArray() { using (var ms = ToStream()) { diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/IBitmapComparer.cs b/Software/Visual_Studio/Tango.RemoteDesktop/IBitmapComparer.cs index 6e1f8e999..21ba15c29 100644 --- a/Software/Visual_Studio/Tango.RemoteDesktop/IBitmapComparer.cs +++ b/Software/Visual_Studio/Tango.RemoteDesktop/IBitmapComparer.cs @@ -20,5 +20,12 @@ namespace Tango.RemoteDesktop /// The current bitmap. /// BitmapComparerResult CreateDifference(Bitmap previousBitmap, Bitmap currentBitmap); + + /// + /// When max number of differences reached, the comparer will immediately return the current difference frame. + /// This should enforce the screen capture engine to report 'No Difference Available'. + /// The value of null (default) means infinite. + /// + long? MaxDifferencesThrow { get; set; } } } diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/IFrame.cs b/Software/Visual_Studio/Tango.RemoteDesktop/IFrame.cs index f5a69218d..1bdfd7650 100644 --- a/Software/Visual_Studio/Tango.RemoteDesktop/IFrame.cs +++ b/Software/Visual_Studio/Tango.RemoteDesktop/IFrame.cs @@ -48,6 +48,6 @@ namespace Tango.RemoteDesktop /// /// /// - IFrameEncoder ToEncoder() where T : IFrameEncoder; + T ToEncoder() where T : IFrameEncoder; } } diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/MaxDifferencesReachedException.cs b/Software/Visual_Studio/Tango.RemoteDesktop/MaxDifferencesReachedException.cs new file mode 100644 index 000000000..e93a8eff1 --- /dev/null +++ b/Software/Visual_Studio/Tango.RemoteDesktop/MaxDifferencesReachedException.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.RemoteDesktop +{ + public class MaxDifferencesReachedException : Exception + { + public MaxDifferencesReachedException() : base("The number of differences exceeded the maximum value. You should return the whole frame.") + { + + } + } +} diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/ScreenCaptureEngine.cs b/Software/Visual_Studio/Tango.RemoteDesktop/ScreenCaptureEngine.cs index 17f54369c..81efb6a30 100644 --- a/Software/Visual_Studio/Tango.RemoteDesktop/ScreenCaptureEngine.cs +++ b/Software/Visual_Studio/Tango.RemoteDesktop/ScreenCaptureEngine.cs @@ -157,10 +157,19 @@ namespace Tango.RemoteDesktop } else { - var result = Comparer.CreateDifference(_previousBitmap, bitmap); - _previousBitmap.Dispose(); - _previousBitmap = bitmap.Clone() as Bitmap; - OnFrameReceived(bitmap, result.Frame, result.DifferenceCount); + try + { + BitmapComparerResult result = Comparer.CreateDifference(_previousBitmap, bitmap); + _previousBitmap.Dispose(); + _previousBitmap = bitmap.Clone() as Bitmap; + OnFrameReceived(bitmap, result.Frame, result.DifferenceCount); + } + catch (MaxDifferencesReachedException) + { + _previousBitmap.Dispose(); + _previousBitmap = bitmap.Clone() as Bitmap; + OnFrameReceived(bitmap, null, (uint)(bitmap.Width * bitmap.Height)); + } } } else diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/Tango.RemoteDesktop.csproj b/Software/Visual_Studio/Tango.RemoteDesktop/Tango.RemoteDesktop.csproj index 87674b42b..b0feb438d 100644 --- a/Software/Visual_Studio/Tango.RemoteDesktop/Tango.RemoteDesktop.csproj +++ b/Software/Visual_Studio/Tango.RemoteDesktop/Tango.RemoteDesktop.csproj @@ -34,6 +34,9 @@ + + ..\packages\Quamotion.TurboJpegWrapper.1.5.69\lib\net45\Quamotion.TurboJpegWrapper.dll + False ..\Referenced Assemblies\SharpDX\SharpDX.dll @@ -75,10 +78,12 @@ + + @@ -109,5 +114,24 @@ + + + PreserveNewest + + + PreserveNewest + + + + + PreserveNewest + + + PreserveNewest + + + + + \ No newline at end of file diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/packages.config b/Software/Visual_Studio/Tango.RemoteDesktop/packages.config new file mode 100644 index 000000000..2cbb3038a --- /dev/null +++ b/Software/Visual_Studio/Tango.RemoteDesktop/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/win7-x64/turbojpeg.dll b/Software/Visual_Studio/Tango.RemoteDesktop/win7-x64/turbojpeg.dll new file mode 100644 index 000000000..da956aad6 Binary files /dev/null and b/Software/Visual_Studio/Tango.RemoteDesktop/win7-x64/turbojpeg.dll differ diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/win7-x64/turbojpeg.dll.meta b/Software/Visual_Studio/Tango.RemoteDesktop/win7-x64/turbojpeg.dll.meta new file mode 100644 index 000000000..9ee42ad7b --- /dev/null +++ b/Software/Visual_Studio/Tango.RemoteDesktop/win7-x64/turbojpeg.dll.meta @@ -0,0 +1,87 @@ +fileFormatVersion: 2 +guid: 8320357f84e101f4bbdd0775df156e89 +timeCreated: 1522943063 +licenseType: Pro +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: x86_64 + DefaultValueInitialized: true + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Facebook: Win64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: + CPU: x86_64 + - first: + Standalone: LinuxUniversal + second: + enabled: 1 + settings: + CPU: x86_64 + - first: + Standalone: OSXIntel + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXIntel64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: x86_64 + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 1 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/win7-x86/turbojpeg.dll b/Software/Visual_Studio/Tango.RemoteDesktop/win7-x86/turbojpeg.dll new file mode 100644 index 000000000..4d9f76dff Binary files /dev/null and b/Software/Visual_Studio/Tango.RemoteDesktop/win7-x86/turbojpeg.dll differ diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/win7-x86/turbojpeg.dll.meta b/Software/Visual_Studio/Tango.RemoteDesktop/win7-x86/turbojpeg.dll.meta new file mode 100644 index 000000000..acfd633cc --- /dev/null +++ b/Software/Visual_Studio/Tango.RemoteDesktop/win7-x86/turbojpeg.dll.meta @@ -0,0 +1,87 @@ +fileFormatVersion: 2 +guid: 617193c2aec53e04c844c2c778c162b2 +timeCreated: 1523070844 +licenseType: Pro +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: x86 + DefaultValueInitialized: true + - first: + Facebook: Win + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Linux + second: + enabled: 1 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: LinuxUniversal + second: + enabled: 1 + settings: + CPU: x86 + - first: + Standalone: OSXIntel + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: OSXIntel64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Win + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None + userData: + assetBundleName: + assetBundleVariant: diff --git a/Software/Visual_Studio/Tango.SQLExaminer/SQLExaminer/Configurations/UpdateMachine.xml b/Software/Visual_Studio/Tango.SQLExaminer/SQLExaminer/Configurations/UpdateMachine.xml index d24d74337..7c4c17ea5 100644 Binary files a/Software/Visual_Studio/Tango.SQLExaminer/SQLExaminer/Configurations/UpdateMachine.xml and b/Software/Visual_Studio/Tango.SQLExaminer/SQLExaminer/Configurations/UpdateMachine.xml differ diff --git a/Software/Visual_Studio/Tango.Transport/Adapters/SignalRTransportAdapter.cs b/Software/Visual_Studio/Tango.Transport/Adapters/SignalRTransportAdapter.cs index f1d3e10aa..c1d3d4967 100644 --- a/Software/Visual_Studio/Tango.Transport/Adapters/SignalRTransportAdapter.cs +++ b/Software/Visual_Studio/Tango.Transport/Adapters/SignalRTransportAdapter.cs @@ -60,7 +60,7 @@ namespace Tango.Transport.Adapters /// public SignalRTransportAdapter() : base() { - WriteInterval = TimeSpan.FromSeconds(1); + WriteInterval = TimeSpan.FromMilliseconds(10); ComponentName = $"SignalR Adapter {_component_counter++}"; } diff --git a/Software/Visual_Studio/Tango.Transport/Adapters/TcpTransportAdapter.cs b/Software/Visual_Studio/Tango.Transport/Adapters/TcpTransportAdapter.cs index 38c577724..831f7c5dc 100644 --- a/Software/Visual_Studio/Tango.Transport/Adapters/TcpTransportAdapter.cs +++ b/Software/Visual_Studio/Tango.Transport/Adapters/TcpTransportAdapter.cs @@ -59,7 +59,7 @@ namespace Tango.Transport.Adapters Address = "127.0.0.1"; Port = 9999; WriteMode = TcpTransportAdapterWriteMode.Interval; - WriteInterval = TimeSpan.FromSeconds(1); + WriteInterval = TimeSpan.FromMilliseconds(10); } /// diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Startup.cs b/Software/Visual_Studio/Web/Tango.MachineService/Startup.cs index 8eeb65b78..2bd4fe872 100644 --- a/Software/Visual_Studio/Web/Tango.MachineService/Startup.cs +++ b/Software/Visual_Studio/Web/Tango.MachineService/Startup.cs @@ -1,4 +1,5 @@ -using Microsoft.Owin; +using Microsoft.AspNet.SignalR; +using Microsoft.Owin; using Microsoft.Owin.Cors; using Owin; using System; @@ -15,6 +16,7 @@ namespace Tango.MachineService { app.UseCors(CorsOptions.AllowAll); app.MapSignalR(); + GlobalHost.Configuration.MaxIncomingWebSocketMessageSize = null; // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=316888 } } -- cgit v1.3.1