From 76bbf4beee151f4639774dc7f53dc08b5e5fd2fb Mon Sep 17 00:00:00 2001 From: mort5161 Date: Fri, 25 Jul 2014 12:21:07 -0700 Subject: [PATCH] Added Desktop build + sample apps --- src/NmeaParser.Shared/NmeaFileDevice.cs | 145 + .../NmeaParser.Shared.projitems | 1 + src/NmeaParser.Shared/StreamDevice.cs | 3 + .../NmeaParser.WinPhone.csproj | 86 +- src/NmeaParser.sln | 91 +- src/NmeaSampleData.txt | 68084 ++++++++++++++++ .../SampleApp.Store.Shared/App.xaml | 7 + .../SampleApp.Store.Shared/App.xaml.cs | 137 + .../SampleApp.Store.Shared/MainPage.xaml | 15 + .../SampleApp.Store.Shared/MainPage.xaml.cs | 45 + .../SampleApp.Store.Shared.projitems | 28 + .../SampleApp.Store.Shared.shproj | 12 + .../Assets/Logo.scale-100.png | Bin 0 -> 801 bytes .../Assets/SmallLogo.scale-100.png | Bin 0 -> 329 bytes .../Assets/SplashScreen.scale-100.png | Bin 0 -> 2146 bytes .../Assets/StoreLogo.scale-100.png | Bin 0 -> 429 bytes .../Package.appxmanifest | 41 + .../Properties/AssemblyInfo.cs | 29 + .../SampleApp.Store.Windows.csproj | 142 + .../SampleApp.Store.Windows_TemporaryKey.pfx | Bin 0 -> 2512 bytes .../Assets/Logo.scale-240.png | Bin 0 -> 2516 bytes .../Assets/SmallLogo.scale-240.png | Bin 0 -> 753 bytes .../Assets/SplashScreen.scale-240.png | Bin 0 -> 14715 bytes .../Assets/Square71x71Logo.scale-240.png | Bin 0 -> 1122 bytes .../Assets/StoreLogo.scale-240.png | Bin 0 -> 2200 bytes .../Assets/WideLogo.scale-240.png | Bin 0 -> 4530 bytes .../Package.appxmanifest | 44 + .../Properties/AssemblyInfo.cs | 29 + .../SampleApp.Store.WindowsPhone.csproj | 123 + src/SampleApp.WinDesktop/App.config | 6 + src/SampleApp.WinDesktop/App.xaml | 8 + src/SampleApp.WinDesktop/App.xaml.cs | 17 + src/SampleApp.WinDesktop/MainWindow.xaml | 10 + src/SampleApp.WinDesktop/MainWindow.xaml.cs | 39 + .../Properties/AssemblyInfo.cs | 55 + .../Properties/Resources.Designer.cs | 71 + .../Properties/Resources.resx | 117 + .../Properties/Settings.Designer.cs | 30 + .../Properties/Settings.settings | 7 + .../SampleApp.WinDesktop.csproj | 116 + 40 files changed, 69507 insertions(+), 31 deletions(-) create mode 100644 src/NmeaParser.Shared/NmeaFileDevice.cs create mode 100644 src/NmeaSampleData.txt create mode 100644 src/SampleApp.Store/SampleApp.Store.Shared/App.xaml create mode 100644 src/SampleApp.Store/SampleApp.Store.Shared/App.xaml.cs create mode 100644 src/SampleApp.Store/SampleApp.Store.Shared/MainPage.xaml create mode 100644 src/SampleApp.Store/SampleApp.Store.Shared/MainPage.xaml.cs create mode 100644 src/SampleApp.Store/SampleApp.Store.Shared/SampleApp.Store.Shared.projitems create mode 100644 src/SampleApp.Store/SampleApp.Store.Shared/SampleApp.Store.Shared.shproj create mode 100644 src/SampleApp.Store/SampleApp.Store.Windows/Assets/Logo.scale-100.png create mode 100644 src/SampleApp.Store/SampleApp.Store.Windows/Assets/SmallLogo.scale-100.png create mode 100644 src/SampleApp.Store/SampleApp.Store.Windows/Assets/SplashScreen.scale-100.png create mode 100644 src/SampleApp.Store/SampleApp.Store.Windows/Assets/StoreLogo.scale-100.png create mode 100644 src/SampleApp.Store/SampleApp.Store.Windows/Package.appxmanifest create mode 100644 src/SampleApp.Store/SampleApp.Store.Windows/Properties/AssemblyInfo.cs create mode 100644 src/SampleApp.Store/SampleApp.Store.Windows/SampleApp.Store.Windows.csproj create mode 100644 src/SampleApp.Store/SampleApp.Store.Windows/SampleApp.Store.Windows_TemporaryKey.pfx create mode 100644 src/SampleApp.Store/SampleApp.Store.WindowsPhone/Assets/Logo.scale-240.png create mode 100644 src/SampleApp.Store/SampleApp.Store.WindowsPhone/Assets/SmallLogo.scale-240.png create mode 100644 src/SampleApp.Store/SampleApp.Store.WindowsPhone/Assets/SplashScreen.scale-240.png create mode 100644 src/SampleApp.Store/SampleApp.Store.WindowsPhone/Assets/Square71x71Logo.scale-240.png create mode 100644 src/SampleApp.Store/SampleApp.Store.WindowsPhone/Assets/StoreLogo.scale-240.png create mode 100644 src/SampleApp.Store/SampleApp.Store.WindowsPhone/Assets/WideLogo.scale-240.png create mode 100644 src/SampleApp.Store/SampleApp.Store.WindowsPhone/Package.appxmanifest create mode 100644 src/SampleApp.Store/SampleApp.Store.WindowsPhone/Properties/AssemblyInfo.cs create mode 100644 src/SampleApp.Store/SampleApp.Store.WindowsPhone/SampleApp.Store.WindowsPhone.csproj create mode 100644 src/SampleApp.WinDesktop/App.config create mode 100644 src/SampleApp.WinDesktop/App.xaml create mode 100644 src/SampleApp.WinDesktop/App.xaml.cs create mode 100644 src/SampleApp.WinDesktop/MainWindow.xaml create mode 100644 src/SampleApp.WinDesktop/MainWindow.xaml.cs create mode 100644 src/SampleApp.WinDesktop/Properties/AssemblyInfo.cs create mode 100644 src/SampleApp.WinDesktop/Properties/Resources.Designer.cs create mode 100644 src/SampleApp.WinDesktop/Properties/Resources.resx create mode 100644 src/SampleApp.WinDesktop/Properties/Settings.Designer.cs create mode 100644 src/SampleApp.WinDesktop/Properties/Settings.settings create mode 100644 src/SampleApp.WinDesktop/SampleApp.WinDesktop.csproj diff --git a/src/NmeaParser.Shared/NmeaFileDevice.cs b/src/NmeaParser.Shared/NmeaFileDevice.cs new file mode 100644 index 0000000..2adac80 --- /dev/null +++ b/src/NmeaParser.Shared/NmeaFileDevice.cs @@ -0,0 +1,145 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NmeaParser +{ + public class NmeaFileDevice : NmeaDevice + { +#if NETFX_CORE + Windows.Storage.IStorageFile m_filename; +#else + string m_filename; +#endif + BufferedStream m_stream; + int m_readSpeed; + /// + /// + /// + /// + /// The time to wait between each line being read in milliseconds +#if NETFX_CORE + public NmeaFileDevice(Windows.Storage.IStorageFile filename, int readSpeed = 200) +#else + public NmeaFileDevice(string filename, int readSpeed = 200) +#endif + { + m_filename = filename; + m_readSpeed = readSpeed; + } + +#if NETFX_CORE + protected async override Task OpenStreamAsync() + { + var stream = await m_filename.OpenStreamForReadAsync(); + StreamReader sr = new StreamReader(stream); + m_stream = new BufferedStream(sr, m_readSpeed); + return m_stream; +#else + protected override Task OpenStreamAsync() + { + StreamReader sr = System.IO.File.OpenText(m_filename); + m_stream = new BufferedStream(sr, m_readSpeed); + return Task.FromResult(m_stream); +#endif + } + + protected override Task CloseStreamAsync(System.IO.Stream stream) + { + m_stream.Dispose(); + return Task.FromResult(true); + } + + // stream that slowly populates a buffer from a StreamReader to simulate nmea messages coming in line by line + // at a steady stream + private class BufferedStream : Stream + { + StreamReader m_sr; + byte[] buffer = new byte[0]; + System.Threading.Timer timer; + object lockObj = new object(); + public BufferedStream(StreamReader stream, int readSpeed) + { + m_sr = stream; + timer = new System.Threading.Timer(OnRead, null, 0, readSpeed); //add a new line to buffer every 100 ms + } + private void OnRead(object state) + { + if (m_sr.EndOfStream) + m_sr.BaseStream.Seek(0, SeekOrigin.Begin); //start over + + //populate the buffer with a line + string line = m_sr.ReadLine() + '\n'; + var bytes = Encoding.UTF8.GetBytes(line); + lock (lockObj) + { + byte[] newBuffer = new byte[buffer.Length + bytes.Length]; + buffer.CopyTo(newBuffer, 0); + bytes.CopyTo(newBuffer, buffer.Length); + buffer = newBuffer; + } + } + public override bool CanRead { get { return true; } } + public override bool CanSeek { get { return false; } } + public override bool CanWrite { get { return false; } } + public override void Flush() { } + + public override long Length { get { return m_sr.BaseStream.Length; } } + + public override long Position + { + get { return m_sr.BaseStream.Position; } + set + { + throw new NotSupportedException(); + } + } + + public override int Read(byte[] buffer, int offset, int count) + { + lock (lockObj) + { + if(this.buffer.Length <= count) + { + int length = this.buffer.Length; + this.buffer.CopyTo(buffer, 0); + this.buffer = new byte[0]; + return length; + } + else + { + Array.Copy(this.buffer, buffer, count); + byte[] newBuffer = new byte[this.buffer.Length - count]; + Array.Copy(this.buffer, count, newBuffer, 0, newBuffer.Length); + this.buffer = newBuffer; + return count; + } + } + } + + public override long Seek(long offset, SeekOrigin origin) + { + throw new NotSupportedException(); + } + + public override void SetLength(long value) + { + throw new NotSupportedException(); + } + + public override void Write(byte[] buffer, int offset, int count) + { + throw new NotSupportedException(); + } + protected override void Dispose(bool disposing) + { + base.Dispose(disposing); + m_sr.Dispose(); + timer.Dispose(); + } + } + } +} diff --git a/src/NmeaParser.Shared/NmeaParser.Shared.projitems b/src/NmeaParser.Shared/NmeaParser.Shared.projitems index 5fd6b87..10fa91b 100644 --- a/src/NmeaParser.Shared/NmeaParser.Shared.projitems +++ b/src/NmeaParser.Shared/NmeaParser.Shared.projitems @@ -10,6 +10,7 @@ + diff --git a/src/NmeaParser.Shared/StreamDevice.cs b/src/NmeaParser.Shared/StreamDevice.cs index 70fa586..3c0a7f1 100644 --- a/src/NmeaParser.Shared/StreamDevice.cs +++ b/src/NmeaParser.Shared/StreamDevice.cs @@ -6,6 +6,9 @@ using System.Threading.Tasks; namespace NmeaParser { + /// + /// Generic stream device + /// public class StreamDevice : NmeaDevice { System.IO.Stream m_stream; diff --git a/src/NmeaParser.WinPhone/NmeaParser.WinPhone.csproj b/src/NmeaParser.WinPhone/NmeaParser.WinPhone.csproj index b20d139..8cb2e0b 100644 --- a/src/NmeaParser.WinPhone/NmeaParser.WinPhone.csproj +++ b/src/NmeaParser.WinPhone/NmeaParser.WinPhone.csproj @@ -1,56 +1,100 @@  + Debug AnyCPU - 10.0.20506 + 8.0.30703 2.0 {EA42A713-BC6E-4914-B54B-47C0891B7421} - {C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} Library Properties NmeaParser NmeaParser.WinPhone - WindowsPhone - v8.0 - $(TargetFrameworkVersion) - false - true - 11.0 - true + en-US + 8.1 + 12 + 512 + {76F1466A-8B6D-4E39-A767-685A06062A39};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} true full false - ..\Bin\Debug\ - DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE - true - true + bin\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_PHONE_APP prompt 4 pdbonly true - ..\Bin\Release\ - TRACE;SILVERLIGHT;WINDOWS_PHONE - true - true + bin\Release\ + TRACE;NETFX_CORE;WINDOWS_PHONE_APP prompt 4 + + true + bin\ARM\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_PHONE_APP + ;2008 + full + ARM + false + prompt + true + + + bin\ARM\Release\ + TRACE;NETFX_CORE;WINDOWS_PHONE_APP + true + ;2008 + pdbonly + ARM + false + prompt + true + + + true + bin\x86\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_PHONE_APP + ;2008 + full + x86 + false + prompt + true + + + bin\x86\Release\ + TRACE;NETFX_CORE;WINDOWS_PHONE_APP + true + ;2008 + pdbonly + x86 + false + prompt + true + + + + BluetoothDevice.cs - - - - + + 12.0 + + + WindowsPhoneApp + + + + {62a55887-10f5-40d2-9352-96246d1b11d3} + NmeaParser.WinStore + + + + + + + + Designer + + + + + + NmeaSampleData.txt + + + + + + + + 12.0 + + + + + \ No newline at end of file diff --git a/src/SampleApp.Store/SampleApp.Store.Windows/SampleApp.Store.Windows_TemporaryKey.pfx b/src/SampleApp.Store/SampleApp.Store.Windows/SampleApp.Store.Windows_TemporaryKey.pfx new file mode 100644 index 0000000000000000000000000000000000000000..5eea27931339af12dd51d07ae17620c96ab6dde4 GIT binary patch literal 2512 zcmY+Fc|6qX7stP|m@)X-CEHAv6f(wct}YEtM#f-pOJtX2>`63;p&>+#$x_LLxX7d- zEn~@EAxqYjHCeJ&%H`rW-PiAT@9Vyv*Lj|E-k;~3*ZJo;4~B;50)rqJ8X^UTP^S~< zKmG%PgIF{~G?a$8z{6n}8sFBxB)-p38s8ib&+u#lCiuTBApsDWMT72QXwWT;JWSyK zm{(jF%HI-a9^!TH@-P?-?}gH!Bkv~MXr7gM-TG^_exHx!1xj*uU$)*GwRtG^(k->6 z53{{oUjgY{L2lKbs!4C;%rq$Pyc<+2^1M2!+T*yd|4f-o_&Z&N+m)~16tfm6qk%$D znuUh<+Q(w+mwadyKB>=-Nv6|O#Yf%!cSf#hZD}k8c%Di(?$XyMKYga%68eT3R>P`D zFv>ll#oh?}z<#K$hP24W#>cg^-Iv*Cxt-iXVXVcazaK;&k}Vp)CkUSKNp{#Vck-}; z2zDY+QgEH}Q_DG=EWi^#ii!TXsdJHABE4c0YIW#3)wm>WNLgN!R_Tb1=YAZniOo^s zzBd3j?B#dT8K8~f>d5p%Cu(Oqz6_7s*AsOa|p56`k)F~iA=~jrbbNuCec&mRogM4dxCg{O}@B8P7+w#Rmr!V@Zp4enchs;Q+zc7QzMXW6Q4(YOKDTQj-@8 z#^yX`K2}^&oyg?QhuBb&1kcVWr41aBOd13<+cMC5M|AJk>3!!gl8LuDPZWtW>r(#is<9i$*wLG7C+kz?raAoN zm0hnk(yMNUhsu`?R{DhDL+o|@upmngL5T0~NO3qV@&fC2 zd6U2{f}`tZ0>5b49j%V18>&UiG+YJ?+Ih`Y}l+HpN33vO`bR@ z^?cRx@oNyfvKjIL_!LY2yMBakT;hiJz*xKMuMbFJRcbTum<^+Sb!o2QCl8$Mm|oh5 zuIVt%96F zzQ3rMh46Ib%GQcD%Je~oJkDDyX)$}{rDB*l zWusrZt(gsV5Kb~Xlv7HnFfv=5mk`N*K%Gjs{`FFK`g6%-d5cA1MnN1X@Y%$eUQ|SF za8%lR5k+g5aNN@rrOB+ih5%&~5a(O=s_Vnk^sBxaj(2bG!dt4%40yg5pv|M+Jk<*@1iUb3VF(Qv2nwPZih;CkktDzx z@aIY4KnQT2XXk(j-~eFH+kcW^z?T=9^ZaNal*dANaX7DBDB$;3)&aowuX~Za$eY(h zIEDrZ`MYyCj75XE^N^We-zNaMn3H4$nO;`_`b8(fA;6dkEcNnKjj#S8f;H| z{Irdyb6qhF&-ts!^WQ2CH}1xRgo?YQ%$7{9jc92S$fJ%DHXBL#uFPDf>T+?AzW5wL zqcjMu$Y)V8`QkO!9IpRRESs1nJC~qh{rGtQ*2VAS%`l1KSl#^`Y{7s((rlS^g)TZj z1H#!%A5FQ-conFVW@OX|cVDeDo?n^Y0ih%GW_C;4Z^c`_p^n&m@xlFOMO!nIxuaXCgGBo}PS!KkAbdki4Ys!BKH*&|0-*idQx#Dxew+ z#KpbO8E8n{1*BLATk(|HORfI4^_@c|Px6s4V}(A(vZ8xPlx}9MYA>Ru{>?gK8zh(< zsq5C-|0tt8ZUY<+Rl;x>%1r1DoXUK@(7t{CpVZ%ub&PBkoPX0|_jV)SrDyt1l_fV8 zoj`Uw?piK+RiL-zuxf$18O5aS7u@x$?46`ITmIAEf~V#Zsp}?%O1p^0(DsUQYU_Pc z1o4H#VU&dUh1aC_`)3VF?>#2bYGIjZpPl(LOXtR>%YRFp`}Bv&S4=E)iei2_pwW-I z*U`T>_REI^hgGK2>V52b%)C#060*)gJ4@_DlPuDhAKa~6yN)O=pf2dC z>($r!EZ7YmoR1k3lgMpX#~5Q!7&weiLl^>zK9jo>G`Oy9gvZ7%= literal 0 HcmV?d00001 diff --git a/src/SampleApp.Store/SampleApp.Store.WindowsPhone/Assets/Logo.scale-240.png b/src/SampleApp.Store/SampleApp.Store.WindowsPhone/Assets/Logo.scale-240.png new file mode 100644 index 0000000000000000000000000000000000000000..76921ca99715449322ce4575b714262598766ebb GIT binary patch literal 2516 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 aeE1)epL)B$w-u`Z0000SK>Qt}(H-q=T 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 gV5~u<%>&ppbSls(D;2H23k0DxD+50(=0|+ + + + + + + + + SampleApp.Store.WindowsPhone + mort5161 + Assets\StoreLogo.png + + + + 6.3.1 + 6.3.1 + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SampleApp.Store/SampleApp.Store.WindowsPhone/Properties/AssemblyInfo.cs b/src/SampleApp.Store/SampleApp.Store.WindowsPhone/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..ff8eda2 --- /dev/null +++ b/src/SampleApp.Store/SampleApp.Store.WindowsPhone/Properties/AssemblyInfo.cs @@ -0,0 +1,29 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("SampleApp.Store.WindowsPhone")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("SampleApp.Store.WindowsPhone")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: ComVisible(false)] \ No newline at end of file diff --git a/src/SampleApp.Store/SampleApp.Store.WindowsPhone/SampleApp.Store.WindowsPhone.csproj b/src/SampleApp.Store/SampleApp.Store.WindowsPhone/SampleApp.Store.WindowsPhone.csproj new file mode 100644 index 0000000..b3f35c7 --- /dev/null +++ b/src/SampleApp.Store/SampleApp.Store.WindowsPhone/SampleApp.Store.WindowsPhone.csproj @@ -0,0 +1,123 @@ + + + + + Debug + AnyCPU + {9EE3EA1D-F28C-4CF2-B540-DB0415050D5F} + AppContainerExe + Properties + SampleApp.Store + SampleApp.Store.WindowsPhone + en-US + 8.1 + 12 + 512 + {76F1466A-8B6D-4E39-A767-685A06062A39};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_PHONE_APP + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE;NETFX_CORE;WINDOWS_PHONE_APP + prompt + 4 + + + true + bin\ARM\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_PHONE_APP + ;2008 + full + ARM + false + prompt + true + + + bin\ARM\Release\ + TRACE;NETFX_CORE;WINDOWS_PHONE_APP + true + ;2008 + pdbonly + ARM + false + prompt + true + + + true + bin\x86\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_PHONE_APP + ;2008 + full + x86 + false + prompt + true + + + bin\x86\Release\ + TRACE;NETFX_CORE;WINDOWS_PHONE_APP + true + ;2008 + pdbonly + x86 + false + prompt + true + + + + + {ea42a713-bc6e-4914-b54b-47c0891b7421} + NmeaParser.WinPhone + + + + + + + + Designer + + + + + NmeaSampleData.txt + + + + + + + + + + 12.0 + + + WindowsPhoneApp + + + + + \ No newline at end of file diff --git a/src/SampleApp.WinDesktop/App.config b/src/SampleApp.WinDesktop/App.config new file mode 100644 index 0000000..8e15646 --- /dev/null +++ b/src/SampleApp.WinDesktop/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/SampleApp.WinDesktop/App.xaml b/src/SampleApp.WinDesktop/App.xaml new file mode 100644 index 0000000..8b4ad6b --- /dev/null +++ b/src/SampleApp.WinDesktop/App.xaml @@ -0,0 +1,8 @@ + + + + + diff --git a/src/SampleApp.WinDesktop/App.xaml.cs b/src/SampleApp.WinDesktop/App.xaml.cs new file mode 100644 index 0000000..12062b4 --- /dev/null +++ b/src/SampleApp.WinDesktop/App.xaml.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Linq; +using System.Threading.Tasks; +using System.Windows; + +namespace SampleApp.WinDesktop +{ + /// + /// Interaction logic for App.xaml + /// + public partial class App : Application + { + } +} diff --git a/src/SampleApp.WinDesktop/MainWindow.xaml b/src/SampleApp.WinDesktop/MainWindow.xaml new file mode 100644 index 0000000..c0b6ab6 --- /dev/null +++ b/src/SampleApp.WinDesktop/MainWindow.xaml @@ -0,0 +1,10 @@ + + + + + diff --git a/src/SampleApp.WinDesktop/MainWindow.xaml.cs b/src/SampleApp.WinDesktop/MainWindow.xaml.cs new file mode 100644 index 0000000..83e99f1 --- /dev/null +++ b/src/SampleApp.WinDesktop/MainWindow.xaml.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace SampleApp.WinDesktop +{ + /// + /// Interaction logic for MainWindow.xaml + /// + public partial class MainWindow : Window + { + public MainWindow() + { + InitializeComponent(); + var device = new NmeaParser.NmeaFileDevice("NmeaSampleData.txt"); + device.MessageReceived += device_MessageReceived; + device.OpenAsync(); + } + + private void device_MessageReceived(NmeaParser.NmeaDevice sender, NmeaParser.Nmea.NmeaMessage args) + { + Dispatcher.BeginInvoke((Action) delegate() + { + output.Text += args.MessageType + ": " + args.ToString() + '\n'; + }); + } + } +} diff --git a/src/SampleApp.WinDesktop/Properties/AssemblyInfo.cs b/src/SampleApp.WinDesktop/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..a5ad37e --- /dev/null +++ b/src/SampleApp.WinDesktop/Properties/AssemblyInfo.cs @@ -0,0 +1,55 @@ +using System.Reflection; +using System.Resources; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Windows; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("SampleApp.WinDesktop")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("SampleApp.WinDesktop")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +//In order to begin building localizable applications, set +//CultureYouAreCodingWith in your .csproj file +//inside a . For example, if you are using US english +//in your source files, set the to en-US. Then uncomment +//the NeutralResourceLanguage attribute below. Update the "en-US" in +//the line below to match the UICulture setting in the project file. + +//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] + + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located + //(used if a resource is not found in the page, + // or application resource dictionaries) + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located + //(used if a resource is not found in the page, + // app, or any theme specific resource dictionaries) +)] + + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/SampleApp.WinDesktop/Properties/Resources.Designer.cs b/src/SampleApp.WinDesktop/Properties/Resources.Designer.cs new file mode 100644 index 0000000..b8355be --- /dev/null +++ b/src/SampleApp.WinDesktop/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.34014 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace SampleApp.WinDesktop.Properties +{ + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SampleApp.WinDesktop.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/src/SampleApp.WinDesktop/Properties/Resources.resx b/src/SampleApp.WinDesktop/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/src/SampleApp.WinDesktop/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/src/SampleApp.WinDesktop/Properties/Settings.Designer.cs b/src/SampleApp.WinDesktop/Properties/Settings.Designer.cs new file mode 100644 index 0000000..9a973f9 --- /dev/null +++ b/src/SampleApp.WinDesktop/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.34014 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace SampleApp.WinDesktop.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/src/SampleApp.WinDesktop/Properties/Settings.settings b/src/SampleApp.WinDesktop/Properties/Settings.settings new file mode 100644 index 0000000..033d7a5 --- /dev/null +++ b/src/SampleApp.WinDesktop/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/SampleApp.WinDesktop/SampleApp.WinDesktop.csproj b/src/SampleApp.WinDesktop/SampleApp.WinDesktop.csproj new file mode 100644 index 0000000..46e6987 --- /dev/null +++ b/src/SampleApp.WinDesktop/SampleApp.WinDesktop.csproj @@ -0,0 +1,116 @@ + + + + + Debug + AnyCPU + {5DB6C7C7-A19C-4BE3-AFE6-26E3061DA01F} + WinExe + Properties + SampleApp.WinDesktop + SampleApp.WinDesktop + v4.5 + 512 + {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 4 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + 4.0 + + + + + + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + App.xaml + Code + + + MainWindow.xaml + Code + + + + + Code + + + True + True + Resources.resx + + + True + Settings.settings + True + + + ResXFileCodeGenerator + Resources.Designer.cs + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + + + + + {df711ab9-f14e-4f1f-b8f2-b6ddc4691554} + NmeaParser.WinDesktop + + + + + NmeaSampleData.txt + PreserveNewest + + + + + \ No newline at end of file