├── .gitattributes
├── .gitignore
├── .gitmodules
├── LICENSE
├── README.md
├── win10
├── RemoteBlinky
│ ├── RemoteBlinky.sln
│ └── RemoteBlinky
│ │ ├── App.xaml
│ │ ├── App.xaml.cs
│ │ ├── ApplicationInsights.config
│ │ ├── Assets
│ │ ├── LockScreenLogo.scale-200.png
│ │ ├── SplashScreen.scale-200.png
│ │ ├── Square150x150Logo.scale-200.png
│ │ ├── Square44x44Logo.scale-200.png
│ │ ├── Square44x44Logo.targetsize-24_altform-unplated.png
│ │ ├── StoreLogo.png
│ │ └── Wide310x150Logo.scale-200.png
│ │ ├── Communication
│ │ ├── Connection.cs
│ │ └── Connections.cs
│ │ ├── ConnectionPage.xaml
│ │ ├── ConnectionPage.xaml.cs
│ │ ├── MainPage.xaml
│ │ ├── MainPage.xaml.cs
│ │ ├── Package.appxmanifest
│ │ ├── Properties
│ │ ├── AssemblyInfo.cs
│ │ └── Default.rd.xml
│ │ ├── RemoteBlinky.csproj
│ │ ├── Service References
│ │ └── Application Insights
│ │ │ └── ConnectedService.json
│ │ ├── project.json
│ │ └── project.lock.json
└── remote-controlled-car
│ ├── remote-controlled-car.sln
│ └── remote-controlled-car
│ ├── App.xaml
│ ├── App.xaml.cs
│ ├── ApplicationInsights.config
│ ├── Assets
│ ├── 01.png
│ ├── LockScreenLogo.scale-200.png
│ ├── SplashScreen.scale-200.png
│ ├── Square150x150Logo.scale-200.png
│ ├── Square44x44Logo.scale-200.png
│ ├── Square44x44Logo.targetsize-24_altform-unplated.png
│ ├── StoreLogo.png
│ └── Wide310x150Logo.scale-200.png
│ ├── Communication
│ ├── Connection.cs
│ └── Connections.cs
│ ├── ControlPage.xaml
│ ├── ControlPage.xaml.cs
│ ├── ControlPageMaisto.xaml
│ ├── ControlPageMaisto.xaml.cs
│ ├── MainPage.xaml
│ ├── MainPage.xaml.cs
│ ├── Package.appxmanifest
│ ├── Properties
│ ├── AssemblyInfo.cs
│ └── Default.rd.xml
│ ├── Service References
│ └── Application Insights
│ │ └── ConnectedService.json
│ ├── project.json
│ ├── project.lock.json
│ └── remote-controlled-car.csproj
└── win8_1
└── RemoteBlinky
├── RemoteBlinky.sln
└── RemoteBlinky
├── RemoteBlinky.Shared
├── App.xaml
├── App.xaml.cs
├── RemoteBlinky.Shared.projitems
└── RemoteBlinky.Shared.shproj
├── RemoteBlinky.Windows
├── Assets
│ ├── Logo.scale-100.png
│ ├── SmallLogo.scale-100.png
│ ├── SplashScreen.scale-100.png
│ └── StoreLogo.scale-100.png
├── MainPage.xaml
├── MainPage.xaml.cs
├── Package.appxmanifest
├── Properties
│ └── AssemblyInfo.cs
└── RemoteBlinky.Windows.csproj
└── RemoteBlinky.WindowsPhone
├── Assets
├── Logo.scale-240.png
├── SmallLogo.scale-240.png
├── SplashScreen.scale-240.png
├── Square71x71Logo.scale-240.png
├── StoreLogo.scale-240.png
└── WideLogo.scale-240.png
├── MainPage.xaml
├── MainPage.xaml.cs
├── Package.appxmanifest
├── Properties
└── AssemblyInfo.cs
└── RemoteBlinky.WindowsPhone.csproj
/.gitattributes:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Set default behavior to automatically normalize line endings.
3 | ###############################################################################
4 | * text=auto
5 |
6 | ###############################################################################
7 | # Set default behavior for command prompt diff.
8 | #
9 | # This is need for earlier builds of msysgit that does not have it on by
10 | # default for csharp files.
11 | # Note: This is only used by command line
12 | ###############################################################################
13 | #*.cs diff=csharp
14 |
15 | ###############################################################################
16 | # Set the merge driver for project and solution files
17 | #
18 | # Merging from the command prompt will add diff markers to the files if there
19 | # are conflicts (Merging from VS is not affected by the settings below, in VS
20 | # the diff markers are never inserted). Diff markers may cause the following
21 | # file extensions to fail to load in VS. An alternative would be to treat
22 | # these files as binary and thus will always conflict and require user
23 | # intervention with every merge. To do so, just uncomment the entries below
24 | ###############################################################################
25 | #*.sln merge=binary
26 | #*.csproj merge=binary
27 | #*.vbproj merge=binary
28 | #*.vcxproj merge=binary
29 | #*.vcproj merge=binary
30 | #*.dbproj merge=binary
31 | #*.fsproj merge=binary
32 | #*.lsproj merge=binary
33 | #*.wixproj merge=binary
34 | #*.modelproj merge=binary
35 | #*.sqlproj merge=binary
36 | #*.wwaproj merge=binary
37 |
38 | ###############################################################################
39 | # behavior for image files
40 | #
41 | # image files are treated as binary by default.
42 | ###############################################################################
43 | #*.jpg binary
44 | #*.png binary
45 | #*.gif binary
46 |
47 | ###############################################################################
48 | # diff behavior for common document formats
49 | #
50 | # Convert binary document formats to text before diffing them. This feature
51 | # is only available from the command line. Turn it on by uncommenting the
52 | # entries below.
53 | ###############################################################################
54 | #*.doc diff=astextplain
55 | #*.DOC diff=astextplain
56 | #*.docx diff=astextplain
57 | #*.DOCX diff=astextplain
58 | #*.dot diff=astextplain
59 | #*.DOT diff=astextplain
60 | #*.pdf diff=astextplain
61 | #*.PDF diff=astextplain
62 | #*.rtf diff=astextplain
63 | #*.RTF diff=astextplain
64 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 |
4 | # User-specific files
5 | *.suo
6 | *.user
7 | *.userosscache
8 | *.sln.docstates
9 |
10 | # User-specific files (MonoDevelop/Xamarin Studio)
11 | *.userprefs
12 |
13 | # Build results
14 | [Dd]ebug/
15 | [Dd]ebugPublic/
16 | [Rr]elease/
17 | [Rr]eleases/
18 | x64/
19 | x86/
20 | build/
21 | bld/
22 | [Bb]in/
23 | [Oo]bj/
24 |
25 | # Visual Studo 2015 cache/options directory
26 | .vs/
27 |
28 | # MSTest test Results
29 | [Tt]est[Rr]esult*/
30 | [Bb]uild[Ll]og.*
31 |
32 | # NUNIT
33 | *.VisualState.xml
34 | TestResult.xml
35 |
36 | # Build Results of an ATL Project
37 | [Dd]ebugPS/
38 | [Rr]eleasePS/
39 | dlldata.c
40 |
41 | *_i.c
42 | *_p.c
43 | *_i.h
44 | *.ilk
45 | *.meta
46 | *.obj
47 | *.pch
48 | *.pdb
49 | *.pgc
50 | *.pgd
51 | *.rsp
52 | *.sbr
53 | *.tlb
54 | *.tli
55 | *.tlh
56 | *.tmp
57 | *.tmp_proj
58 | *.log
59 | *.vspscc
60 | *.vssscc
61 | .builds
62 | *.pidb
63 | *.svclog
64 | *.scc
65 |
66 | # Chutzpah Test files
67 | _Chutzpah*
68 |
69 | # Visual C++ cache files
70 | ipch/
71 | *.aps
72 | *.ncb
73 | *.opensdf
74 | *.sdf
75 | *.cachefile
76 |
77 | # Visual Studio profiler
78 | *.psess
79 | *.vsp
80 | *.vspx
81 |
82 | # TFS 2012 Local Workspace
83 | $tf/
84 |
85 | # Guidance Automation Toolkit
86 | *.gpState
87 |
88 | # ReSharper is a .NET coding add-in
89 | _ReSharper*/
90 | *.[Rr]e[Ss]harper
91 | *.DotSettings.user
92 |
93 | # JustCode is a .NET coding addin-in
94 | .JustCode
95 |
96 | # TeamCity is a build add-in
97 | _TeamCity*
98 |
99 | # DotCover is a Code Coverage Tool
100 | *.dotCover
101 |
102 | # NCrunch
103 | _NCrunch_*
104 | .*crunch*.local.xml
105 |
106 | # MightyMoose
107 | *.mm.*
108 | AutoTest.Net/
109 |
110 | # Web workbench (sass)
111 | .sass-cache/
112 |
113 | # Installshield output folder
114 | [Ee]xpress/
115 |
116 | # DocProject is a documentation generator add-in
117 | DocProject/buildhelp/
118 | DocProject/Help/*.HxT
119 | DocProject/Help/*.HxC
120 | DocProject/Help/*.hhc
121 | DocProject/Help/*.hhk
122 | DocProject/Help/*.hhp
123 | DocProject/Help/Html2
124 | DocProject/Help/html
125 |
126 | # Click-Once directory
127 | publish/
128 |
129 | # Publish Web Output
130 | *.[Pp]ublish.xml
131 | *.azurePubxml
132 | # TODO: Comment the next line if you want to checkin your web deploy settings
133 | # but database connection strings (with potential passwords) will be unencrypted
134 | *.pubxml
135 | *.publishproj
136 |
137 | # NuGet Packages
138 | *.nupkg
139 | # The packages folder can be ignored because of Package Restore
140 | **/packages/*
141 | # except build/, which is used as an MSBuild target.
142 | !**/packages/build/
143 | # Uncomment if necessary however generally it will be regenerated when needed
144 | #!**/packages/repositories.config
145 |
146 | # Windows Azure Build Output
147 | csx/
148 | *.build.csdef
149 |
150 | # Windows Store app package directory
151 | AppPackages/
152 |
153 | # Others
154 | *.[Cc]ache
155 | ClientBin/
156 | [Ss]tyle[Cc]op.*
157 | ~$*
158 | *~
159 | *.dbmdl
160 | *.dbproj.schemaview
161 | *.pfx
162 | *.publishsettings
163 | node_modules/
164 | bower_components/
165 |
166 | # RIA/Silverlight projects
167 | Generated_Code/
168 |
169 | # Backup & report files from converting an old project file
170 | # to a newer Visual Studio version. Backup files are not needed,
171 | # because we have git ;-)
172 | _UpgradeReport_Files/
173 | Backup*/
174 | UpgradeLog*.XML
175 | UpgradeLog*.htm
176 |
177 | # SQL Server files
178 | *.mdf
179 | *.ldf
180 |
181 | # Business Intelligence projects
182 | *.rdl.data
183 | *.bim.layout
184 | *.bim_*.settings
185 |
186 | # Microsoft Fakes
187 | FakesAssemblies/
188 |
189 | # Node.js Tools for Visual Studio
190 | .ntvs_analysis.dat
191 |
192 | # Visual Studio 6 build log
193 | *.plg
194 |
195 | # Visual Studio 6 workspace options file
196 | *.opt
197 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "remote-wiring"]
2 | path = remote-wiring
3 | url = https://github.com/ms-iot/remote-wiring.git
4 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2015,
2 | All rights reserved.
3 |
4 | Redistribution and use in source and binary forms, with or without
5 | modification, are permitted provided that the following conditions are met:
6 |
7 | * Redistributions of source code must retain the above copyright notice, this
8 | list of conditions and the following disclaimer.
9 |
10 | * Redistributions in binary form must reproduce the above copyright notice,
11 | this list of conditions and the following disclaimer in the documentation
12 | and/or other materials provided with the distribution.
13 |
14 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
18 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
20 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
21 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
22 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 |
25 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Windows Remote Arduino Samples
2 |
3 | This repository contains various project solutions which utilize Windows Remote Arduino.
4 |
5 |
6 | **Do not download this repository as a .zip file.**
7 |
8 | The /remote-wiring/ folder should contain the current state of remote-wiring repository located at:
9 | http://github.com/ms-iot/remote-wiring.git
10 |
11 | If you download this repository as a zip file, you will not properly clone the remote-wiring repository as part of this package.
12 |
13 | ## How to Clone
14 | To properly clone this repository and its submodule from command line:
15 | ```
16 | git clone --recursive https://github.com/ms-iot/windows-remote-arduino-samples.git
17 | ```
18 |
19 |
20 | ===
21 |
22 | This project has adopted the [Microsoft Open Source Code of Conduct](http://microsoft.github.io/codeofconduct). For more information see the [Code of Conduct FAQ](http://microsoft.github.io/codeofconduct/faq.md) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
23 |
--------------------------------------------------------------------------------
/win10/RemoteBlinky/RemoteBlinky.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 14
4 | VisualStudioVersion = 14.0.23107.0
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RemoteBlinky", "RemoteBlinky\RemoteBlinky.csproj", "{5874144C-87D4-4042-833A-8F7D1EB644DF}"
7 | EndProject
8 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.Maker.Firmata", "..\..\remote-wiring\Microsoft.Maker.win10\Microsoft.Maker.Firmata\Microsoft.Maker.Firmata.vcxproj", "{F0A53BC9-C617-47DD-8B68-F91E3502D633}"
9 | EndProject
10 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.Maker.RemoteWiring", "..\..\remote-wiring\Microsoft.Maker.win10\Microsoft.Maker.RemoteWiring\Microsoft.Maker.RemoteWiring.vcxproj", "{5A8B1BB1-7CD5-47C4-A1F7-D7BCF5FACAD1}"
11 | EndProject
12 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.Maker.Serial", "..\..\remote-wiring\Microsoft.Maker.win10\Microsoft.Maker.Serial\Microsoft.Maker.Serial.vcxproj", "{8376216C-282A-4927-B9EF-C2D545FE0BCA}"
13 | EndProject
14 | Global
15 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
16 | Debug|ARM = Debug|ARM
17 | Debug|x64 = Debug|x64
18 | Debug|x86 = Debug|x86
19 | Release|ARM = Release|ARM
20 | Release|x64 = Release|x64
21 | Release|x86 = Release|x86
22 | EndGlobalSection
23 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
24 | {5874144C-87D4-4042-833A-8F7D1EB644DF}.Debug|ARM.ActiveCfg = Debug|ARM
25 | {5874144C-87D4-4042-833A-8F7D1EB644DF}.Debug|ARM.Build.0 = Debug|ARM
26 | {5874144C-87D4-4042-833A-8F7D1EB644DF}.Debug|ARM.Deploy.0 = Debug|ARM
27 | {5874144C-87D4-4042-833A-8F7D1EB644DF}.Debug|x64.ActiveCfg = Debug|x64
28 | {5874144C-87D4-4042-833A-8F7D1EB644DF}.Debug|x64.Build.0 = Debug|x64
29 | {5874144C-87D4-4042-833A-8F7D1EB644DF}.Debug|x64.Deploy.0 = Debug|x64
30 | {5874144C-87D4-4042-833A-8F7D1EB644DF}.Debug|x86.ActiveCfg = Debug|x86
31 | {5874144C-87D4-4042-833A-8F7D1EB644DF}.Debug|x86.Build.0 = Debug|x86
32 | {5874144C-87D4-4042-833A-8F7D1EB644DF}.Debug|x86.Deploy.0 = Debug|x86
33 | {5874144C-87D4-4042-833A-8F7D1EB644DF}.Release|ARM.ActiveCfg = Release|ARM
34 | {5874144C-87D4-4042-833A-8F7D1EB644DF}.Release|ARM.Build.0 = Release|ARM
35 | {5874144C-87D4-4042-833A-8F7D1EB644DF}.Release|ARM.Deploy.0 = Release|ARM
36 | {5874144C-87D4-4042-833A-8F7D1EB644DF}.Release|x64.ActiveCfg = Release|x64
37 | {5874144C-87D4-4042-833A-8F7D1EB644DF}.Release|x64.Build.0 = Release|x64
38 | {5874144C-87D4-4042-833A-8F7D1EB644DF}.Release|x64.Deploy.0 = Release|x64
39 | {5874144C-87D4-4042-833A-8F7D1EB644DF}.Release|x86.ActiveCfg = Release|x86
40 | {5874144C-87D4-4042-833A-8F7D1EB644DF}.Release|x86.Build.0 = Release|x86
41 | {5874144C-87D4-4042-833A-8F7D1EB644DF}.Release|x86.Deploy.0 = Release|x86
42 | {F0A53BC9-C617-47DD-8B68-F91E3502D633}.Debug|ARM.ActiveCfg = Debug|ARM
43 | {F0A53BC9-C617-47DD-8B68-F91E3502D633}.Debug|ARM.Build.0 = Debug|ARM
44 | {F0A53BC9-C617-47DD-8B68-F91E3502D633}.Debug|x64.ActiveCfg = Debug|x64
45 | {F0A53BC9-C617-47DD-8B68-F91E3502D633}.Debug|x64.Build.0 = Debug|x64
46 | {F0A53BC9-C617-47DD-8B68-F91E3502D633}.Debug|x86.ActiveCfg = Debug|Win32
47 | {F0A53BC9-C617-47DD-8B68-F91E3502D633}.Debug|x86.Build.0 = Debug|Win32
48 | {F0A53BC9-C617-47DD-8B68-F91E3502D633}.Release|ARM.ActiveCfg = Release|ARM
49 | {F0A53BC9-C617-47DD-8B68-F91E3502D633}.Release|ARM.Build.0 = Release|ARM
50 | {F0A53BC9-C617-47DD-8B68-F91E3502D633}.Release|x64.ActiveCfg = Release|x64
51 | {F0A53BC9-C617-47DD-8B68-F91E3502D633}.Release|x64.Build.0 = Release|x64
52 | {F0A53BC9-C617-47DD-8B68-F91E3502D633}.Release|x86.ActiveCfg = Release|Win32
53 | {F0A53BC9-C617-47DD-8B68-F91E3502D633}.Release|x86.Build.0 = Release|Win32
54 | {5A8B1BB1-7CD5-47C4-A1F7-D7BCF5FACAD1}.Debug|ARM.ActiveCfg = Debug|ARM
55 | {5A8B1BB1-7CD5-47C4-A1F7-D7BCF5FACAD1}.Debug|ARM.Build.0 = Debug|ARM
56 | {5A8B1BB1-7CD5-47C4-A1F7-D7BCF5FACAD1}.Debug|x64.ActiveCfg = Debug|x64
57 | {5A8B1BB1-7CD5-47C4-A1F7-D7BCF5FACAD1}.Debug|x64.Build.0 = Debug|x64
58 | {5A8B1BB1-7CD5-47C4-A1F7-D7BCF5FACAD1}.Debug|x86.ActiveCfg = Debug|Win32
59 | {5A8B1BB1-7CD5-47C4-A1F7-D7BCF5FACAD1}.Debug|x86.Build.0 = Debug|Win32
60 | {5A8B1BB1-7CD5-47C4-A1F7-D7BCF5FACAD1}.Release|ARM.ActiveCfg = Release|ARM
61 | {5A8B1BB1-7CD5-47C4-A1F7-D7BCF5FACAD1}.Release|ARM.Build.0 = Release|ARM
62 | {5A8B1BB1-7CD5-47C4-A1F7-D7BCF5FACAD1}.Release|x64.ActiveCfg = Release|x64
63 | {5A8B1BB1-7CD5-47C4-A1F7-D7BCF5FACAD1}.Release|x64.Build.0 = Release|x64
64 | {5A8B1BB1-7CD5-47C4-A1F7-D7BCF5FACAD1}.Release|x86.ActiveCfg = Release|Win32
65 | {5A8B1BB1-7CD5-47C4-A1F7-D7BCF5FACAD1}.Release|x86.Build.0 = Release|Win32
66 | {8376216C-282A-4927-B9EF-C2D545FE0BCA}.Debug|ARM.ActiveCfg = Debug|ARM
67 | {8376216C-282A-4927-B9EF-C2D545FE0BCA}.Debug|ARM.Build.0 = Debug|ARM
68 | {8376216C-282A-4927-B9EF-C2D545FE0BCA}.Debug|x64.ActiveCfg = Debug|x64
69 | {8376216C-282A-4927-B9EF-C2D545FE0BCA}.Debug|x64.Build.0 = Debug|x64
70 | {8376216C-282A-4927-B9EF-C2D545FE0BCA}.Debug|x86.ActiveCfg = Debug|Win32
71 | {8376216C-282A-4927-B9EF-C2D545FE0BCA}.Debug|x86.Build.0 = Debug|Win32
72 | {8376216C-282A-4927-B9EF-C2D545FE0BCA}.Release|ARM.ActiveCfg = Release|ARM
73 | {8376216C-282A-4927-B9EF-C2D545FE0BCA}.Release|ARM.Build.0 = Release|ARM
74 | {8376216C-282A-4927-B9EF-C2D545FE0BCA}.Release|x64.ActiveCfg = Release|x64
75 | {8376216C-282A-4927-B9EF-C2D545FE0BCA}.Release|x64.Build.0 = Release|x64
76 | {8376216C-282A-4927-B9EF-C2D545FE0BCA}.Release|x86.ActiveCfg = Release|Win32
77 | {8376216C-282A-4927-B9EF-C2D545FE0BCA}.Release|x86.Build.0 = Release|Win32
78 | EndGlobalSection
79 | GlobalSection(SolutionProperties) = preSolution
80 | HideSolutionNode = FALSE
81 | EndGlobalSection
82 | EndGlobal
83 |
--------------------------------------------------------------------------------
/win10/RemoteBlinky/RemoteBlinky/App.xaml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/win10/RemoteBlinky/RemoteBlinky/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Windows.ApplicationModel;
3 | using Windows.ApplicationModel.Activation;
4 | using Windows.UI.Xaml;
5 | using Windows.UI.Xaml.Controls;
6 | using Windows.UI.Xaml.Navigation;
7 | using Microsoft.Maker.RemoteWiring;
8 | using Microsoft.Maker.Serial;
9 | using Microsoft.ApplicationInsights;
10 |
11 | namespace RemoteBlinky
12 | {
13 | ///
14 | /// Provides application-specific behavior to supplement the default Application class.
15 | ///
16 | sealed partial class App : Application
17 | {
18 | public static IStream Connection
19 | {
20 | get;
21 | set;
22 | }
23 |
24 | public static RemoteDevice Arduino
25 | {
26 | get;
27 | set;
28 | }
29 |
30 | public static TelemetryClient Telemetry
31 | {
32 | get;
33 | private set;
34 | }
35 |
36 | ///
37 | /// Initializes the singleton application object. This is the first line of authored code
38 | /// executed, and as such is the logical equivalent of main() or WinMain().
39 | ///
40 | public App()
41 | {
42 | Microsoft.ApplicationInsights.WindowsAppInitializer.InitializeAsync(
43 | Microsoft.ApplicationInsights.WindowsCollectors.Metadata |
44 | Microsoft.ApplicationInsights.WindowsCollectors.Session );
45 | this.InitializeComponent();
46 | this.Suspending += OnSuspending;
47 |
48 | Telemetry = new TelemetryClient();
49 | }
50 |
51 | ///
52 | /// Invoked when the application is launched normally by the end user. Other entry points
53 | /// will be used such as when the application is launched to open a specific file.
54 | ///
55 | /// Details about the launch request and process.
56 | protected override void OnLaunched(LaunchActivatedEventArgs e)
57 | {
58 |
59 | #if DEBUG
60 | if (System.Diagnostics.Debugger.IsAttached)
61 | {
62 | this.DebugSettings.EnableFrameRateCounter = true;
63 | }
64 | #endif
65 |
66 | Frame rootFrame = Window.Current.Content as Frame;
67 |
68 | // Do not repeat app initialization when the Window already has content,
69 | // just ensure that the window is active
70 | if (rootFrame == null)
71 | {
72 | // Create a Frame to act as the navigation context and navigate to the first page
73 | rootFrame = new Frame();
74 |
75 | rootFrame.NavigationFailed += OnNavigationFailed;
76 |
77 | if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
78 | {
79 | //TODO: Load state from previously suspended application
80 | }
81 |
82 | // Place the frame in the current Window
83 | Window.Current.Content = rootFrame;
84 | }
85 |
86 | if (rootFrame.Content == null)
87 | {
88 | // When the navigation stack isn't restored navigate to the first page,
89 | // configuring the new page by passing required information as a navigation
90 | // parameter
91 | rootFrame.Navigate(typeof(ConnectionPage), e.Arguments);
92 | }
93 | // Ensure the current window is active
94 | Window.Current.Activate();
95 | }
96 |
97 | ///
98 | /// Invoked when Navigation to a certain page fails
99 | ///
100 | /// The Frame which failed navigation
101 | /// Details about the navigation failure
102 | void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
103 | {
104 | throw new Exception("Failed to load Page " + e.SourcePageType.FullName);
105 | }
106 |
107 | ///
108 | /// Invoked when application execution is being suspended. Application state is saved
109 | /// without knowing whether the application will be terminated or resumed with the contents
110 | /// of memory still intact.
111 | ///
112 | /// The source of the suspend request.
113 | /// Details about the suspend request.
114 | private void OnSuspending(object sender, SuspendingEventArgs e)
115 | {
116 | var deferral = e.SuspendingOperation.GetDeferral();
117 | //TODO: Save application state and stop any background activity
118 | deferral.Complete();
119 | }
120 | }
121 | }
122 |
--------------------------------------------------------------------------------
/win10/RemoteBlinky/RemoteBlinky/ApplicationInsights.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 9ad58912-6aaf-467a-9317-6bc053e5de9a
5 |
--------------------------------------------------------------------------------
/win10/RemoteBlinky/RemoteBlinky/Assets/LockScreenLogo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ms-iot/windows-remote-arduino-samples/31328a1c8648fbfe12b8ad2ae888aa5bd76d39a3/win10/RemoteBlinky/RemoteBlinky/Assets/LockScreenLogo.scale-200.png
--------------------------------------------------------------------------------
/win10/RemoteBlinky/RemoteBlinky/Assets/SplashScreen.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ms-iot/windows-remote-arduino-samples/31328a1c8648fbfe12b8ad2ae888aa5bd76d39a3/win10/RemoteBlinky/RemoteBlinky/Assets/SplashScreen.scale-200.png
--------------------------------------------------------------------------------
/win10/RemoteBlinky/RemoteBlinky/Assets/Square150x150Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ms-iot/windows-remote-arduino-samples/31328a1c8648fbfe12b8ad2ae888aa5bd76d39a3/win10/RemoteBlinky/RemoteBlinky/Assets/Square150x150Logo.scale-200.png
--------------------------------------------------------------------------------
/win10/RemoteBlinky/RemoteBlinky/Assets/Square44x44Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ms-iot/windows-remote-arduino-samples/31328a1c8648fbfe12b8ad2ae888aa5bd76d39a3/win10/RemoteBlinky/RemoteBlinky/Assets/Square44x44Logo.scale-200.png
--------------------------------------------------------------------------------
/win10/RemoteBlinky/RemoteBlinky/Assets/Square44x44Logo.targetsize-24_altform-unplated.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ms-iot/windows-remote-arduino-samples/31328a1c8648fbfe12b8ad2ae888aa5bd76d39a3/win10/RemoteBlinky/RemoteBlinky/Assets/Square44x44Logo.targetsize-24_altform-unplated.png
--------------------------------------------------------------------------------
/win10/RemoteBlinky/RemoteBlinky/Assets/StoreLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ms-iot/windows-remote-arduino-samples/31328a1c8648fbfe12b8ad2ae888aa5bd76d39a3/win10/RemoteBlinky/RemoteBlinky/Assets/StoreLogo.png
--------------------------------------------------------------------------------
/win10/RemoteBlinky/RemoteBlinky/Assets/Wide310x150Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ms-iot/windows-remote-arduino-samples/31328a1c8648fbfe12b8ad2ae888aa5bd76d39a3/win10/RemoteBlinky/RemoteBlinky/Assets/Wide310x150Logo.scale-200.png
--------------------------------------------------------------------------------
/win10/RemoteBlinky/RemoteBlinky/Communication/Connection.cs:
--------------------------------------------------------------------------------
1 | namespace Communication
2 | {
3 | public class Connection
4 | {
5 | public string DisplayName { get; set; }
6 | public object Source { get; set; }
7 |
8 | public Connection(string displayName, object source)
9 | {
10 | this.DisplayName = displayName;
11 | this.Source = source;
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/win10/RemoteBlinky/RemoteBlinky/Communication/Connections.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.ObjectModel;
2 |
3 | namespace Communication
4 | {
5 | public class Connections : ObservableCollection
6 | {
7 | }
8 | }
--------------------------------------------------------------------------------
/win10/RemoteBlinky/RemoteBlinky/ConnectionPage.xaml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | Bluetooth
25 | USB
26 | Network
27 |
28 |
29 |
30 |
31 |
32 | 300
33 | 1200
34 | 2400
35 | 4800
36 | 9600
37 | 19200
38 | 38400
39 | 57600
40 | 115200
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/win10/RemoteBlinky/RemoteBlinky/ConnectionPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Linq;
3 | using System.Threading;
4 | using System.Threading.Tasks;
5 | using Windows.Devices.Enumeration;
6 | using Windows.UI.Xaml;
7 | using Windows.UI.Xaml.Controls;
8 | using Windows.UI.Xaml.Navigation;
9 | using Communication;
10 | using Microsoft.Maker.Serial;
11 | using Microsoft.Maker.RemoteWiring;
12 | using System.Collections.Generic;
13 |
14 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
15 |
16 | namespace RemoteBlinky
17 | {
18 | public sealed partial class ConnectionPage : Page
19 | {
20 | DispatcherTimer timeout;
21 | DateTime connectionAttemptStartedTime;
22 | DateTime timePageNavigatedTo;
23 | CancellationTokenSource cancelTokenSource;
24 |
25 | //string identifiers used to recognize drop-down selections
26 | private const string BLUETOOTH = "Bluetooth";
27 | private const string USB = "USB";
28 | private const string NETWORK = "Network";
29 |
30 | public ConnectionPage()
31 | {
32 | this.InitializeComponent();
33 | ConnectionMethodComboBox.SelectionChanged += ConnectionComboBox_SelectionChanged;
34 | App.Telemetry.TrackEvent( "RemoteBlinky_Windows10_Launched" );
35 | }
36 |
37 | protected override void OnNavigatedTo( NavigationEventArgs e )
38 | {
39 | base.OnNavigatedTo( e );
40 |
41 | //telemetry
42 | App.Telemetry.TrackPageView( "Connection_Page" );
43 | timePageNavigatedTo = DateTime.UtcNow;
44 |
45 | if( ConnectionList.ItemsSource == null )
46 | {
47 | ConnectMessage.Text = "Select an item to connect to.";
48 | RefreshDeviceList();
49 | }
50 | }
51 |
52 | private void RefreshDeviceList()
53 | {
54 | //invoke the listAvailableDevicesAsync method of the correct Serial class. Since it is Async, we will wrap it in a Task and add a llambda to execute when finished
55 | Task task = null;
56 | if( ConnectionMethodComboBox.SelectedItem == null )
57 | {
58 | ConnectMessage.Text = "Select a connection method to continue.";
59 | return;
60 | }
61 |
62 | switch( ConnectionMethodComboBox.SelectedItem as String )
63 | {
64 | default:
65 | case BLUETOOTH:
66 | ConnectionList.Visibility = Visibility.Visible;
67 | NetworkConnectionGrid.Visibility = Visibility.Collapsed;
68 | BaudRateStack.Visibility = Visibility.Visible;
69 |
70 | //create a cancellation token which can be used to cancel a task
71 | cancelTokenSource = new CancellationTokenSource();
72 | cancelTokenSource.Token.Register( () => OnConnectionCancelled() );
73 |
74 | task = BluetoothSerial.listAvailableDevicesAsync().AsTask( cancelTokenSource.Token );
75 | break;
76 |
77 | case USB:
78 | ConnectionList.Visibility = Visibility.Visible;
79 | NetworkConnectionGrid.Visibility = Visibility.Collapsed;
80 | BaudRateStack.Visibility = Visibility.Visible;
81 |
82 | //create a cancellation token which can be used to cancel a task
83 | cancelTokenSource = new CancellationTokenSource();
84 | cancelTokenSource.Token.Register( () => OnConnectionCancelled() );
85 |
86 | task = UsbSerial.listAvailableDevicesAsync().AsTask( cancelTokenSource.Token );
87 | break;
88 |
89 | case NETWORK:
90 | ConnectionList.Visibility = Visibility.Collapsed;
91 | NetworkConnectionGrid.Visibility = Visibility.Visible;
92 | BaudRateStack.Visibility = Visibility.Collapsed;
93 |
94 | ConnectMessage.Text = "Enter a host and port to connect";
95 | task = null;
96 | break;
97 | }
98 |
99 |
100 | //the task, if created, is enumerating the devices available from the selected connection method. We will display the results to the UI so that they can be selected.
101 | if( task != null )
102 | {
103 | //store the returned DeviceInformation items when the task completes
104 | task.ContinueWith( listTask =>
105 | {
106 | //store the result and populate the device list on the UI thread
107 | var action = Dispatcher.RunAsync( Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler( () =>
108 | {
109 | Connections connections = new Connections();
110 |
111 | var result = listTask.Result;
112 | if( result == null || result.Count == 0 )
113 | {
114 | ConnectMessage.Text = "No items found.";
115 | }
116 | else
117 | {
118 | foreach( DeviceInformation device in result )
119 | {
120 | connections.Add( new Connection( device.Name, device ) );
121 | }
122 | ConnectMessage.Text = "Select an item and press \"Connect\" to connect.";
123 | }
124 |
125 | ConnectionList.ItemsSource = connections;
126 | } ) );
127 | } );
128 | }
129 | }
130 |
131 | /****************************************************************
132 | * UI Callbacks *
133 | ****************************************************************/
134 |
135 | ///
136 | /// This function is called if the selection is changed on the Connection combo box
137 | ///
138 | /// The object invoking the event
139 | /// Arguments relating to the event
140 | private void ConnectionComboBox_SelectionChanged( object sender, SelectionChangedEventArgs e )
141 | {
142 | RefreshDeviceList();
143 | }
144 |
145 | ///
146 | /// Called if the Refresh button is pressed
147 | ///
148 | /// The object invoking the event
149 | /// Arguments relating to the event
150 | private void RefreshButton_Click( object sender, RoutedEventArgs e )
151 | {
152 | RefreshDeviceList();
153 | }
154 |
155 | ///
156 | /// Called if the Cancel button is pressed
157 | ///
158 | /// The object invoking the event
159 | /// Arguments relating to the event
160 | private void CancelButton_Click( object sender, RoutedEventArgs e )
161 | {
162 | OnConnectionCancelled();
163 | }
164 |
165 | ///
166 | /// Called if the Connect button is pressed
167 | ///
168 | /// The object invoking the event
169 | /// Arguments relating to the event
170 | private void ConnectButton_Click( object sender, RoutedEventArgs e )
171 | {
172 | //disable the buttons and set a timer in case the connection times out
173 | SetUiEnabled( false );
174 |
175 | DeviceInformation device = null;
176 | if( ConnectionList.SelectedItem != null )
177 | {
178 | var selectedConnection = ConnectionList.SelectedItem as Connection;
179 | device = selectedConnection.Source as DeviceInformation;
180 | }
181 | else if( ( ConnectionMethodComboBox.SelectedItem as string ) != NETWORK )
182 | {
183 | //if they haven't selected an item, but have chosen "usb" or "bluetooth", we can't proceed
184 | ConnectMessage.Text = "You must select an item to proceed.";
185 | SetUiEnabled( true );
186 | return;
187 | }
188 |
189 | //determine the selected baud rate
190 | uint baudRate = Convert.ToUInt32( ( BaudRateComboBox.SelectedItem as string ) );
191 |
192 | //connection properties dictionary, used only for telemetry data
193 | var properties = new Dictionary();
194 |
195 | //use the selected device to create our communication object
196 | switch( ConnectionMethodComboBox.SelectedItem as string )
197 | {
198 | default:
199 | case BLUETOOTH:
200 |
201 | //send telemetry about this connection attempt
202 | properties.Add( "Device_Name", device.Name );
203 | properties.Add( "Device_ID", device.Id );
204 | properties.Add( "Device_Kind", device.Kind.ToString() );
205 | App.Telemetry.TrackEvent( "Bluetooth_Connection_Attempt", properties );
206 | App.Connection = new BluetoothSerial( device );
207 | break;
208 |
209 | case USB:
210 |
211 | //send telemetry about this connection attempt
212 | properties.Add( "Device_Name", device.Name );
213 | properties.Add( "Device_ID", device.Id );
214 | properties.Add( "Device_Kind", device.Kind.ToString() );
215 | App.Telemetry.TrackEvent( "USB_Connection_Attempt", properties );
216 |
217 | App.Connection = new UsbSerial( device );
218 | break;
219 |
220 | case NETWORK:
221 | string host = NetworkHostNameTextBox.Text;
222 | string port = NetworkPortTextBox.Text;
223 | ushort portnum = 0;
224 |
225 | if( host == null || port == null )
226 | {
227 | ConnectMessage.Text = "You must enter host and IP.";
228 | return;
229 | }
230 |
231 | try
232 | {
233 | portnum = Convert.ToUInt16( port );
234 | }
235 | catch( FormatException )
236 | {
237 | ConnectMessage.Text = "You have entered an invalid port number.";
238 | return;
239 | }
240 |
241 | //send telemetry about this connection attempt
242 | properties.Add( "host", host );
243 | properties.Add( "port", portnum.ToString() );
244 | App.Telemetry.TrackEvent( "Network_Connection_Attempt", properties );
245 |
246 | App.Connection = new NetworkSerial( new Windows.Networking.HostName( host ), portnum );
247 | break;
248 | }
249 |
250 | App.Arduino = new RemoteDevice( App.Connection );
251 | App.Arduino.DeviceReady += OnDeviceReady;
252 | App.Arduino.DeviceConnectionFailed += OnDeviceConnectionFailed;
253 |
254 | connectionAttemptStartedTime = DateTime.UtcNow;
255 | App.Connection.begin( baudRate, SerialConfig.SERIAL_8N1 );
256 |
257 | //start a timer for connection timeout
258 | timeout = new DispatcherTimer();
259 | timeout.Interval = new TimeSpan( 0, 0, 30 );
260 | timeout.Tick += Connection_TimeOut;
261 | timeout.Start();
262 | }
263 |
264 |
265 | /****************************************************************
266 | * Event callbacks *
267 | ****************************************************************/
268 |
269 | private void OnDeviceConnectionFailed( string message )
270 | {
271 | var action = Dispatcher.RunAsync( Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler( () =>
272 | {
273 | timeout.Stop();
274 |
275 | //telemetry
276 | App.Telemetry.TrackRequest( "Connection_Failed_Event", DateTimeOffset.UtcNow, DateTime.UtcNow - connectionAttemptStartedTime, message, true );
277 |
278 | ConnectMessage.Text = "Connection attempt failed: " + message;
279 | SetUiEnabled( true );
280 | } ) );
281 | }
282 |
283 | private void OnDeviceReady()
284 | {
285 | var action = Dispatcher.RunAsync( Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler( () =>
286 | {
287 | timeout.Stop();
288 |
289 | //telemetry
290 | App.Telemetry.TrackRequest( "Connection_Success_Event", DateTimeOffset.UtcNow, DateTime.UtcNow - connectionAttemptStartedTime, string.Empty, true );
291 | App.Telemetry.TrackMetric( "Connection_Page_Time_Spent_In_Seconds", ( DateTime.UtcNow - timePageNavigatedTo ).TotalSeconds );
292 |
293 | this.Frame.Navigate( typeof( MainPage ) );
294 | } ) );
295 | }
296 |
297 | private void Connection_TimeOut( object sender, object e )
298 | {
299 | var action = Dispatcher.RunAsync( Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler( () =>
300 | {
301 | timeout.Stop();
302 |
303 | //telemetry
304 | App.Telemetry.TrackRequest( "Connection_Timeout_Event", DateTimeOffset.UtcNow, DateTime.UtcNow - connectionAttemptStartedTime, string.Empty, true );
305 |
306 | ConnectMessage.Text = "Connection attempt timed out.";
307 | SetUiEnabled( true );
308 | } ) );
309 | }
310 |
311 |
312 | /****************************************************************
313 | * Helper functions *
314 | ****************************************************************/
315 |
316 | private void SetUiEnabled( bool enabled )
317 | {
318 | RefreshButton.IsEnabled = enabled;
319 | ConnectButton.IsEnabled = enabled;
320 | CancelButton.IsEnabled = !enabled;
321 | }
322 |
323 | ///
324 | /// This function is invoked if a cancellation is invoked for any reason on the connection task
325 | ///
326 | private void OnConnectionCancelled()
327 | {
328 | ConnectMessage.Text = "Connection attempt cancelled.";
329 | App.Telemetry.TrackRequest( "Connection_Cancelled_Event", DateTimeOffset.UtcNow, DateTime.UtcNow - connectionAttemptStartedTime, string.Empty, true );
330 |
331 | if( App.Connection != null )
332 | {
333 | App.Connection.ConnectionEstablished -= OnDeviceReady;
334 | App.Connection.ConnectionFailed -= OnDeviceConnectionFailed;
335 | }
336 |
337 | if( cancelTokenSource != null )
338 | {
339 | cancelTokenSource.Dispose();
340 | }
341 |
342 | App.Connection = null;
343 | App.Arduino = null;
344 | cancelTokenSource = null;
345 |
346 | SetUiEnabled( true );
347 | }
348 | }
349 | }
350 |
--------------------------------------------------------------------------------
/win10/RemoteBlinky/RemoteBlinky/MainPage.xaml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/win10/RemoteBlinky/RemoteBlinky/MainPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using Windows.UI.Xaml;
2 | using Windows.UI.Xaml.Controls;
3 | using Microsoft.Maker.RemoteWiring;
4 | using System;
5 |
6 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
7 |
8 | namespace RemoteBlinky
9 | {
10 | ///
11 | /// An empty page that can be used on its own or navigated to within a Frame.
12 | ///
13 | public sealed partial class MainPage : Page
14 | {
15 | //we will toggle the state of pin 13 by default
16 | private const byte PIN_NUMBER = 13;
17 |
18 | RemoteDevice arduino;
19 | DispatcherTimer timer;
20 | PinState currentState;
21 |
22 | public MainPage()
23 | {
24 | this.InitializeComponent();
25 |
26 | arduino = App.Arduino;
27 | App.Telemetry.TrackEvent( "RemoteBlinky_Windows10_SuccessfullyConnected" );
28 |
29 | App.Arduino.DeviceConnectionLost += Arduino_OnDeviceConnectionLost;
30 |
31 | currentState = PinState.LOW;
32 | OnButton.IsEnabled = true;
33 | OffButton.IsEnabled = true;
34 | BlinkButton.IsEnabled = true;
35 | }
36 |
37 | private void Arduino_OnDeviceConnectionLost( string message )
38 | {
39 | ConnectionStatusMessage.Text = "Your device connection was lost!";
40 |
41 | if( timer != null )
42 | {
43 | timer.Stop();
44 | timer = null;
45 | }
46 |
47 | OnButton.IsEnabled = false;
48 | OffButton.IsEnabled = false;
49 | BlinkButton.IsEnabled = false;
50 | }
51 |
52 | private void OnButton_Click( object sender, RoutedEventArgs e )
53 | {
54 | //turn the LED connected to pin PIN_NUMBER ON
55 | currentState = PinState.HIGH;
56 | arduino.digitalWrite( PIN_NUMBER, currentState );
57 | }
58 |
59 | private void OffButton_Click( object sender, RoutedEventArgs e )
60 | {
61 | //turn the LED connected to pin PIN_NUMBER OFF
62 | currentState = PinState.LOW;
63 | arduino.digitalWrite( PIN_NUMBER, currentState );
64 | }
65 |
66 | private void ToggleButton_Click( object sender, RoutedEventArgs e )
67 | {
68 | if( timer == null )
69 | {
70 | timer = new DispatcherTimer();
71 | timer.Interval = TimeSpan.FromMilliseconds( 500 );
72 | timer.Tick += ToggleLed;
73 | timer.Start();
74 | BlinkButton.Content = "Stop Blinking!";
75 | }
76 | else
77 | {
78 | timer.Stop();
79 | timer = null;
80 | var obj = BlinkButton.Content as TextBlock;
81 | BlinkButton.Content = "Blink!";
82 | }
83 | }
84 |
85 | private void ToggleLed( object sender, object e )
86 | {
87 | currentState = ( currentState == PinState.LOW ? PinState.HIGH : PinState.LOW );
88 | arduino.digitalWrite( PIN_NUMBER, currentState );
89 | }
90 | }
91 | }
92 |
--------------------------------------------------------------------------------
/win10/RemoteBlinky/RemoteBlinky/Package.appxmanifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
13 |
14 |
15 |
16 |
17 | RemoteBlinky
18 | jessefr
19 | Assets\StoreLogo.png
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
34 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/win10/RemoteBlinky/RemoteBlinky/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("RemoteBlinky")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("RemoteBlinky")]
13 | [assembly: AssemblyCopyright("Copyright © 2015")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Version information for an assembly consists of the following four values:
18 | //
19 | // Major Version
20 | // Minor Version
21 | // Build Number
22 | // Revision
23 | //
24 | // You can specify all the values or you can default the Build and Revision Numbers
25 | // by using the '*' as shown below:
26 | // [assembly: AssemblyVersion("1.0.*")]
27 | [assembly: AssemblyVersion("1.0.0.0")]
28 | [assembly: AssemblyFileVersion("1.0.0.0")]
29 | [assembly: ComVisible(false)]
--------------------------------------------------------------------------------
/win10/RemoteBlinky/RemoteBlinky/Properties/Default.rd.xml:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/win10/RemoteBlinky/RemoteBlinky/RemoteBlinky.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | x86
7 | {5874144C-87D4-4042-833A-8F7D1EB644DF}
8 | AppContainerExe
9 | Properties
10 | RemoteBlinky
11 | RemoteBlinky
12 | en-US
13 | UAP
14 | 10.0.10240.0
15 | 10.0.10240.0
16 | 14
17 | true
18 | 512
19 | {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
20 | RemoteBlinky_TemporaryKey.pfx
21 | /subscriptions/0445ef8f-446e-4cbe-9c04-a74b90c9eb32/resourcegroups/Group-1/providers/microsoft.insights/components/Remote Arduino General - Public
22 |
23 |
24 | true
25 | bin\ARM\Debug\
26 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
27 | ;2008
28 | full
29 | ARM
30 | false
31 | prompt
32 | true
33 |
34 |
35 | bin\ARM\Release\
36 | TRACE;NETFX_CORE;WINDOWS_UWP
37 | true
38 | ;2008
39 | pdbonly
40 | ARM
41 | false
42 | prompt
43 | true
44 | true
45 |
46 |
47 | true
48 | bin\x64\Debug\
49 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
50 | ;2008
51 | full
52 | x64
53 | false
54 | prompt
55 | true
56 |
57 |
58 | bin\x64\Release\
59 | TRACE;NETFX_CORE;WINDOWS_UWP
60 | true
61 | ;2008
62 | pdbonly
63 | x64
64 | false
65 | prompt
66 | true
67 | true
68 |
69 |
70 | true
71 | bin\x86\Debug\
72 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
73 | ;2008
74 | full
75 | x86
76 | false
77 | prompt
78 | true
79 |
80 |
81 | bin\x86\Release\
82 | TRACE;NETFX_CORE;WINDOWS_UWP
83 | true
84 | ;2008
85 | pdbonly
86 | x86
87 | false
88 | prompt
89 | true
90 | true
91 |
92 |
93 |
94 |
95 | PreserveNewest
96 |
97 |
98 |
99 |
100 |
101 |
102 | App.xaml
103 |
104 |
105 |
106 |
107 | ConnectionPage.xaml
108 |
109 |
110 | MainPage.xaml
111 |
112 |
113 |
114 |
115 |
116 | Designer
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 | MSBuild:Compile
133 | Designer
134 |
135 |
136 | MSBuild:Compile
137 | Designer
138 |
139 |
140 | MSBuild:Compile
141 | Designer
142 |
143 |
144 |
145 |
146 | {f0a53bc9-c617-47dd-8b68-f91e3502d633}
147 | Microsoft.Maker.Firmata
148 |
149 |
150 | {5a8b1bb1-7cd5-47c4-a1f7-d7bcf5facad1}
151 | Microsoft.Maker.RemoteWiring
152 |
153 |
154 | {8376216c-282a-4927-b9ef-c2d545fe0bca}
155 | Microsoft.Maker.Serial
156 |
157 |
158 |
159 |
160 |
161 |
162 | 14.0
163 |
164 |
165 |
172 |
--------------------------------------------------------------------------------
/win10/RemoteBlinky/RemoteBlinky/Service References/Application Insights/ConnectedService.json:
--------------------------------------------------------------------------------
1 | {
2 | "ProviderId": "Microsoft.ApplicationInsights.ConnectedService.ConnectedServiceProvider",
3 | "Version": "3.3.1.0",
4 | "GettingStartedDocument": {
5 | "Uri": "http://go.microsoft.com/fwlink/?LinkID=613412"
6 | }
7 | }
--------------------------------------------------------------------------------
/win10/RemoteBlinky/RemoteBlinky/project.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "Microsoft.ApplicationInsights": "1.0.0",
4 | "Microsoft.ApplicationInsights.PersistenceChannel": "1.0.0",
5 | "Microsoft.ApplicationInsights.WindowsApps": "1.0.0",
6 | "Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0"
7 | },
8 | "frameworks": {
9 | "uap10.0": {}
10 | },
11 | "runtimes": {
12 | "win10-arm": {},
13 | "win10-arm-aot": {},
14 | "win10-x86": {},
15 | "win10-x86-aot": {},
16 | "win10-x64": {},
17 | "win10-x64-aot": {}
18 | }
19 | }
--------------------------------------------------------------------------------
/win10/remote-controlled-car/remote-controlled-car.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 14
4 | VisualStudioVersion = 14.0.23107.0
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "remote-controlled-car", "remote-controlled-car\remote-controlled-car.csproj", "{1CB99784-F7B3-4A7D-87D2-7F55149364FD}"
7 | EndProject
8 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.Maker.Serial", "..\..\remote-wiring\Microsoft.Maker.win10\Microsoft.Maker.Serial\Microsoft.Maker.Serial.vcxproj", "{8376216C-282A-4927-B9EF-C2D545FE0BCA}"
9 | EndProject
10 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.Maker.RemoteWiring", "..\..\remote-wiring\Microsoft.Maker.win10\Microsoft.Maker.RemoteWiring\Microsoft.Maker.RemoteWiring.vcxproj", "{5A8B1BB1-7CD5-47C4-A1F7-D7BCF5FACAD1}"
11 | EndProject
12 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.Maker.Firmata", "..\..\remote-wiring\Microsoft.Maker.win10\Microsoft.Maker.Firmata\Microsoft.Maker.Firmata.vcxproj", "{F0A53BC9-C617-47DD-8B68-F91E3502D633}"
13 | EndProject
14 | Global
15 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
16 | Debug|ARM = Debug|ARM
17 | Debug|x64 = Debug|x64
18 | Debug|x86 = Debug|x86
19 | Release|ARM = Release|ARM
20 | Release|x64 = Release|x64
21 | Release|x86 = Release|x86
22 | EndGlobalSection
23 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
24 | {1CB99784-F7B3-4A7D-87D2-7F55149364FD}.Debug|ARM.ActiveCfg = Debug|ARM
25 | {1CB99784-F7B3-4A7D-87D2-7F55149364FD}.Debug|ARM.Build.0 = Debug|ARM
26 | {1CB99784-F7B3-4A7D-87D2-7F55149364FD}.Debug|ARM.Deploy.0 = Debug|ARM
27 | {1CB99784-F7B3-4A7D-87D2-7F55149364FD}.Debug|x64.ActiveCfg = Debug|x64
28 | {1CB99784-F7B3-4A7D-87D2-7F55149364FD}.Debug|x64.Build.0 = Debug|x64
29 | {1CB99784-F7B3-4A7D-87D2-7F55149364FD}.Debug|x64.Deploy.0 = Debug|x64
30 | {1CB99784-F7B3-4A7D-87D2-7F55149364FD}.Debug|x86.ActiveCfg = Debug|x86
31 | {1CB99784-F7B3-4A7D-87D2-7F55149364FD}.Debug|x86.Build.0 = Debug|x86
32 | {1CB99784-F7B3-4A7D-87D2-7F55149364FD}.Debug|x86.Deploy.0 = Debug|x86
33 | {1CB99784-F7B3-4A7D-87D2-7F55149364FD}.Release|ARM.ActiveCfg = Release|ARM
34 | {1CB99784-F7B3-4A7D-87D2-7F55149364FD}.Release|ARM.Build.0 = Release|ARM
35 | {1CB99784-F7B3-4A7D-87D2-7F55149364FD}.Release|ARM.Deploy.0 = Release|ARM
36 | {1CB99784-F7B3-4A7D-87D2-7F55149364FD}.Release|x64.ActiveCfg = Release|x64
37 | {1CB99784-F7B3-4A7D-87D2-7F55149364FD}.Release|x64.Build.0 = Release|x64
38 | {1CB99784-F7B3-4A7D-87D2-7F55149364FD}.Release|x64.Deploy.0 = Release|x64
39 | {1CB99784-F7B3-4A7D-87D2-7F55149364FD}.Release|x86.ActiveCfg = Release|x86
40 | {1CB99784-F7B3-4A7D-87D2-7F55149364FD}.Release|x86.Build.0 = Release|x86
41 | {1CB99784-F7B3-4A7D-87D2-7F55149364FD}.Release|x86.Deploy.0 = Release|x86
42 | {8376216C-282A-4927-B9EF-C2D545FE0BCA}.Debug|ARM.ActiveCfg = Debug|ARM
43 | {8376216C-282A-4927-B9EF-C2D545FE0BCA}.Debug|ARM.Build.0 = Debug|ARM
44 | {8376216C-282A-4927-B9EF-C2D545FE0BCA}.Debug|x64.ActiveCfg = Debug|x64
45 | {8376216C-282A-4927-B9EF-C2D545FE0BCA}.Debug|x64.Build.0 = Debug|x64
46 | {8376216C-282A-4927-B9EF-C2D545FE0BCA}.Debug|x86.ActiveCfg = Debug|Win32
47 | {8376216C-282A-4927-B9EF-C2D545FE0BCA}.Debug|x86.Build.0 = Debug|Win32
48 | {8376216C-282A-4927-B9EF-C2D545FE0BCA}.Release|ARM.ActiveCfg = Release|ARM
49 | {8376216C-282A-4927-B9EF-C2D545FE0BCA}.Release|ARM.Build.0 = Release|ARM
50 | {8376216C-282A-4927-B9EF-C2D545FE0BCA}.Release|x64.ActiveCfg = Release|x64
51 | {8376216C-282A-4927-B9EF-C2D545FE0BCA}.Release|x64.Build.0 = Release|x64
52 | {8376216C-282A-4927-B9EF-C2D545FE0BCA}.Release|x86.ActiveCfg = Release|Win32
53 | {8376216C-282A-4927-B9EF-C2D545FE0BCA}.Release|x86.Build.0 = Release|Win32
54 | {5A8B1BB1-7CD5-47C4-A1F7-D7BCF5FACAD1}.Debug|ARM.ActiveCfg = Debug|ARM
55 | {5A8B1BB1-7CD5-47C4-A1F7-D7BCF5FACAD1}.Debug|ARM.Build.0 = Debug|ARM
56 | {5A8B1BB1-7CD5-47C4-A1F7-D7BCF5FACAD1}.Debug|x64.ActiveCfg = Debug|x64
57 | {5A8B1BB1-7CD5-47C4-A1F7-D7BCF5FACAD1}.Debug|x64.Build.0 = Debug|x64
58 | {5A8B1BB1-7CD5-47C4-A1F7-D7BCF5FACAD1}.Debug|x86.ActiveCfg = Debug|Win32
59 | {5A8B1BB1-7CD5-47C4-A1F7-D7BCF5FACAD1}.Debug|x86.Build.0 = Debug|Win32
60 | {5A8B1BB1-7CD5-47C4-A1F7-D7BCF5FACAD1}.Release|ARM.ActiveCfg = Release|ARM
61 | {5A8B1BB1-7CD5-47C4-A1F7-D7BCF5FACAD1}.Release|ARM.Build.0 = Release|ARM
62 | {5A8B1BB1-7CD5-47C4-A1F7-D7BCF5FACAD1}.Release|x64.ActiveCfg = Release|x64
63 | {5A8B1BB1-7CD5-47C4-A1F7-D7BCF5FACAD1}.Release|x64.Build.0 = Release|x64
64 | {5A8B1BB1-7CD5-47C4-A1F7-D7BCF5FACAD1}.Release|x86.ActiveCfg = Release|Win32
65 | {5A8B1BB1-7CD5-47C4-A1F7-D7BCF5FACAD1}.Release|x86.Build.0 = Release|Win32
66 | {F0A53BC9-C617-47DD-8B68-F91E3502D633}.Debug|ARM.ActiveCfg = Debug|ARM
67 | {F0A53BC9-C617-47DD-8B68-F91E3502D633}.Debug|ARM.Build.0 = Debug|ARM
68 | {F0A53BC9-C617-47DD-8B68-F91E3502D633}.Debug|x64.ActiveCfg = Debug|x64
69 | {F0A53BC9-C617-47DD-8B68-F91E3502D633}.Debug|x64.Build.0 = Debug|x64
70 | {F0A53BC9-C617-47DD-8B68-F91E3502D633}.Debug|x86.ActiveCfg = Debug|Win32
71 | {F0A53BC9-C617-47DD-8B68-F91E3502D633}.Debug|x86.Build.0 = Debug|Win32
72 | {F0A53BC9-C617-47DD-8B68-F91E3502D633}.Release|ARM.ActiveCfg = Release|ARM
73 | {F0A53BC9-C617-47DD-8B68-F91E3502D633}.Release|ARM.Build.0 = Release|ARM
74 | {F0A53BC9-C617-47DD-8B68-F91E3502D633}.Release|x64.ActiveCfg = Release|x64
75 | {F0A53BC9-C617-47DD-8B68-F91E3502D633}.Release|x64.Build.0 = Release|x64
76 | {F0A53BC9-C617-47DD-8B68-F91E3502D633}.Release|x86.ActiveCfg = Release|Win32
77 | {F0A53BC9-C617-47DD-8B68-F91E3502D633}.Release|x86.Build.0 = Release|Win32
78 | EndGlobalSection
79 | GlobalSection(SolutionProperties) = preSolution
80 | HideSolutionNode = FALSE
81 | EndGlobalSection
82 | EndGlobal
83 |
--------------------------------------------------------------------------------
/win10/remote-controlled-car/remote-controlled-car/App.xaml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/win10/remote-controlled-car/remote-controlled-car/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Windows.ApplicationModel;
3 | using Windows.ApplicationModel.Activation;
4 | using Windows.Devices.Sensors;
5 | using Windows.UI.Xaml;
6 | using Windows.UI.Xaml.Controls;
7 | using Windows.UI.Xaml.Navigation;
8 | using Microsoft.Maker.Serial;
9 | using Microsoft.Maker.RemoteWiring;
10 | using Microsoft.ApplicationInsights;
11 |
12 | namespace remote_controlled_car
13 | {
14 | ///
15 | /// Provides application-specific behavior to supplement the default Application class.
16 | ///
17 | sealed partial class App : Application
18 | {
19 | public static Accelerometer Accelerometer
20 | {
21 | get;
22 | set;
23 | }
24 |
25 | public static IStream Bluetooth
26 | {
27 | get;
28 | set;
29 | }
30 |
31 | public static RemoteDevice Arduino
32 | {
33 | get;
34 | set;
35 | }
36 |
37 | public static TelemetryClient Telemetry
38 | {
39 | get;
40 | private set;
41 | }
42 |
43 | ///
44 | /// Initializes the singleton application object. This is the first line of authored code
45 | /// executed, and as such is the logical equivalent of main() or WinMain().
46 | ///
47 | public App()
48 | {
49 | Microsoft.ApplicationInsights.WindowsAppInitializer.InitializeAsync(
50 | Microsoft.ApplicationInsights.WindowsCollectors.Metadata |
51 | Microsoft.ApplicationInsights.WindowsCollectors.Session );
52 | this.InitializeComponent();
53 | this.Suspending += OnSuspending;
54 |
55 | Telemetry = new TelemetryClient();
56 | }
57 |
58 | ///
59 | /// Invoked when the application is launched normally by the end user. Other entry points
60 | /// will be used such as when the application is launched to open a specific file.
61 | ///
62 | /// Details about the launch request and process.
63 | protected override void OnLaunched(LaunchActivatedEventArgs e)
64 | {
65 |
66 | #if DEBUG
67 | if (System.Diagnostics.Debugger.IsAttached)
68 | {
69 | this.DebugSettings.EnableFrameRateCounter = true;
70 | }
71 | #endif
72 |
73 | Frame rootFrame = Window.Current.Content as Frame;
74 |
75 | // Do not repeat app initialization when the Window already has content,
76 | // just ensure that the window is active
77 | if (rootFrame == null)
78 | {
79 | // Create a Frame to act as the navigation context and navigate to the first page
80 | rootFrame = new Frame();
81 |
82 | rootFrame.NavigationFailed += OnNavigationFailed;
83 |
84 | if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
85 | {
86 | //TODO: Load state from previously suspended application
87 | }
88 |
89 | // Place the frame in the current Window
90 | Window.Current.Content = rootFrame;
91 | }
92 |
93 | if (rootFrame.Content == null)
94 | {
95 | // When the navigation stack isn't restored navigate to the first page,
96 | // configuring the new page by passing required information as a navigation
97 | // parameter
98 | rootFrame.Navigate(typeof(MainPage), e.Arguments);
99 | }
100 | // Ensure the current window is active
101 | Window.Current.Activate();
102 | }
103 |
104 | ///
105 | /// Invoked when Navigation to a certain page fails
106 | ///
107 | /// The Frame which failed navigation
108 | /// Details about the navigation failure
109 | void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
110 | {
111 | throw new Exception("Failed to load Page " + e.SourcePageType.FullName);
112 | }
113 |
114 | ///
115 | /// Invoked when application execution is being suspended. Application state is saved
116 | /// without knowing whether the application will be terminated or resumed with the contents
117 | /// of memory still intact.
118 | ///
119 | /// The source of the suspend request.
120 | /// Details about the suspend request.
121 | private void OnSuspending(object sender, SuspendingEventArgs e)
122 | {
123 | var deferral = e.SuspendingOperation.GetDeferral();
124 | //TODO: Save application state and stop any background activity
125 | deferral.Complete();
126 | }
127 | }
128 | }
129 |
--------------------------------------------------------------------------------
/win10/remote-controlled-car/remote-controlled-car/ApplicationInsights.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 9ad58912-6aaf-467a-9317-6bc053e5de9a
5 |
--------------------------------------------------------------------------------
/win10/remote-controlled-car/remote-controlled-car/Assets/01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ms-iot/windows-remote-arduino-samples/31328a1c8648fbfe12b8ad2ae888aa5bd76d39a3/win10/remote-controlled-car/remote-controlled-car/Assets/01.png
--------------------------------------------------------------------------------
/win10/remote-controlled-car/remote-controlled-car/Assets/LockScreenLogo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ms-iot/windows-remote-arduino-samples/31328a1c8648fbfe12b8ad2ae888aa5bd76d39a3/win10/remote-controlled-car/remote-controlled-car/Assets/LockScreenLogo.scale-200.png
--------------------------------------------------------------------------------
/win10/remote-controlled-car/remote-controlled-car/Assets/SplashScreen.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ms-iot/windows-remote-arduino-samples/31328a1c8648fbfe12b8ad2ae888aa5bd76d39a3/win10/remote-controlled-car/remote-controlled-car/Assets/SplashScreen.scale-200.png
--------------------------------------------------------------------------------
/win10/remote-controlled-car/remote-controlled-car/Assets/Square150x150Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ms-iot/windows-remote-arduino-samples/31328a1c8648fbfe12b8ad2ae888aa5bd76d39a3/win10/remote-controlled-car/remote-controlled-car/Assets/Square150x150Logo.scale-200.png
--------------------------------------------------------------------------------
/win10/remote-controlled-car/remote-controlled-car/Assets/Square44x44Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ms-iot/windows-remote-arduino-samples/31328a1c8648fbfe12b8ad2ae888aa5bd76d39a3/win10/remote-controlled-car/remote-controlled-car/Assets/Square44x44Logo.scale-200.png
--------------------------------------------------------------------------------
/win10/remote-controlled-car/remote-controlled-car/Assets/Square44x44Logo.targetsize-24_altform-unplated.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ms-iot/windows-remote-arduino-samples/31328a1c8648fbfe12b8ad2ae888aa5bd76d39a3/win10/remote-controlled-car/remote-controlled-car/Assets/Square44x44Logo.targetsize-24_altform-unplated.png
--------------------------------------------------------------------------------
/win10/remote-controlled-car/remote-controlled-car/Assets/StoreLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ms-iot/windows-remote-arduino-samples/31328a1c8648fbfe12b8ad2ae888aa5bd76d39a3/win10/remote-controlled-car/remote-controlled-car/Assets/StoreLogo.png
--------------------------------------------------------------------------------
/win10/remote-controlled-car/remote-controlled-car/Assets/Wide310x150Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ms-iot/windows-remote-arduino-samples/31328a1c8648fbfe12b8ad2ae888aa5bd76d39a3/win10/remote-controlled-car/remote-controlled-car/Assets/Wide310x150Logo.scale-200.png
--------------------------------------------------------------------------------
/win10/remote-controlled-car/remote-controlled-car/Communication/Connection.cs:
--------------------------------------------------------------------------------
1 | namespace Communication
2 | {
3 | public class Connection
4 | {
5 | public string DisplayName { get; set; }
6 | public object Source { get; set; }
7 |
8 | public Connection(string displayName, object source)
9 | {
10 | this.DisplayName = displayName;
11 | this.Source = source;
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/win10/remote-controlled-car/remote-controlled-car/Communication/Connections.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.ObjectModel;
2 |
3 | namespace Communication
4 | {
5 | public class Connections : ObservableCollection
6 | {
7 | }
8 | }
--------------------------------------------------------------------------------
/win10/remote-controlled-car/remote-controlled-car/ControlPage.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/win10/remote-controlled-car/remote-controlled-car/ControlPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Windows.UI.Xaml;
3 | using Windows.UI.Xaml.Controls;
4 | using Windows.Devices.Sensors;
5 | using Microsoft.Maker.Serial;
6 | using Microsoft.Maker.RemoteWiring;
7 | using Windows.System.Display;
8 |
9 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
10 |
11 | namespace remote_controlled_car
12 | {
13 | ///
14 | /// This class controls a motor shield connected to an Arduino to drive forward and back while also optionally
15 | /// turning left or right. It is the preferred method for RC car control and should work with most motor shields.
16 | /// This class works by using one pin as DIRECTION control (telling a motor to move forward or in reverse) for each motor
17 | /// and one pin as MOTOR control (power or no power) for each motor. Turn motor control is binary (either turn or no turn)
18 | /// while forward/back is allows for analog power (variable velocity)
19 | ///
20 | public sealed partial class ControlPage : Page
21 | {
22 | private enum Turn
23 | {
24 | none,
25 | left,
26 | right
27 | }
28 |
29 | private enum Direction
30 | {
31 | none,
32 | forward,
33 | reverse
34 | }
35 |
36 | private const double LR_MAG = 0.4;
37 | private const double FB_MAG = 0.4;
38 | private const double MAX_ANALOG_VALUE = 255.0;
39 |
40 | /*
41 | * You may need to modify these pin values depending on your motor shield / pin configuration.
42 | * For the Velleman ka03 motor shield that I used, the direction control pins determine if the motor is driven fwd or back
43 | * while the motor control pins determine the drive power. Further, the mustang RC car uses a stalling motor on the front, meaning that
44 | * analog power is not desired. Therefore, you will see the direction control pins being switched when the phone tilt changes from fwd/back
45 | * and left/right, and you'll notice that the FB_MOTOR_CONTROL_PIN is driven with analogWrite while the LR_MOTOR_CONTROL_PIN is driven with digitalWrite
46 | */
47 | private const byte FB_DIRECTION_CONTROL_PIN = 8;
48 | private const byte FB_MOTOR_CONTROL_PIN = 9;
49 | private const byte LR_DIRECTION_CONTROL_PIN = 2;
50 | private const byte LR_MOTOR_CONTROL_PIN = 3;
51 |
52 | private const PinState LEFT = PinState.LOW;
53 | private const PinState RIGHT = PinState.HIGH;
54 | private const PinState FORWARD = PinState.LOW;
55 | private const PinState REVERSE = PinState.HIGH;
56 |
57 | private DisplayRequest keepScreenOnRequest;
58 | private Accelerometer accelerometer;
59 | private IStream bluetooth;
60 | private RemoteDevice arduino;
61 | private Turn turn;
62 | private Direction direction;
63 |
64 | public ControlPage()
65 | {
66 | this.InitializeComponent();
67 |
68 | App.Telemetry.TrackPageView( "RC_Car_ControlPage" );
69 |
70 | turn = Turn.none;
71 | direction = Direction.none;
72 |
73 | accelerometer = App.Accelerometer;
74 | bluetooth = App.Bluetooth;
75 | arduino = App.Arduino;
76 |
77 | if( accelerometer == null || bluetooth == null || arduino == null )
78 | {
79 | Frame.Navigate( typeof( MainPage ) );
80 | return;
81 | }
82 |
83 | startButton.IsEnabled = true;
84 | stopButton.IsEnabled = true;
85 | disconnectButton.IsEnabled = true;
86 |
87 | bluetooth.ConnectionLost += Bluetooth_ConnectionLost;
88 |
89 | keepScreenOnRequest = new DisplayRequest();
90 | keepScreenOnRequest.RequestActive();
91 |
92 | App.Arduino.pinMode( LR_DIRECTION_CONTROL_PIN, PinMode.OUTPUT );
93 | App.Arduino.pinMode( FB_DIRECTION_CONTROL_PIN, PinMode.OUTPUT );
94 | App.Arduino.pinMode( LR_MOTOR_CONTROL_PIN, PinMode.PWM );
95 | App.Arduino.pinMode( FB_MOTOR_CONTROL_PIN, PinMode.PWM );
96 | }
97 |
98 | private void Bluetooth_ConnectionLost( string message )
99 | {
100 | stopAndReturn();
101 | }
102 |
103 | private void Accelerometer_ReadingChanged( Accelerometer sender, AccelerometerReadingChangedEventArgs accel )
104 | {
105 | var action = Dispatcher.RunAsync( Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler( () => UpdateUI( accel.Reading ) ) );
106 |
107 | //Y is the left/right tilt, while X is the fwd/rev tilt
108 | double lr = -accel.Reading.AccelerationY;
109 | double fb = accel.Reading.AccelerationX;
110 |
111 | handleTurn( lr );
112 | handleDirection( fb );
113 | }
114 |
115 | private void handleTurn( double lr )
116 | {
117 | //left and right turns work best using digital signals
118 |
119 | if( lr < -LR_MAG )
120 | {
121 | //if we've switched directions, we need to be careful about how we switch
122 | if( turn != Turn.left )
123 | {
124 | //stop motor & set direction left
125 | arduino.digitalWrite( LR_MOTOR_CONTROL_PIN, PinState.LOW );
126 | arduino.digitalWrite( LR_DIRECTION_CONTROL_PIN, LEFT );
127 | }
128 |
129 | //start the motor by setting the pin high
130 | arduino.digitalWrite( LR_MOTOR_CONTROL_PIN, PinState.HIGH );
131 | turn = Turn.left;
132 | }
133 | else if( lr > LR_MAG )
134 | {
135 | if( turn != Turn.right )
136 | {
137 | //stop motor & set direction right
138 | arduino.digitalWrite( LR_MOTOR_CONTROL_PIN, PinState.LOW );
139 | arduino.digitalWrite( LR_DIRECTION_CONTROL_PIN, RIGHT );
140 | }
141 |
142 | //start the motor by setting the pin high
143 | arduino.digitalWrite( LR_MOTOR_CONTROL_PIN, PinState.HIGH );
144 | turn = Turn.right;
145 | }
146 | else
147 | {
148 | //stop the motor
149 | arduino.digitalWrite( LR_MOTOR_CONTROL_PIN, PinState.LOW );
150 | turn = Turn.none;
151 | }
152 | }
153 |
154 | private void handleDirection( double fb )
155 | {
156 | /*
157 | * The neutral state is anywhere from (-0.5, 0), so that the phone can be held like a controller, at a moderate angle.
158 | * This is because holding the phone at an angle is natural, tilting back to -1.0 is easy, while it feels awkward to tilt the phone
159 | * forward beyond 0.5 Therefore, reverse is from [-1.0, -0.5] and forward is from [0, 0.5].
160 | *
161 | * if the tilt goes beyond -0.5 in the negative direction the phone is being tilted backwards, and the car will start to reverse.
162 | * if the tilt goes beyond 0 in the positive direction the phone is being tilted forwards, and the car will start to move forward.
163 | */
164 |
165 | if( fb < -FB_MAG )
166 | {
167 | //reading is less than the negative magnitude, the phone is being tilted back and the car should reverse
168 | double weight = -( fb + FB_MAG );
169 | byte analogVal = mapWeight( weight );
170 |
171 | if( direction != Direction.reverse )
172 | {
173 | //stop motor & set direction forward
174 | arduino.analogWrite( FB_MOTOR_CONTROL_PIN, 0 );
175 | arduino.digitalWrite( FB_DIRECTION_CONTROL_PIN, REVERSE );
176 | }
177 |
178 | //start the motor by setting the pin to the appropriate analog value
179 | arduino.analogWrite( FB_MOTOR_CONTROL_PIN, analogVal );
180 | direction = Direction.reverse;
181 | }
182 | else if( fb > 0 )
183 | {
184 | //reading is greater than zero, the phone is being tilted forward and the car should move forward
185 | byte analogVal = mapWeight( fb );
186 |
187 | if( direction != Direction.forward )
188 | {
189 | //stop motor & set direction forward
190 | arduino.analogWrite( FB_MOTOR_CONTROL_PIN, 0 );
191 | arduino.digitalWrite( FB_DIRECTION_CONTROL_PIN, FORWARD );
192 | }
193 |
194 | //start the motor by setting the pin to the appropriate analog value
195 | arduino.analogWrite( FB_MOTOR_CONTROL_PIN, analogVal );
196 | direction = Direction.forward;
197 | }
198 | else
199 | {
200 | //reading is in the neutral zone (between -FB_MAG and 0) and the car should stop/idle
201 | arduino.analogWrite( FB_MOTOR_CONTROL_PIN, 0 );
202 | direction = Direction.none;
203 | }
204 | }
205 |
206 | private byte mapWeight( double weight )
207 | {
208 | //the value should be [0, 0.5], but we want to clamp the value between [0, 1]
209 | weight = Math.Max( Math.Min( weight * 2, 1.0 ), 0.0 );
210 | return (byte)( weight * MAX_ANALOG_VALUE );
211 | }
212 |
213 | private void startButton_Click( object sender, RoutedEventArgs e )
214 | {
215 | if( accelerometer != null )
216 | {
217 | //lets slow down the report interval a bit so we don't overwhelm the Arduino
218 | accelerometer.ReportInterval = 100;
219 | accelerometer.ReadingChanged += Accelerometer_ReadingChanged;
220 | }
221 | App.Telemetry.TrackEvent( "RC_Car_StartDrivingButtonPressed" );
222 | }
223 |
224 | private void stopButton_Click( object sender, RoutedEventArgs e )
225 | {
226 | if( accelerometer != null )
227 | {
228 | accelerometer.ReadingChanged -= Accelerometer_ReadingChanged;
229 | }
230 | turn = Turn.none;
231 | direction = Direction.none;
232 | arduino.analogWrite( FB_MOTOR_CONTROL_PIN, 0 );
233 | arduino.digitalWrite( LR_MOTOR_CONTROL_PIN, PinState.LOW );
234 | App.Telemetry.TrackEvent( "RC_Car_StopDrivingButtonPressed" );
235 | }
236 |
237 | private void disconnectButton_Click( object sender, RoutedEventArgs e )
238 | {
239 | stopAndReturn();
240 | App.Telemetry.TrackEvent( "RC_Car_DisconnectButtonPressed" );
241 | }
242 |
243 | private void UpdateUI( AccelerometerReading reading )
244 | {
245 | statusTextBlock.Text = "getting data";
246 |
247 | // Show the numeric values.
248 | xTextBlock.Text = "X: " + reading.AccelerationX.ToString( "0.00" );
249 | yTextBlock.Text = "Y: " + reading.AccelerationY.ToString( "0.00" );
250 | zTextBlock.Text = "Z: " + reading.AccelerationZ.ToString( "0.00" );
251 |
252 | // Show the values graphically.
253 | xLine.X2 = xLine.X1 + reading.AccelerationX * 200;
254 | yLine.Y2 = yLine.Y1 - reading.AccelerationY * 200;
255 | }
256 |
257 | private void stopAndReturn()
258 | {
259 | stopButton_Click( null, null );
260 | App.Bluetooth.end();
261 | App.Bluetooth = null;
262 | App.Arduino = null;
263 | Frame.Navigate( typeof( MainPage ) );
264 | }
265 | }
266 | }
267 |
--------------------------------------------------------------------------------
/win10/remote-controlled-car/remote-controlled-car/ControlPageMaisto.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/win10/remote-controlled-car/remote-controlled-car/ControlPageMaisto.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Windows.UI.Xaml;
3 | using Windows.UI.Xaml.Controls;
4 | using Windows.Devices.Sensors;
5 | using Microsoft.Maker.Serial;
6 | using Microsoft.Maker.RemoteWiring;
7 | using Windows.System.Display;
8 |
9 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
10 |
11 | namespace remote_controlled_car
12 | {
13 | ///
14 | /// This class controls the original Maisto PCB connected to an Arduino to drive forward and back while also optionally
15 | /// turning left or right. It is nearly identical to ControlPage.xaml.cs, but the way in which this board is controlled is different.
16 | /// Unlike ControlPage, this class (ControlPageMaisto) is specific to the behavior of the Maisto PCB. The Maisto board uses two pins to control each motor.
17 | /// Powering the left control pin moves the motor one direction, while powering the right control pin moves it in the other direction. The forward/back pins
18 | /// work in the same way. Therefore, it is crucial not to attempt to power both of these pins at the same time.
19 | ///
20 | public sealed partial class ControlPageMaisto : Page
21 | {
22 | private enum Turn
23 | {
24 | none,
25 | left,
26 | right
27 | }
28 |
29 | private enum Direction
30 | {
31 | none,
32 | forward,
33 | reverse
34 | }
35 |
36 | private const double LR_MAG = 0.4;
37 | private const double FB_MAG = 0.5;
38 | private const double MAX_ANALOG_VALUE = 255.0;
39 |
40 | /*
41 | * You may need to modify these pin values depending on your motor shield / pin configuration.
42 | * For the Velleman ka03 motor shield that I used, the direction control pins determine if the motor is driven fwd or back
43 | * while the motor control pins determine the drive power. Further, the mustang RC car uses a stalling motor on the front, meaning that
44 | * analog power is not desired. Therefore, you will see the direction control pins being switched when the phone tilt changes from fwd/back
45 | * and left/right, and you'll notice that the FB_MOTOR_CONTROL_PIN is driven with analogWrite while the LR_MOTOR_CONTROL_PIN is driven with digitalWrite
46 | */
47 | private const byte FORWARD_CONTROL_PIN = 8;
48 | private const byte REVERSE_CONTROL_PIN = 9;
49 | private const byte LEFT_CONTROL_PIN = 10;
50 | private const byte RIGHT_CONTROL_PIN = 11;
51 |
52 | private DisplayRequest keepScreenOnRequest;
53 | private Accelerometer accelerometer;
54 | private IStream bluetooth;
55 | private RemoteDevice arduino;
56 | private Turn turn;
57 | private Direction direction;
58 |
59 | public ControlPageMaisto()
60 | {
61 | this.InitializeComponent();
62 |
63 | turn = Turn.none;
64 | direction = Direction.none;
65 |
66 | App.Telemetry.TrackPageView( "RC_Car_ControlPageMaisto" );
67 |
68 | accelerometer = App.Accelerometer;
69 | bluetooth = App.Bluetooth;
70 | arduino = App.Arduino;
71 |
72 | if( accelerometer == null || bluetooth == null || arduino == null )
73 | {
74 | Frame.Navigate( typeof( MainPage ) );
75 | return;
76 | }
77 |
78 | startButton.IsEnabled = true;
79 | stopButton.IsEnabled = true;
80 | disconnectButton.IsEnabled = true;
81 |
82 | bluetooth.ConnectionLost += Bluetooth_ConnectionLost;
83 |
84 | keepScreenOnRequest = new DisplayRequest();
85 | keepScreenOnRequest.RequestActive();
86 |
87 | App.Arduino.pinMode( FORWARD_CONTROL_PIN, PinMode.OUTPUT );
88 | App.Arduino.pinMode( REVERSE_CONTROL_PIN, PinMode.OUTPUT );
89 | App.Arduino.pinMode( LEFT_CONTROL_PIN, PinMode.OUTPUT );
90 | App.Arduino.pinMode( RIGHT_CONTROL_PIN, PinMode.OUTPUT );
91 | }
92 |
93 | private void Bluetooth_ConnectionLost( string message )
94 | {
95 | stopAndReturn();
96 | }
97 |
98 | private void Accelerometer_ReadingChanged( Accelerometer sender, AccelerometerReadingChangedEventArgs accel )
99 | {
100 | var action = Dispatcher.RunAsync( Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler( () => UpdateUI( accel.Reading ) ) );
101 |
102 | //X is the left/right tilt, while Y is the fwd/rev tilt
103 | double lr = accel.Reading.AccelerationX;
104 | double fb = accel.Reading.AccelerationY;
105 |
106 | handleTurn( lr );
107 | handleDirection( fb );
108 | }
109 |
110 | private void handleTurn( double lr )
111 | {
112 | //left and right turns work best using digital signals
113 |
114 | if( lr < -LR_MAG )
115 | {
116 | //if we've switched directions, we need to be careful about how we switch
117 | if( turn != Turn.left )
118 | {
119 | //make sure we aren't turning right
120 | arduino.digitalWrite( RIGHT_CONTROL_PIN, PinState.LOW );
121 | }
122 |
123 | //start the motor by setting the pin high
124 | arduino.digitalWrite( LEFT_CONTROL_PIN, PinState.HIGH );
125 | turn = Turn.left;
126 | }
127 | else if( lr > LR_MAG )
128 | {
129 | if( turn != Turn.right )
130 | {
131 | //make sure we aren't turning left
132 | arduino.digitalWrite( LEFT_CONTROL_PIN, PinState.LOW );
133 | }
134 |
135 | //start the motor by setting the pin high
136 | arduino.digitalWrite( RIGHT_CONTROL_PIN, PinState.HIGH );
137 | turn = Turn.right;
138 | }
139 | else
140 | {
141 | //stop any pins that may be high
142 | arduino.digitalWrite( LEFT_CONTROL_PIN, PinState.LOW );
143 | arduino.digitalWrite( RIGHT_CONTROL_PIN, PinState.LOW );
144 | turn = Turn.none;
145 | }
146 | }
147 |
148 | private void handleDirection( double fb )
149 | {
150 | /*
151 | * The neutral state is anywhere from (-0.5, 0), so that the phone can be held like a controller, at a moderate angle.
152 | * This is because holding the phone at an angle is natural, tilting back to -1.0 is easy, while it feels awkward to tilt the phone
153 | * forward beyond 0.5 Therefore, reverse is from [-1.0, -0.5] and forward is from [0, 0.5].
154 | *
155 | * if the tilt goes beyond -0.5 in the negative direction the phone is being tilted backwards, and the car will start to reverse.
156 | * if the tilt goes beyond 0 in the positive direction the phone is being tilted forwards, and the car will start to move forward.
157 | */
158 |
159 | if( fb < -FB_MAG )
160 | {
161 | //reading is less than the negative magnitude, the phone is being tilted back and the car should reverse
162 | if( direction != Direction.reverse )
163 | {
164 | //make sure we aren't moving forward
165 | arduino.digitalWrite( FORWARD_CONTROL_PIN, PinState.LOW );
166 | }
167 |
168 | //start the motor by setting the reverse pin high
169 | arduino.digitalWrite( REVERSE_CONTROL_PIN, PinState.HIGH );
170 | direction = Direction.reverse;
171 | }
172 | else if( fb > 0 )
173 | {
174 | //reading is greater than zero, the phone is being tilted forward and the car should move forward
175 | if( direction != Direction.forward )
176 | {
177 | //make sure we aren't moving backward
178 | arduino.digitalWrite( REVERSE_CONTROL_PIN, PinState.LOW );
179 | }
180 |
181 | //start the motor by setting the forward pin high
182 | arduino.digitalWrite( FORWARD_CONTROL_PIN, PinState.HIGH );
183 | direction = Direction.forward;
184 | }
185 | else
186 | {
187 | //reading is in the neutral zone (between -FB_MAG and 0) and the car should stop/idle
188 | arduino.digitalWrite( REVERSE_CONTROL_PIN, PinState.LOW );
189 | arduino.digitalWrite( FORWARD_CONTROL_PIN, PinState.LOW );
190 | direction = Direction.none;
191 | }
192 | }
193 |
194 | private void startButton_Click( object sender, RoutedEventArgs e )
195 | {
196 | if( accelerometer != null )
197 | {
198 | //lets slow down the report interval a bit so we don't overwhelm the Arduino
199 | accelerometer.ReportInterval = 100;
200 | accelerometer.ReadingChanged += Accelerometer_ReadingChanged;
201 | }
202 | App.Telemetry.TrackEvent( "RC_Car_StartDrivingButtonPressed" );
203 | }
204 |
205 | private void stopButton_Click( object sender, RoutedEventArgs e )
206 | {
207 | if( accelerometer != null )
208 | {
209 | accelerometer.ReadingChanged -= Accelerometer_ReadingChanged;
210 | }
211 | turn = Turn.none;
212 | direction = Direction.none;
213 | arduino.digitalWrite( LEFT_CONTROL_PIN, PinState.LOW );
214 | arduino.digitalWrite( RIGHT_CONTROL_PIN, PinState.LOW );
215 | arduino.digitalWrite( FORWARD_CONTROL_PIN, PinState.LOW );
216 | arduino.digitalWrite( REVERSE_CONTROL_PIN, PinState.LOW );
217 | App.Telemetry.TrackEvent( "RC_Car_StopDrivingButtonPressed" );
218 | }
219 |
220 | private void disconnectButton_Click( object sender, RoutedEventArgs e )
221 | {
222 | stopAndReturn();
223 | App.Telemetry.TrackEvent( "RC_Car_DisconnectButtonPressed" );
224 | }
225 |
226 | private void UpdateUI( AccelerometerReading reading )
227 | {
228 | statusTextBlock.Text = "getting data";
229 |
230 | // Show the numeric values.
231 | xTextBlock.Text = "X: " + reading.AccelerationX.ToString( "0.00" );
232 | yTextBlock.Text = "Y: " + reading.AccelerationY.ToString( "0.00" );
233 | zTextBlock.Text = "Z: " + reading.AccelerationZ.ToString( "0.00" );
234 |
235 | // Show the values graphically.
236 | xLine.X2 = xLine.X1 + reading.AccelerationX * 200;
237 | yLine.Y2 = yLine.Y1 - reading.AccelerationY * 200;
238 | }
239 |
240 | private void stopAndReturn()
241 | {
242 | stopButton_Click( null, null );
243 | App.Bluetooth.end();
244 | App.Bluetooth = null;
245 | App.Arduino = null;
246 | Frame.Navigate( typeof( MainPage ) );
247 | }
248 | }
249 | }
250 |
--------------------------------------------------------------------------------
/win10/remote-controlled-car/remote-controlled-car/MainPage.xaml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/win10/remote-controlled-car/remote-controlled-car/MainPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Windows.Devices.Enumeration;
3 | using Windows.Devices.Sensors;
4 | using Windows.UI.Xaml;
5 | using Windows.UI.Xaml.Controls;
6 | using Windows.UI.Xaml.Navigation;
7 | using Communication;
8 | using Microsoft.Maker.Serial;
9 | using Microsoft.Maker.RemoteWiring;
10 | using System.Collections.Generic;
11 |
12 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
13 |
14 | namespace remote_controlled_car
15 | {
16 | ///
17 | /// An empty page that can be used on its own or navigated to within a Frame.
18 | ///
19 | public sealed partial class MainPage : Page
20 | {
21 | private Connections _connections = null;
22 | DateTime connectionAttemptStartedTime;
23 |
24 | public MainPage()
25 | {
26 | this.InitializeComponent();
27 |
28 | App.Telemetry.TrackPageView( "RC_Car_MainPage" );
29 | App.Accelerometer = Accelerometer.GetDefault();
30 | if( App.Accelerometer == null )
31 | {
32 | // The device on which the application is running does not support
33 | // the accelerometer sensor. Alert the user and disable the
34 | // Start and Stop buttons.
35 | App.Telemetry.TrackEvent( "RC_Car_NoAccelerometer" );
36 | mTextBlock.Text = "device does not support accelerometer";
37 | setButtonsEnabled( false );
38 | }
39 | }
40 |
41 | protected override void OnNavigatedTo( NavigationEventArgs e )
42 | {
43 | base.OnNavigatedTo( e );
44 | if( _connections == null )
45 | {
46 | RefreshDeviceList();
47 | }
48 | }
49 |
50 | private void RefreshDeviceList()
51 | {
52 | //invoke the listAvailableDevicesAsync method of BluetoothSerial. Since it is Async, we will wrap it in a Task and add a llambda to execute when finished
53 | BluetoothSerial.listAvailableDevicesAsync().AsTask().ContinueWith( listTask =>
54 | {
55 | //store the result and populate the device list on the UI thread
56 | var action = Dispatcher.RunAsync( Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler( () =>
57 | {
58 | _connections = new Connections();
59 | foreach( DeviceInformation device in listTask.Result )
60 | {
61 | _connections.Add( new Connection( device.Name, device ) );
62 | }
63 | connectList.ItemsSource = _connections;
64 | } ) );
65 | } );
66 | }
67 |
68 | private void Refresh_Click( object sender, RoutedEventArgs e )
69 | {
70 | RefreshDeviceList();
71 | }
72 |
73 | private void Reconnect_Click( object sender, RoutedEventArgs e )
74 | {
75 | if( connectList.SelectedItem != null )
76 | {
77 | setButtonsEnabled( false );
78 | mTextBlock.Text = "Connecting...";
79 |
80 | var selectedConnection = connectList.SelectedItem as Connection;
81 | var device = selectedConnection.Source as DeviceInformation;
82 |
83 | //send telemetry about this connection attempt
84 | var properties = new Dictionary();
85 | properties.Add( "Device_Name", device.Name );
86 | properties.Add( "Device_ID", device.Id );
87 | properties.Add( "Device_Kind", device.Kind.ToString() );
88 | App.Telemetry.TrackEvent( "RC_Car_Bluetooth_Connection_Attempt", properties );
89 |
90 | //construct the bluetooth serial object with the specified device
91 | App.Bluetooth = new BluetoothSerial( device );
92 | App.Arduino = new RemoteDevice( App.Bluetooth );
93 |
94 | App.Arduino.DeviceReady += Arduino_OnDeviceReady;
95 | App.Arduino.DeviceConnectionFailed += Arduino_OnDeviceConnectionFailed;
96 |
97 | connectionAttemptStartedTime = DateTime.Now;
98 | App.Bluetooth.begin( 115200, 0 );
99 | }
100 | }
101 |
102 | private void Arduino_OnDeviceConnectionFailed( string message )
103 | {
104 | App.Bluetooth.ConnectionEstablished -= Arduino_OnDeviceReady;
105 | App.Bluetooth.ConnectionFailed -= Arduino_OnDeviceConnectionFailed;
106 | var action = Dispatcher.RunAsync( Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler( () =>
107 | {
108 | setButtonsEnabled( true );
109 | mTextBlock.Text = "Connection failed.";
110 |
111 | //telemetry
112 | App.Telemetry.TrackRequest( "Connection_Failed_Event", DateTimeOffset.Now, DateTime.Now - connectionAttemptStartedTime, message, true );
113 | } ) );
114 | }
115 |
116 | private void Arduino_OnDeviceReady()
117 | {
118 | App.Bluetooth.ConnectionEstablished -= Arduino_OnDeviceReady;
119 | App.Bluetooth.ConnectionFailed -= Arduino_OnDeviceConnectionFailed;
120 | var action = Dispatcher.RunAsync( Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler( () =>
121 | {
122 | //telemetry
123 | App.Telemetry.TrackRequest( "RC_Car_Connection_Success_Event", DateTimeOffset.Now, DateTime.Now - connectionAttemptStartedTime, string.Empty, true );
124 |
125 | Frame.Navigate( typeof( ControlPage ) );
126 | } ) );
127 | }
128 |
129 | private void setButtonsEnabled( bool enabled )
130 | {
131 | var action = Dispatcher.RunAsync( Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler( () =>
132 | {
133 | Reconnect.IsEnabled = enabled;
134 | Refresh.IsEnabled = enabled;
135 | } ) );
136 | }
137 | }
138 | }
139 |
--------------------------------------------------------------------------------
/win10/remote-controlled-car/remote-controlled-car/Package.appxmanifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
13 |
14 |
15 |
16 |
17 | remote-controlled-car
18 | jessefr
19 | Assets\StoreLogo.png
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
34 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/win10/remote-controlled-car/remote-controlled-car/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("remote-controlled-car")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("remote-controlled-car")]
13 | [assembly: AssemblyCopyright("Copyright © 2015")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Version information for an assembly consists of the following four values:
18 | //
19 | // Major Version
20 | // Minor Version
21 | // Build Number
22 | // Revision
23 | //
24 | // You can specify all the values or you can default the Build and Revision Numbers
25 | // by using the '*' as shown below:
26 | // [assembly: AssemblyVersion("1.0.*")]
27 | [assembly: AssemblyVersion("1.0.0.0")]
28 | [assembly: AssemblyFileVersion("1.0.0.0")]
29 | [assembly: ComVisible(false)]
--------------------------------------------------------------------------------
/win10/remote-controlled-car/remote-controlled-car/Properties/Default.rd.xml:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/win10/remote-controlled-car/remote-controlled-car/Service References/Application Insights/ConnectedService.json:
--------------------------------------------------------------------------------
1 | {
2 | "ProviderId": "Microsoft.ApplicationInsights.ConnectedService.ConnectedServiceProvider",
3 | "Version": "3.3.1.0",
4 | "GettingStartedDocument": {
5 | "Uri": "http://go.microsoft.com/fwlink/?LinkID=613412"
6 | }
7 | }
--------------------------------------------------------------------------------
/win10/remote-controlled-car/remote-controlled-car/project.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "Microsoft.ApplicationInsights": "1.0.0",
4 | "Microsoft.ApplicationInsights.PersistenceChannel": "1.0.0",
5 | "Microsoft.ApplicationInsights.WindowsApps": "1.0.0",
6 | "Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0"
7 | },
8 | "frameworks": {
9 | "uap10.0": {}
10 | },
11 | "runtimes": {
12 | "win10-arm": {},
13 | "win10-arm-aot": {},
14 | "win10-x86": {},
15 | "win10-x86-aot": {},
16 | "win10-x64": {},
17 | "win10-x64-aot": {}
18 | }
19 | }
--------------------------------------------------------------------------------
/win10/remote-controlled-car/remote-controlled-car/remote-controlled-car.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | x86
7 | {1CB99784-F7B3-4A7D-87D2-7F55149364FD}
8 | AppContainerExe
9 | Properties
10 | remote_controlled_car
11 | remote-controlled-car
12 | en-US
13 | UAP
14 | 10.0.10240.0
15 | 10.0.10240.0
16 | 14
17 | true
18 | 512
19 | {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
20 | remote-controlled-car_TemporaryKey.pfx
21 | /subscriptions/0445ef8f-446e-4cbe-9c04-a74b90c9eb32/resourcegroups/Group-1/providers/microsoft.insights/components/Remote Arduino General - Public
22 |
23 |
24 | true
25 | bin\ARM\Debug\
26 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
27 | ;2008
28 | full
29 | ARM
30 | false
31 | prompt
32 | true
33 |
34 |
35 | bin\ARM\Release\
36 | TRACE;NETFX_CORE;WINDOWS_UWP
37 | true
38 | ;2008
39 | pdbonly
40 | ARM
41 | false
42 | prompt
43 | true
44 | true
45 |
46 |
47 | true
48 | bin\x64\Debug\
49 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
50 | ;2008
51 | full
52 | x64
53 | false
54 | prompt
55 | true
56 |
57 |
58 | bin\x64\Release\
59 | TRACE;NETFX_CORE;WINDOWS_UWP
60 | true
61 | ;2008
62 | pdbonly
63 | x64
64 | false
65 | prompt
66 | true
67 | true
68 |
69 |
70 | true
71 | bin\x86\Debug\
72 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
73 | ;2008
74 | full
75 | x86
76 | false
77 | prompt
78 | true
79 |
80 |
81 | bin\x86\Release\
82 | TRACE;NETFX_CORE;WINDOWS_UWP
83 | true
84 | ;2008
85 | pdbonly
86 | x86
87 | false
88 | prompt
89 | true
90 | true
91 |
92 |
93 |
94 |
95 | PreserveNewest
96 |
97 |
98 |
99 |
100 |
101 |
102 | App.xaml
103 |
104 |
105 |
106 |
107 | ControlPage.xaml
108 |
109 |
110 | ControlPageMaisto.xaml
111 |
112 |
113 | MainPage.xaml
114 |
115 |
116 |
117 |
118 |
119 | Designer
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 | MSBuild:Compile
136 | Designer
137 |
138 |
139 | MSBuild:Compile
140 | Designer
141 |
142 |
143 | MSBuild:Compile
144 | Designer
145 |
146 |
147 | MSBuild:Compile
148 | Designer
149 |
150 |
151 |
152 |
153 | {f0a53bc9-c617-47dd-8b68-f91e3502d633}
154 | Microsoft.Maker.Firmata
155 |
156 |
157 | {5a8b1bb1-7cd5-47c4-a1f7-d7bcf5facad1}
158 | Microsoft.Maker.RemoteWiring
159 |
160 |
161 | {8376216c-282a-4927-b9ef-c2d545fe0bca}
162 | Microsoft.Maker.Serial
163 |
164 |
165 |
166 |
167 |
168 |
169 | 14.0
170 |
171 |
172 |
179 |
--------------------------------------------------------------------------------
/win8_1/RemoteBlinky/RemoteBlinky.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 2013
4 | VisualStudioVersion = 12.0.31101.0
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "RemoteBlinky", "RemoteBlinky", "{18567B72-D9CA-4E24-944C-CF8966730626}"
7 | EndProject
8 | Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "RemoteBlinky.Shared", "RemoteBlinky\RemoteBlinky.Shared\RemoteBlinky.Shared.shproj", "{66418108-ECAE-44AC-85AB-D127CF25D1CA}"
9 | EndProject
10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RemoteBlinky.Windows", "RemoteBlinky\RemoteBlinky.Windows\RemoteBlinky.Windows.csproj", "{FBA371C2-E063-4538-BED7-8479E7819EFF}"
11 | ProjectSection(ProjectDependencies) = postProject
12 | {8C570513-5FB3-4586-A757-B910E56B66A9} = {8C570513-5FB3-4586-A757-B910E56B66A9}
13 | {67ADAC13-BA28-4CB1-A706-17B0301171F1} = {67ADAC13-BA28-4CB1-A706-17B0301171F1}
14 | {02438027-2444-49CB-87BF-AC4D4DF8EF0F} = {02438027-2444-49CB-87BF-AC4D4DF8EF0F}
15 | EndProjectSection
16 | EndProject
17 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RemoteBlinky.WindowsPhone", "RemoteBlinky\RemoteBlinky.WindowsPhone\RemoteBlinky.WindowsPhone.csproj", "{6FF69EED-B105-452A-BAFB-BE9FCC44746C}"
18 | ProjectSection(ProjectDependencies) = postProject
19 | {83A94C48-AF35-4FD9-B6C2-B0C12254ABFF} = {83A94C48-AF35-4FD9-B6C2-B0C12254ABFF}
20 | {E26CE8BA-B9DC-45F6-8D7D-D019A42ADE3F} = {E26CE8BA-B9DC-45F6-8D7D-D019A42ADE3F}
21 | {2B16A0FE-EA4F-411D-B25E-2FF9605C875B} = {2B16A0FE-EA4F-411D-B25E-2FF9605C875B}
22 | EndProjectSection
23 | EndProject
24 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.Maker.Serial.Windows", "..\..\remote-wiring\Microsoft.Maker.win8_1\Microsoft.Maker.Serial\Microsoft.Maker.Serial.Windows\Microsoft.Maker.Serial.Windows.vcxproj", "{02438027-2444-49CB-87BF-AC4D4DF8EF0F}"
25 | EndProject
26 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.Maker.Serial.WindowsPhone", "..\..\remote-wiring\Microsoft.Maker.win8_1\Microsoft.Maker.Serial\Microsoft.Maker.Serial.WindowsPhone\Microsoft.Maker.Serial.WindowsPhone.vcxproj", "{E26CE8BA-B9DC-45F6-8D7D-D019A42ADE3F}"
27 | EndProject
28 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.Maker.Firmata.Windows", "..\..\remote-wiring\Microsoft.Maker.win8_1\Microsoft.Maker.Firmata\Microsoft.Maker.Firmata.Windows\Microsoft.Maker.Firmata.Windows.vcxproj", "{8C570513-5FB3-4586-A757-B910E56B66A9}"
29 | EndProject
30 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.Maker.Firmata.WindowsPhone", "..\..\remote-wiring\Microsoft.Maker.win8_1\Microsoft.Maker.Firmata\Microsoft.Maker.Firmata.WindowsPhone\Microsoft.Maker.Firmata.WindowsPhone.vcxproj", "{83A94C48-AF35-4FD9-B6C2-B0C12254ABFF}"
31 | EndProject
32 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.Maker.RemoteWiring.Windows", "..\..\remote-wiring\Microsoft.Maker.win8_1\Microsoft.Maker.RemoteWiring\Microsoft.Maker.RemoteWiring.Windows\Microsoft.Maker.RemoteWiring.Windows.vcxproj", "{67ADAC13-BA28-4CB1-A706-17B0301171F1}"
33 | EndProject
34 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.Maker.RemoteWiring.WindowsPhone", "..\..\remote-wiring\Microsoft.Maker.win8_1\Microsoft.Maker.RemoteWiring\Microsoft.Maker.RemoteWiring.WindowsPhone\Microsoft.Maker.RemoteWiring.WindowsPhone.vcxproj", "{2B16A0FE-EA4F-411D-B25E-2FF9605C875B}"
35 | EndProject
36 | Global
37 | GlobalSection(SharedMSBuildProjectFiles) = preSolution
38 | ..\..\remote-wiring\Microsoft.Maker.win8_1\Microsoft.Maker.Serial\Microsoft.Maker.Serial.Shared\Microsoft.Maker.Serial.Shared.vcxitems*{02438027-2444-49cb-87bf-ac4d4df8ef0f}*SharedItemsImports = 4
39 | ..\..\remote-wiring\Microsoft.Maker.win8_1\Microsoft.Maker.Serial\Microsoft.Maker.Serial.Shared\Microsoft.Maker.Serial.Shared.vcxitems*{e26ce8ba-b9dc-45f6-8d7d-d019a42ade3f}*SharedItemsImports = 4
40 | ..\..\remote-wiring\Microsoft.Maker.win8_1\Microsoft.Maker.Firmata\Microsoft.Maker.Firmata.Shared\Microsoft.Maker.Firmata.Shared.vcxitems*{83a94c48-af35-4fd9-b6c2-b0c12254abff}*SharedItemsImports = 4
41 | RemoteBlinky\RemoteBlinky.Shared\RemoteBlinky.Shared.projitems*{fba371c2-e063-4538-bed7-8479e7819eff}*SharedItemsImports = 4
42 | ..\..\remote-wiring\Microsoft.Maker.win8_1\Microsoft.Maker.RemoteWiring\Microsoft.Maker.RemoteWiring.Shared\Microsoft.Maker.RemoteWiring.Shared.vcxitems*{67adac13-ba28-4cb1-a706-17b0301171f1}*SharedItemsImports = 4
43 | ..\..\remote-wiring\Microsoft.Maker.win8_1\Microsoft.Maker.RemoteWiring\Microsoft.Maker.RemoteWiring.Shared\Microsoft.Maker.RemoteWiring.Shared.vcxitems*{2b16a0fe-ea4f-411d-b25e-2ff9605c875b}*SharedItemsImports = 4
44 | RemoteBlinky\RemoteBlinky.Shared\RemoteBlinky.Shared.projitems*{66418108-ecae-44ac-85ab-d127cf25d1ca}*SharedItemsImports = 13
45 | RemoteBlinky\RemoteBlinky.Shared\RemoteBlinky.Shared.projitems*{6ff69eed-b105-452a-bafb-be9fcc44746c}*SharedItemsImports = 4
46 | ..\..\remote-wiring\Microsoft.Maker.win8_1\Microsoft.Maker.Firmata\Microsoft.Maker.Firmata.Shared\Microsoft.Maker.Firmata.Shared.vcxitems*{8c570513-5fb3-4586-a757-b910e56b66a9}*SharedItemsImports = 4
47 | EndGlobalSection
48 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
49 | Debug|Any CPU = Debug|Any CPU
50 | Debug|ARM = Debug|ARM
51 | Debug|Mixed Platforms = Debug|Mixed Platforms
52 | Debug|Win32 = Debug|Win32
53 | Debug|x64 = Debug|x64
54 | Debug|x86 = Debug|x86
55 | Release|Any CPU = Release|Any CPU
56 | Release|ARM = Release|ARM
57 | Release|Mixed Platforms = Release|Mixed Platforms
58 | Release|Win32 = Release|Win32
59 | Release|x64 = Release|x64
60 | Release|x86 = Release|x86
61 | EndGlobalSection
62 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
63 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
64 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Debug|Any CPU.Build.0 = Debug|Any CPU
65 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
66 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Debug|ARM.ActiveCfg = Debug|ARM
67 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Debug|ARM.Build.0 = Debug|ARM
68 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Debug|ARM.Deploy.0 = Debug|ARM
69 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
70 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Debug|Mixed Platforms.Build.0 = Debug|x64
71 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Debug|Mixed Platforms.Deploy.0 = Debug|x64
72 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Debug|Win32.ActiveCfg = Debug|x86
73 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Debug|Win32.Build.0 = Debug|x86
74 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Debug|Win32.Deploy.0 = Debug|x86
75 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Debug|x64.ActiveCfg = Debug|x64
76 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Debug|x64.Build.0 = Debug|x64
77 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Debug|x64.Deploy.0 = Debug|x64
78 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Debug|x86.ActiveCfg = Debug|x86
79 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Debug|x86.Build.0 = Debug|x86
80 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Debug|x86.Deploy.0 = Debug|x86
81 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Release|Any CPU.ActiveCfg = Release|Any CPU
82 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Release|Any CPU.Build.0 = Release|Any CPU
83 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Release|Any CPU.Deploy.0 = Release|Any CPU
84 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Release|ARM.ActiveCfg = Release|ARM
85 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Release|ARM.Build.0 = Release|ARM
86 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Release|ARM.Deploy.0 = Release|ARM
87 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Release|Mixed Platforms.ActiveCfg = Release|x64
88 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Release|Mixed Platforms.Build.0 = Release|x64
89 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Release|Mixed Platforms.Deploy.0 = Release|x64
90 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Release|Win32.ActiveCfg = Release|x86
91 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Release|Win32.Build.0 = Release|x86
92 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Release|Win32.Deploy.0 = Release|x86
93 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Release|x64.ActiveCfg = Release|x64
94 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Release|x64.Build.0 = Release|x64
95 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Release|x64.Deploy.0 = Release|x64
96 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Release|x86.ActiveCfg = Release|x86
97 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Release|x86.Build.0 = Release|x86
98 | {FBA371C2-E063-4538-BED7-8479E7819EFF}.Release|x86.Deploy.0 = Release|x86
99 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
100 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Debug|Any CPU.Build.0 = Debug|Any CPU
101 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
102 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Debug|ARM.ActiveCfg = Debug|ARM
103 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Debug|ARM.Build.0 = Debug|ARM
104 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Debug|ARM.Deploy.0 = Debug|ARM
105 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Debug|Mixed Platforms.ActiveCfg = Debug|ARM
106 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Debug|Mixed Platforms.Build.0 = Debug|ARM
107 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Debug|Mixed Platforms.Deploy.0 = Debug|ARM
108 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Debug|Win32.ActiveCfg = Debug|x86
109 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Debug|Win32.Build.0 = Debug|x86
110 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Debug|Win32.Deploy.0 = Debug|x86
111 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Debug|x64.ActiveCfg = Debug|Any CPU
112 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Debug|x86.ActiveCfg = Debug|x86
113 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Debug|x86.Build.0 = Debug|x86
114 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Debug|x86.Deploy.0 = Debug|x86
115 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Release|Any CPU.ActiveCfg = Release|Any CPU
116 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Release|Any CPU.Build.0 = Release|Any CPU
117 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Release|Any CPU.Deploy.0 = Release|Any CPU
118 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Release|ARM.ActiveCfg = Release|ARM
119 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Release|ARM.Build.0 = Release|ARM
120 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Release|ARM.Deploy.0 = Release|ARM
121 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Release|Mixed Platforms.ActiveCfg = Release|ARM
122 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Release|Mixed Platforms.Build.0 = Release|ARM
123 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Release|Mixed Platforms.Deploy.0 = Release|ARM
124 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Release|Win32.ActiveCfg = Release|x86
125 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Release|Win32.Build.0 = Release|x86
126 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Release|Win32.Deploy.0 = Release|x86
127 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Release|x64.ActiveCfg = Release|Any CPU
128 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Release|x86.ActiveCfg = Release|x86
129 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Release|x86.Build.0 = Release|x86
130 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}.Release|x86.Deploy.0 = Release|x86
131 | {02438027-2444-49CB-87BF-AC4D4DF8EF0F}.Debug|Any CPU.ActiveCfg = Debug|Win32
132 | {02438027-2444-49CB-87BF-AC4D4DF8EF0F}.Debug|ARM.ActiveCfg = Debug|ARM
133 | {02438027-2444-49CB-87BF-AC4D4DF8EF0F}.Debug|ARM.Build.0 = Debug|ARM
134 | {02438027-2444-49CB-87BF-AC4D4DF8EF0F}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
135 | {02438027-2444-49CB-87BF-AC4D4DF8EF0F}.Debug|Mixed Platforms.Build.0 = Debug|x64
136 | {02438027-2444-49CB-87BF-AC4D4DF8EF0F}.Debug|Win32.ActiveCfg = Debug|Win32
137 | {02438027-2444-49CB-87BF-AC4D4DF8EF0F}.Debug|Win32.Build.0 = Debug|Win32
138 | {02438027-2444-49CB-87BF-AC4D4DF8EF0F}.Debug|x64.ActiveCfg = Debug|x64
139 | {02438027-2444-49CB-87BF-AC4D4DF8EF0F}.Debug|x64.Build.0 = Debug|x64
140 | {02438027-2444-49CB-87BF-AC4D4DF8EF0F}.Debug|x86.ActiveCfg = Debug|Win32
141 | {02438027-2444-49CB-87BF-AC4D4DF8EF0F}.Debug|x86.Build.0 = Debug|Win32
142 | {02438027-2444-49CB-87BF-AC4D4DF8EF0F}.Release|Any CPU.ActiveCfg = Release|Win32
143 | {02438027-2444-49CB-87BF-AC4D4DF8EF0F}.Release|ARM.ActiveCfg = Release|ARM
144 | {02438027-2444-49CB-87BF-AC4D4DF8EF0F}.Release|ARM.Build.0 = Release|ARM
145 | {02438027-2444-49CB-87BF-AC4D4DF8EF0F}.Release|Mixed Platforms.ActiveCfg = Release|x64
146 | {02438027-2444-49CB-87BF-AC4D4DF8EF0F}.Release|Mixed Platforms.Build.0 = Release|x64
147 | {02438027-2444-49CB-87BF-AC4D4DF8EF0F}.Release|Win32.ActiveCfg = Release|Win32
148 | {02438027-2444-49CB-87BF-AC4D4DF8EF0F}.Release|Win32.Build.0 = Release|Win32
149 | {02438027-2444-49CB-87BF-AC4D4DF8EF0F}.Release|x64.ActiveCfg = Release|x64
150 | {02438027-2444-49CB-87BF-AC4D4DF8EF0F}.Release|x64.Build.0 = Release|x64
151 | {02438027-2444-49CB-87BF-AC4D4DF8EF0F}.Release|x86.ActiveCfg = Release|Win32
152 | {02438027-2444-49CB-87BF-AC4D4DF8EF0F}.Release|x86.Build.0 = Release|Win32
153 | {E26CE8BA-B9DC-45F6-8D7D-D019A42ADE3F}.Debug|Any CPU.ActiveCfg = Debug|Win32
154 | {E26CE8BA-B9DC-45F6-8D7D-D019A42ADE3F}.Debug|ARM.ActiveCfg = Debug|ARM
155 | {E26CE8BA-B9DC-45F6-8D7D-D019A42ADE3F}.Debug|ARM.Build.0 = Debug|ARM
156 | {E26CE8BA-B9DC-45F6-8D7D-D019A42ADE3F}.Debug|Mixed Platforms.ActiveCfg = Debug|ARM
157 | {E26CE8BA-B9DC-45F6-8D7D-D019A42ADE3F}.Debug|Mixed Platforms.Build.0 = Debug|ARM
158 | {E26CE8BA-B9DC-45F6-8D7D-D019A42ADE3F}.Debug|Win32.ActiveCfg = Debug|Win32
159 | {E26CE8BA-B9DC-45F6-8D7D-D019A42ADE3F}.Debug|Win32.Build.0 = Debug|Win32
160 | {E26CE8BA-B9DC-45F6-8D7D-D019A42ADE3F}.Debug|x64.ActiveCfg = Debug|Win32
161 | {E26CE8BA-B9DC-45F6-8D7D-D019A42ADE3F}.Debug|x86.ActiveCfg = Debug|Win32
162 | {E26CE8BA-B9DC-45F6-8D7D-D019A42ADE3F}.Debug|x86.Build.0 = Debug|Win32
163 | {E26CE8BA-B9DC-45F6-8D7D-D019A42ADE3F}.Release|Any CPU.ActiveCfg = Release|Win32
164 | {E26CE8BA-B9DC-45F6-8D7D-D019A42ADE3F}.Release|ARM.ActiveCfg = Release|ARM
165 | {E26CE8BA-B9DC-45F6-8D7D-D019A42ADE3F}.Release|ARM.Build.0 = Release|ARM
166 | {E26CE8BA-B9DC-45F6-8D7D-D019A42ADE3F}.Release|Mixed Platforms.ActiveCfg = Release|ARM
167 | {E26CE8BA-B9DC-45F6-8D7D-D019A42ADE3F}.Release|Mixed Platforms.Build.0 = Release|ARM
168 | {E26CE8BA-B9DC-45F6-8D7D-D019A42ADE3F}.Release|Win32.ActiveCfg = Release|Win32
169 | {E26CE8BA-B9DC-45F6-8D7D-D019A42ADE3F}.Release|Win32.Build.0 = Release|Win32
170 | {E26CE8BA-B9DC-45F6-8D7D-D019A42ADE3F}.Release|x64.ActiveCfg = Release|Win32
171 | {E26CE8BA-B9DC-45F6-8D7D-D019A42ADE3F}.Release|x86.ActiveCfg = Release|Win32
172 | {E26CE8BA-B9DC-45F6-8D7D-D019A42ADE3F}.Release|x86.Build.0 = Release|Win32
173 | {8C570513-5FB3-4586-A757-B910E56B66A9}.Debug|Any CPU.ActiveCfg = Debug|Win32
174 | {8C570513-5FB3-4586-A757-B910E56B66A9}.Debug|ARM.ActiveCfg = Debug|ARM
175 | {8C570513-5FB3-4586-A757-B910E56B66A9}.Debug|ARM.Build.0 = Debug|ARM
176 | {8C570513-5FB3-4586-A757-B910E56B66A9}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
177 | {8C570513-5FB3-4586-A757-B910E56B66A9}.Debug|Mixed Platforms.Build.0 = Debug|x64
178 | {8C570513-5FB3-4586-A757-B910E56B66A9}.Debug|Win32.ActiveCfg = Debug|Win32
179 | {8C570513-5FB3-4586-A757-B910E56B66A9}.Debug|Win32.Build.0 = Debug|Win32
180 | {8C570513-5FB3-4586-A757-B910E56B66A9}.Debug|x64.ActiveCfg = Debug|x64
181 | {8C570513-5FB3-4586-A757-B910E56B66A9}.Debug|x64.Build.0 = Debug|x64
182 | {8C570513-5FB3-4586-A757-B910E56B66A9}.Debug|x86.ActiveCfg = Debug|Win32
183 | {8C570513-5FB3-4586-A757-B910E56B66A9}.Debug|x86.Build.0 = Debug|Win32
184 | {8C570513-5FB3-4586-A757-B910E56B66A9}.Release|Any CPU.ActiveCfg = Release|Win32
185 | {8C570513-5FB3-4586-A757-B910E56B66A9}.Release|ARM.ActiveCfg = Release|ARM
186 | {8C570513-5FB3-4586-A757-B910E56B66A9}.Release|ARM.Build.0 = Release|ARM
187 | {8C570513-5FB3-4586-A757-B910E56B66A9}.Release|Mixed Platforms.ActiveCfg = Release|x64
188 | {8C570513-5FB3-4586-A757-B910E56B66A9}.Release|Mixed Platforms.Build.0 = Release|x64
189 | {8C570513-5FB3-4586-A757-B910E56B66A9}.Release|Win32.ActiveCfg = Release|Win32
190 | {8C570513-5FB3-4586-A757-B910E56B66A9}.Release|Win32.Build.0 = Release|Win32
191 | {8C570513-5FB3-4586-A757-B910E56B66A9}.Release|x64.ActiveCfg = Release|x64
192 | {8C570513-5FB3-4586-A757-B910E56B66A9}.Release|x64.Build.0 = Release|x64
193 | {8C570513-5FB3-4586-A757-B910E56B66A9}.Release|x86.ActiveCfg = Release|Win32
194 | {8C570513-5FB3-4586-A757-B910E56B66A9}.Release|x86.Build.0 = Release|Win32
195 | {83A94C48-AF35-4FD9-B6C2-B0C12254ABFF}.Debug|Any CPU.ActiveCfg = Debug|Win32
196 | {83A94C48-AF35-4FD9-B6C2-B0C12254ABFF}.Debug|ARM.ActiveCfg = Debug|ARM
197 | {83A94C48-AF35-4FD9-B6C2-B0C12254ABFF}.Debug|ARM.Build.0 = Debug|ARM
198 | {83A94C48-AF35-4FD9-B6C2-B0C12254ABFF}.Debug|Mixed Platforms.ActiveCfg = Debug|ARM
199 | {83A94C48-AF35-4FD9-B6C2-B0C12254ABFF}.Debug|Mixed Platforms.Build.0 = Debug|ARM
200 | {83A94C48-AF35-4FD9-B6C2-B0C12254ABFF}.Debug|Win32.ActiveCfg = Debug|Win32
201 | {83A94C48-AF35-4FD9-B6C2-B0C12254ABFF}.Debug|Win32.Build.0 = Debug|Win32
202 | {83A94C48-AF35-4FD9-B6C2-B0C12254ABFF}.Debug|x64.ActiveCfg = Debug|Win32
203 | {83A94C48-AF35-4FD9-B6C2-B0C12254ABFF}.Debug|x86.ActiveCfg = Debug|Win32
204 | {83A94C48-AF35-4FD9-B6C2-B0C12254ABFF}.Debug|x86.Build.0 = Debug|Win32
205 | {83A94C48-AF35-4FD9-B6C2-B0C12254ABFF}.Release|Any CPU.ActiveCfg = Release|Win32
206 | {83A94C48-AF35-4FD9-B6C2-B0C12254ABFF}.Release|ARM.ActiveCfg = Release|ARM
207 | {83A94C48-AF35-4FD9-B6C2-B0C12254ABFF}.Release|ARM.Build.0 = Release|ARM
208 | {83A94C48-AF35-4FD9-B6C2-B0C12254ABFF}.Release|Mixed Platforms.ActiveCfg = Release|ARM
209 | {83A94C48-AF35-4FD9-B6C2-B0C12254ABFF}.Release|Mixed Platforms.Build.0 = Release|ARM
210 | {83A94C48-AF35-4FD9-B6C2-B0C12254ABFF}.Release|Win32.ActiveCfg = Release|Win32
211 | {83A94C48-AF35-4FD9-B6C2-B0C12254ABFF}.Release|Win32.Build.0 = Release|Win32
212 | {83A94C48-AF35-4FD9-B6C2-B0C12254ABFF}.Release|x64.ActiveCfg = Release|Win32
213 | {83A94C48-AF35-4FD9-B6C2-B0C12254ABFF}.Release|x86.ActiveCfg = Release|Win32
214 | {83A94C48-AF35-4FD9-B6C2-B0C12254ABFF}.Release|x86.Build.0 = Release|Win32
215 | {67ADAC13-BA28-4CB1-A706-17B0301171F1}.Debug|Any CPU.ActiveCfg = Debug|Win32
216 | {67ADAC13-BA28-4CB1-A706-17B0301171F1}.Debug|ARM.ActiveCfg = Debug|ARM
217 | {67ADAC13-BA28-4CB1-A706-17B0301171F1}.Debug|ARM.Build.0 = Debug|ARM
218 | {67ADAC13-BA28-4CB1-A706-17B0301171F1}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
219 | {67ADAC13-BA28-4CB1-A706-17B0301171F1}.Debug|Mixed Platforms.Build.0 = Debug|x64
220 | {67ADAC13-BA28-4CB1-A706-17B0301171F1}.Debug|Win32.ActiveCfg = Debug|Win32
221 | {67ADAC13-BA28-4CB1-A706-17B0301171F1}.Debug|Win32.Build.0 = Debug|Win32
222 | {67ADAC13-BA28-4CB1-A706-17B0301171F1}.Debug|x64.ActiveCfg = Debug|x64
223 | {67ADAC13-BA28-4CB1-A706-17B0301171F1}.Debug|x64.Build.0 = Debug|x64
224 | {67ADAC13-BA28-4CB1-A706-17B0301171F1}.Debug|x86.ActiveCfg = Debug|Win32
225 | {67ADAC13-BA28-4CB1-A706-17B0301171F1}.Debug|x86.Build.0 = Debug|Win32
226 | {67ADAC13-BA28-4CB1-A706-17B0301171F1}.Release|Any CPU.ActiveCfg = Release|Win32
227 | {67ADAC13-BA28-4CB1-A706-17B0301171F1}.Release|ARM.ActiveCfg = Release|ARM
228 | {67ADAC13-BA28-4CB1-A706-17B0301171F1}.Release|ARM.Build.0 = Release|ARM
229 | {67ADAC13-BA28-4CB1-A706-17B0301171F1}.Release|Mixed Platforms.ActiveCfg = Release|x64
230 | {67ADAC13-BA28-4CB1-A706-17B0301171F1}.Release|Mixed Platforms.Build.0 = Release|x64
231 | {67ADAC13-BA28-4CB1-A706-17B0301171F1}.Release|Win32.ActiveCfg = Release|Win32
232 | {67ADAC13-BA28-4CB1-A706-17B0301171F1}.Release|Win32.Build.0 = Release|Win32
233 | {67ADAC13-BA28-4CB1-A706-17B0301171F1}.Release|x64.ActiveCfg = Release|x64
234 | {67ADAC13-BA28-4CB1-A706-17B0301171F1}.Release|x64.Build.0 = Release|x64
235 | {67ADAC13-BA28-4CB1-A706-17B0301171F1}.Release|x86.ActiveCfg = Release|Win32
236 | {67ADAC13-BA28-4CB1-A706-17B0301171F1}.Release|x86.Build.0 = Release|Win32
237 | {2B16A0FE-EA4F-411D-B25E-2FF9605C875B}.Debug|Any CPU.ActiveCfg = Debug|Win32
238 | {2B16A0FE-EA4F-411D-B25E-2FF9605C875B}.Debug|ARM.ActiveCfg = Debug|ARM
239 | {2B16A0FE-EA4F-411D-B25E-2FF9605C875B}.Debug|ARM.Build.0 = Debug|ARM
240 | {2B16A0FE-EA4F-411D-B25E-2FF9605C875B}.Debug|Mixed Platforms.ActiveCfg = Debug|ARM
241 | {2B16A0FE-EA4F-411D-B25E-2FF9605C875B}.Debug|Mixed Platforms.Build.0 = Debug|ARM
242 | {2B16A0FE-EA4F-411D-B25E-2FF9605C875B}.Debug|Win32.ActiveCfg = Debug|Win32
243 | {2B16A0FE-EA4F-411D-B25E-2FF9605C875B}.Debug|Win32.Build.0 = Debug|Win32
244 | {2B16A0FE-EA4F-411D-B25E-2FF9605C875B}.Debug|x64.ActiveCfg = Debug|Win32
245 | {2B16A0FE-EA4F-411D-B25E-2FF9605C875B}.Debug|x86.ActiveCfg = Debug|Win32
246 | {2B16A0FE-EA4F-411D-B25E-2FF9605C875B}.Debug|x86.Build.0 = Debug|Win32
247 | {2B16A0FE-EA4F-411D-B25E-2FF9605C875B}.Release|Any CPU.ActiveCfg = Release|Win32
248 | {2B16A0FE-EA4F-411D-B25E-2FF9605C875B}.Release|ARM.ActiveCfg = Release|ARM
249 | {2B16A0FE-EA4F-411D-B25E-2FF9605C875B}.Release|ARM.Build.0 = Release|ARM
250 | {2B16A0FE-EA4F-411D-B25E-2FF9605C875B}.Release|Mixed Platforms.ActiveCfg = Release|ARM
251 | {2B16A0FE-EA4F-411D-B25E-2FF9605C875B}.Release|Mixed Platforms.Build.0 = Release|ARM
252 | {2B16A0FE-EA4F-411D-B25E-2FF9605C875B}.Release|Win32.ActiveCfg = Release|Win32
253 | {2B16A0FE-EA4F-411D-B25E-2FF9605C875B}.Release|Win32.Build.0 = Release|Win32
254 | {2B16A0FE-EA4F-411D-B25E-2FF9605C875B}.Release|x64.ActiveCfg = Release|Win32
255 | {2B16A0FE-EA4F-411D-B25E-2FF9605C875B}.Release|x86.ActiveCfg = Release|Win32
256 | {2B16A0FE-EA4F-411D-B25E-2FF9605C875B}.Release|x86.Build.0 = Release|Win32
257 | EndGlobalSection
258 | GlobalSection(SolutionProperties) = preSolution
259 | HideSolutionNode = FALSE
260 | EndGlobalSection
261 | GlobalSection(NestedProjects) = preSolution
262 | {66418108-ECAE-44AC-85AB-D127CF25D1CA} = {18567B72-D9CA-4E24-944C-CF8966730626}
263 | {FBA371C2-E063-4538-BED7-8479E7819EFF} = {18567B72-D9CA-4E24-944C-CF8966730626}
264 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C} = {18567B72-D9CA-4E24-944C-CF8966730626}
265 | EndGlobalSection
266 | EndGlobal
267 |
--------------------------------------------------------------------------------
/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.Shared/App.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.Shared/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Linq;
5 | using System.Runtime.InteropServices.WindowsRuntime;
6 | using Windows.ApplicationModel;
7 | using Windows.ApplicationModel.Activation;
8 | using Windows.Foundation;
9 | using Windows.Foundation.Collections;
10 | using Windows.UI.Xaml;
11 | using Windows.UI.Xaml.Controls;
12 | using Windows.UI.Xaml.Controls.Primitives;
13 | using Windows.UI.Xaml.Data;
14 | using Windows.UI.Xaml.Input;
15 | using Windows.UI.Xaml.Media;
16 | using Windows.UI.Xaml.Media.Animation;
17 | using Windows.UI.Xaml.Navigation;
18 |
19 | // The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=234227
20 |
21 | namespace RemoteBlinky
22 | {
23 | ///
24 | /// Provides application-specific behavior to supplement the default Application class.
25 | ///
26 | public sealed partial class App : Application
27 | {
28 | #if WINDOWS_PHONE_APP
29 | private TransitionCollection transitions;
30 | #endif
31 |
32 | ///
33 | /// Initializes the singleton application object. This is the first line of authored code
34 | /// executed, and as such is the logical equivalent of main() or WinMain().
35 | ///
36 | public App()
37 | {
38 | this.InitializeComponent();
39 | this.Suspending += this.OnSuspending;
40 | }
41 |
42 | ///
43 | /// Invoked when the application is launched normally by the end user. Other entry points
44 | /// will be used when the application is launched to open a specific file, to display
45 | /// search results, and so forth.
46 | ///
47 | /// Details about the launch request and process.
48 | protected override void OnLaunched(LaunchActivatedEventArgs e)
49 | {
50 | #if DEBUG
51 | if (System.Diagnostics.Debugger.IsAttached)
52 | {
53 | this.DebugSettings.EnableFrameRateCounter = true;
54 | }
55 | #endif
56 |
57 | Frame rootFrame = Window.Current.Content as Frame;
58 |
59 | // Do not repeat app initialization when the Window already has content,
60 | // just ensure that the window is active
61 | if (rootFrame == null)
62 | {
63 | // Create a Frame to act as the navigation context and navigate to the first page
64 | rootFrame = new Frame();
65 |
66 | // TODO: change this value to a cache size that is appropriate for your application
67 | rootFrame.CacheSize = 1;
68 |
69 | if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
70 | {
71 | // TODO: Load state from previously suspended application
72 | }
73 |
74 | // Place the frame in the current Window
75 | Window.Current.Content = rootFrame;
76 | }
77 |
78 | if (rootFrame.Content == null)
79 | {
80 | #if WINDOWS_PHONE_APP
81 | // Removes the turnstile navigation for startup.
82 | if (rootFrame.ContentTransitions != null)
83 | {
84 | this.transitions = new TransitionCollection();
85 | foreach (var c in rootFrame.ContentTransitions)
86 | {
87 | this.transitions.Add(c);
88 | }
89 | }
90 |
91 | rootFrame.ContentTransitions = null;
92 | rootFrame.Navigated += this.RootFrame_FirstNavigated;
93 | #endif
94 |
95 | // When the navigation stack isn't restored navigate to the first page,
96 | // configuring the new page by passing required information as a navigation
97 | // parameter
98 | if (!rootFrame.Navigate(typeof(MainPage), e.Arguments))
99 | {
100 | throw new Exception("Failed to create initial page");
101 | }
102 | }
103 |
104 | // Ensure the current window is active
105 | Window.Current.Activate();
106 | }
107 |
108 | #if WINDOWS_PHONE_APP
109 | ///
110 | /// Restores the content transitions after the app has launched.
111 | ///
112 | /// The object where the handler is attached.
113 | /// Details about the navigation event.
114 | private void RootFrame_FirstNavigated(object sender, NavigationEventArgs e)
115 | {
116 | var rootFrame = sender as Frame;
117 | rootFrame.ContentTransitions = this.transitions ?? new TransitionCollection() { new NavigationThemeTransition() };
118 | rootFrame.Navigated -= this.RootFrame_FirstNavigated;
119 | }
120 | #endif
121 |
122 | ///
123 | /// Invoked when application execution is being suspended. Application state is saved
124 | /// without knowing whether the application will be terminated or resumed with the contents
125 | /// of memory still intact.
126 | ///
127 | /// The source of the suspend request.
128 | /// Details about the suspend request.
129 | private void OnSuspending(object sender, SuspendingEventArgs e)
130 | {
131 | var deferral = e.SuspendingOperation.GetDeferral();
132 |
133 | // TODO: Save application state and stop any background activity
134 | deferral.Complete();
135 | }
136 | }
137 | }
--------------------------------------------------------------------------------
/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.Shared/RemoteBlinky.Shared.projitems:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | $(MSBuildAllProjects);$(MSBuildThisFileFullPath)
5 | true
6 | 66418108-ecae-44ac-85ab-d127cf25d1ca
7 |
8 |
9 | RemoteBlinky
10 |
11 |
12 |
13 | Designer
14 |
15 |
16 | App.xaml
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.Shared/RemoteBlinky.Shared.shproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 66418108-ecae-44ac-85ab-d127cf25d1ca
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.Windows/Assets/Logo.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ms-iot/windows-remote-arduino-samples/31328a1c8648fbfe12b8ad2ae888aa5bd76d39a3/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.Windows/Assets/Logo.scale-100.png
--------------------------------------------------------------------------------
/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.Windows/Assets/SmallLogo.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ms-iot/windows-remote-arduino-samples/31328a1c8648fbfe12b8ad2ae888aa5bd76d39a3/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.Windows/Assets/SmallLogo.scale-100.png
--------------------------------------------------------------------------------
/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.Windows/Assets/SplashScreen.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ms-iot/windows-remote-arduino-samples/31328a1c8648fbfe12b8ad2ae888aa5bd76d39a3/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.Windows/Assets/SplashScreen.scale-100.png
--------------------------------------------------------------------------------
/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.Windows/Assets/StoreLogo.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ms-iot/windows-remote-arduino-samples/31328a1c8648fbfe12b8ad2ae888aa5bd76d39a3/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.Windows/Assets/StoreLogo.scale-100.png
--------------------------------------------------------------------------------
/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.Windows/MainPage.xaml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.Windows/MainPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Linq;
5 | using System.Runtime.InteropServices.WindowsRuntime;
6 | using Windows.Foundation;
7 | using Windows.Foundation.Collections;
8 | using Windows.UI.Xaml;
9 | using Windows.UI.Xaml.Controls;
10 | using Windows.UI.Xaml.Controls.Primitives;
11 | using Windows.UI.Xaml.Data;
12 | using Windows.UI.Xaml.Input;
13 | using Windows.UI.Xaml.Media;
14 | using Windows.UI.Xaml.Navigation;
15 | using Microsoft.Maker.Serial;
16 | using Microsoft.Maker.RemoteWiring;
17 |
18 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
19 |
20 | namespace RemoteBlinky
21 | {
22 | ///
23 | /// An empty page that can be used on its own or navigated to within a Frame.
24 | ///
25 | public sealed partial class MainPage : Page
26 | {
27 | //Usb is not supported on Win8.1. To see the USB connection steps, refer to the win10 solution instead.
28 | BluetoothSerial bluetooth;
29 | RemoteDevice arduino;
30 |
31 | public MainPage()
32 | {
33 | this.InitializeComponent();
34 |
35 | /*
36 | * I've written my bluetooth device name as a parameter to the BluetoothSerial constructor. You should change this to your previously-paired
37 | * device name if using Bluetooth. You can also use the BluetoothSerial.listAvailableDevicesAsync() function to list
38 | * available devices, but that is not covered in this sample.
39 | */
40 | bluetooth = new BluetoothSerial("RNBT-E072");
41 |
42 | arduino = new RemoteDevice(bluetooth);
43 | bluetooth.ConnectionEstablished += OnConnectionEstablished;
44 |
45 | //these parameters don't matter for bluetooth
46 | bluetooth.begin(115200, SerialConfig.SERIAL_8N1);
47 | }
48 |
49 | private void OnConnectionEstablished()
50 | {
51 | //enable the buttons on the UI thread!
52 | var action = Dispatcher.RunAsync( Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler( () => {
53 | OnButton.IsEnabled = true;
54 | OffButton.IsEnabled = true;
55 | }));
56 | }
57 |
58 | private void OnButton_Click( object sender, RoutedEventArgs e )
59 | {
60 | //turn the LED connected to pin 5 ON
61 | arduino.digitalWrite( 5, PinState.HIGH );
62 | }
63 |
64 | private void OffButton_Click( object sender, RoutedEventArgs e )
65 | {
66 | //turn the LED connected to pin 5 OFF
67 | arduino.digitalWrite( 5, PinState.LOW );
68 | }
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.Windows/Package.appxmanifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 | RemoteBlinky.Windows
10 | jessefr
11 | Assets\StoreLogo.png
12 |
13 |
14 |
15 | 6.3.0
16 | 6.3.0
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
27 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.Windows/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("RemoteBlinky.Windows")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("RemoteBlinky.Windows")]
13 | [assembly: AssemblyCopyright("Copyright © 2015")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Version information for an assembly consists of the following four values:
18 | //
19 | // Major Version
20 | // Minor Version
21 | // Build Number
22 | // Revision
23 | //
24 | // You can specify all the values or you can default the Build and Revision Numbers
25 | // by using the '*' as shown below:
26 | // [assembly: AssemblyVersion("1.0.*")]
27 | [assembly: AssemblyVersion("1.0.0.0")]
28 | [assembly: AssemblyFileVersion("1.0.0.0")]
29 | [assembly: ComVisible(false)]
--------------------------------------------------------------------------------
/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.Windows/RemoteBlinky.Windows.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {FBA371C2-E063-4538-BED7-8479E7819EFF}
8 | AppContainerExe
9 | Properties
10 | RemoteBlinky
11 | RemoteBlinky.Windows
12 | en-US
13 | 8.1
14 | 12
15 | 512
16 | true
17 | {BC8A1FFA-BEE3-4634-8014-F334798102B3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
18 | RemoteBlinky.Windows_TemporaryKey.pfx
19 |
20 |
21 | AnyCPU
22 | true
23 | full
24 | false
25 | bin\Debug\
26 | DEBUG;TRACE;NETFX_CORE;WINDOWS_APP
27 | prompt
28 | 4
29 |
30 |
31 | AnyCPU
32 | pdbonly
33 | true
34 | bin\Release\
35 | TRACE;NETFX_CORE;WINDOWS_APP
36 | prompt
37 | 4
38 |
39 |
40 | true
41 | bin\ARM\Debug\
42 | DEBUG;TRACE;NETFX_CORE;WINDOWS_APP
43 | ;2008
44 | full
45 | ARM
46 | false
47 | prompt
48 | true
49 |
50 |
51 | bin\ARM\Release\
52 | TRACE;NETFX_CORE;WINDOWS_APP
53 | true
54 | ;2008
55 | pdbonly
56 | ARM
57 | false
58 | prompt
59 | true
60 |
61 |
62 | true
63 | bin\x64\Debug\
64 | DEBUG;TRACE;NETFX_CORE;WINDOWS_APP
65 | ;2008
66 | full
67 | x64
68 | false
69 | prompt
70 | true
71 |
72 |
73 | bin\x64\Release\
74 | TRACE;NETFX_CORE;WINDOWS_APP
75 | true
76 | ;2008
77 | pdbonly
78 | x64
79 | false
80 | prompt
81 | true
82 |
83 |
84 | true
85 | bin\x86\Debug\
86 | DEBUG;TRACE;NETFX_CORE;WINDOWS_APP
87 | ;2008
88 | full
89 | x86
90 | false
91 | prompt
92 | true
93 |
94 |
95 | bin\x86\Release\
96 | TRACE;NETFX_CORE;WINDOWS_APP
97 | true
98 | ;2008
99 | pdbonly
100 | x86
101 | false
102 | prompt
103 | true
104 |
105 |
106 |
107 | MainPage.xaml
108 |
109 |
110 |
111 |
112 |
113 | Designer
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 | MSBuild:Compile
126 | Designer
127 |
128 |
129 |
130 |
131 | {8c570513-5fb3-4586-a757-b910e56b66a9}
132 | Microsoft.Maker.Firmata.Windows
133 |
134 |
135 | {67adac13-ba28-4cb1-a706-17b0301171f1}
136 | Microsoft.Maker.RemoteWiring.Windows
137 |
138 |
139 | {02438027-2444-49cb-87bf-ac4d4df8ef0f}
140 | Microsoft.Maker.Serial.Windows
141 |
142 |
143 |
144 | 12.0
145 |
146 |
147 |
148 |
155 |
--------------------------------------------------------------------------------
/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.WindowsPhone/Assets/Logo.scale-240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ms-iot/windows-remote-arduino-samples/31328a1c8648fbfe12b8ad2ae888aa5bd76d39a3/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.WindowsPhone/Assets/Logo.scale-240.png
--------------------------------------------------------------------------------
/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.WindowsPhone/Assets/SmallLogo.scale-240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ms-iot/windows-remote-arduino-samples/31328a1c8648fbfe12b8ad2ae888aa5bd76d39a3/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.WindowsPhone/Assets/SmallLogo.scale-240.png
--------------------------------------------------------------------------------
/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.WindowsPhone/Assets/SplashScreen.scale-240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ms-iot/windows-remote-arduino-samples/31328a1c8648fbfe12b8ad2ae888aa5bd76d39a3/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.WindowsPhone/Assets/SplashScreen.scale-240.png
--------------------------------------------------------------------------------
/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.WindowsPhone/Assets/Square71x71Logo.scale-240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ms-iot/windows-remote-arduino-samples/31328a1c8648fbfe12b8ad2ae888aa5bd76d39a3/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.WindowsPhone/Assets/Square71x71Logo.scale-240.png
--------------------------------------------------------------------------------
/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.WindowsPhone/Assets/StoreLogo.scale-240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ms-iot/windows-remote-arduino-samples/31328a1c8648fbfe12b8ad2ae888aa5bd76d39a3/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.WindowsPhone/Assets/StoreLogo.scale-240.png
--------------------------------------------------------------------------------
/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.WindowsPhone/Assets/WideLogo.scale-240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ms-iot/windows-remote-arduino-samples/31328a1c8648fbfe12b8ad2ae888aa5bd76d39a3/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.WindowsPhone/Assets/WideLogo.scale-240.png
--------------------------------------------------------------------------------
/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.WindowsPhone/MainPage.xaml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.WindowsPhone/MainPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Linq;
5 | using System.Runtime.InteropServices.WindowsRuntime;
6 | using Windows.Foundation;
7 | using Windows.Foundation.Collections;
8 | using Windows.UI.Xaml;
9 | using Windows.UI.Xaml.Controls;
10 | using Windows.UI.Xaml.Controls.Primitives;
11 | using Windows.UI.Xaml.Data;
12 | using Windows.UI.Xaml.Input;
13 | using Windows.UI.Xaml.Media;
14 | using Windows.UI.Xaml.Navigation;
15 | using Microsoft.Maker.Serial;
16 | using Microsoft.Maker.RemoteWiring;
17 |
18 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
19 |
20 | namespace RemoteBlinky
21 | {
22 | ///
23 | /// An empty page that can be used on its own or navigated to within a Frame.
24 | ///
25 | public sealed partial class MainPage : Page
26 | {
27 | //Usb is not supported on Win8.1. To see the USB connection steps, refer to the win10 solution instead.
28 | BluetoothSerial bluetooth;
29 | RemoteDevice arduino;
30 |
31 | public MainPage()
32 | {
33 | this.InitializeComponent();
34 |
35 | /*
36 | * I've written my bluetooth device name as a parameter to the BluetoothSerial constructor. You should change this to your previously-paired
37 | * device name if using Bluetooth. You can also use the BluetoothSerial.listAvailableDevicesAsync() function to list
38 | * available devices, but that is not covered in this sample.
39 | */
40 | bluetooth = new BluetoothSerial( "RNBT-E072" );
41 |
42 | arduino = new RemoteDevice( bluetooth );
43 | bluetooth.ConnectionEstablished += OnConnectionEstablished;
44 |
45 | //these parameters don't matter for bluetooth
46 | bluetooth.begin( 115200, SerialConfig.SERIAL_8N1 );
47 | }
48 |
49 | private void OnConnectionEstablished()
50 | {
51 | //enable the buttons on the UI thread!
52 | var action = Dispatcher.RunAsync( Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler( () => {
53 | OnButton.IsEnabled = true;
54 | OffButton.IsEnabled = true;
55 | }));
56 | }
57 |
58 | private void OnButton_Click( object sender, RoutedEventArgs e )
59 | {
60 | //turn the LED connected to pin 5 ON
61 | arduino.digitalWrite( 5, PinState.HIGH );
62 | }
63 |
64 | private void OffButton_Click( object sender, RoutedEventArgs e )
65 | {
66 | //turn the LED connected to pin 5 OFF
67 | arduino.digitalWrite( 5, PinState.LOW );
68 | }
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.WindowsPhone/Package.appxmanifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 |
10 |
11 | RemoteBlinky.WindowsPhone
12 | jessefr
13 | Assets\StoreLogo.png
14 |
15 |
16 |
17 | 6.3.1
18 | 6.3.1
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
29 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.WindowsPhone/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("RemoteBlinky.WindowsPhone")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("RemoteBlinky.WindowsPhone")]
13 | [assembly: AssemblyCopyright("Copyright © 2015")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Version information for an assembly consists of the following four values:
18 | //
19 | // Major Version
20 | // Minor Version
21 | // Build Number
22 | // Revision
23 | //
24 | // You can specify all the values or you can default the Build and Revision Numbers
25 | // by using the '*' as shown below:
26 | // [assembly: AssemblyVersion("1.0.*")]
27 | [assembly: AssemblyVersion("1.0.0.0")]
28 | [assembly: AssemblyFileVersion("1.0.0.0")]
29 | [assembly: ComVisible(false)]
--------------------------------------------------------------------------------
/win8_1/RemoteBlinky/RemoteBlinky/RemoteBlinky.WindowsPhone/RemoteBlinky.WindowsPhone.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {6FF69EED-B105-452A-BAFB-BE9FCC44746C}
8 | AppContainerExe
9 | Properties
10 | RemoteBlinky
11 | RemoteBlinky.WindowsPhone
12 | en-US
13 | 8.1
14 | 12
15 | 512
16 | {76F1466A-8B6D-4E39-A767-685A06062A39};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
17 | true
18 |
19 |
20 | AnyCPU
21 | true
22 | full
23 | false
24 | bin\Debug\
25 | DEBUG;TRACE;NETFX_CORE;WINDOWS_PHONE_APP
26 | prompt
27 | 4
28 |
29 |
30 | AnyCPU
31 | pdbonly
32 | true
33 | bin\Release\
34 | TRACE;NETFX_CORE;WINDOWS_PHONE_APP
35 | prompt
36 | 4
37 |
38 |
39 | true
40 | bin\ARM\Debug\
41 | DEBUG;TRACE;NETFX_CORE;WINDOWS_PHONE_APP
42 | ;2008
43 | full
44 | ARM
45 | false
46 | prompt
47 | true
48 |
49 |
50 | bin\ARM\Release\
51 | TRACE;NETFX_CORE;WINDOWS_PHONE_APP
52 | true
53 | ;2008
54 | pdbonly
55 | ARM
56 | false
57 | prompt
58 | true
59 |
60 |
61 | true
62 | bin\x86\Debug\
63 | DEBUG;TRACE;NETFX_CORE;WINDOWS_PHONE_APP
64 | ;2008
65 | full
66 | x86
67 | false
68 | prompt
69 | true
70 |
71 |
72 | bin\x86\Release\
73 | TRACE;NETFX_CORE;WINDOWS_PHONE_APP
74 | true
75 | ;2008
76 | pdbonly
77 | x86
78 | false
79 | prompt
80 | true
81 |
82 |
83 |
84 | MainPage.xaml
85 |
86 |
87 |
88 |
89 |
90 | Designer
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 | MSBuild:Compile
104 | Designer
105 |
106 |
107 |
108 |
109 | {83a94c48-af35-4fd9-b6c2-b0c12254abff}
110 | Microsoft.Maker.Firmata.WindowsPhone
111 |
112 |
113 | {2b16a0fe-ea4f-411d-b25e-2ff9605c875b}
114 | Microsoft.Maker.RemoteWiring.WindowsPhone
115 |
116 |
117 | {e26ce8ba-b9dc-45f6-8d7d-d019a42ade3f}
118 | Microsoft.Maker.Serial.WindowsPhone
119 |
120 |
121 |
122 | 12.0
123 |
124 |
125 | WindowsPhoneApp
126 |
127 |
128 |
129 |
136 |
--------------------------------------------------------------------------------