Arounduuidとか

parent 83e2de52
<Window x:Class="WpfBleSampleApp.MainWindow" <Window x:Class="iBeaconScanner.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfBleSampleApp" xmlns:local="clr-namespace:iBeaconScanner"
mc:Ignorable="d" mc:Ignorable="d"
Title="MainWindow" Title="MainWindow" Height="350" Width="1130.975">
Height="500" <Grid>
Width="566.338" <TextBox x:Name="textBox" Margin="0,35,0,0.5" TextWrapping="Wrap" Text=""/>
Loaded="Window_Loaded"
Closed="Window_Closed">
<Grid Margin="0,62,13.5,186.5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="9*"/>
<ColumnDefinition Width="8*"/>
<ColumnDefinition Width="257*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="TextBlockokList" Margin="24,-31,-11,0" Height="188" VerticalAlignment="Top" RenderTransformOrigin="0.495,1.012" Grid.Column="2" />
<TextBlock x:Name="TextBlockRSSI" Margin="10,162,-1,-128" Height="190" VerticalAlignment="Top" Grid.ColumnSpan="3" RenderTransformOrigin="0.492,1.471" />
</Grid> </Grid>
</Window> </Window>
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Diagnostics; using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Threading; using System.Threading;
using System.Windows; using System.Windows;
using Windows.Devices.Bluetooth;
using Windows.Devices.Bluetooth.Advertisement; using Windows.Devices.Bluetooth.Advertisement;
using Windows.Storage.Streams;
public class Define namespace iBeaconScanner
{
public const int OK_Num = 3;
public const string ERROR_MSG = "error message";
}
//special thanks
//https://blog.okazuki.jp/entry/2016/07/19/221226
namespace WpfBleSampleApp
{ {
/// <summary> /// <summary>
/// MainWindow.xaml の相互作用ロジック /// MainWindow.xaml の相互作用ロジック
/// </summary> /// </summary>
public partial class MainWindow : Window public partial class MainWindow : Window
{ {
private BluetoothLEAdvertisementWatcher watcher; private BluetoothLEAdvertisementWatcher advWatcher;
//private Dictionary<string, BluetoothLEDevice> devices = new Dictionary<string, BluetoothLEDevice>(); /* 定数 */
private Dictionary<ulong, BluetoothLEDevice> devices = new Dictionary<ulong, BluetoothLEDevice>(); public static int CompanyID_Apple = 76;
public static int Length_of_iBeacon_Advertise_Packet = 23;
private Mutex mutex = new Mutex(); public static int OKnum = 1;
public static TimeSpan TIMEOUT = new TimeSpan(0,0,3);//3秒離れてたらタイムアウト
/*DeviceId*/
/*private string[] okList =
{
"BluetoothLE#BluetoothLE98:5f:d3:d1:35:3f-74:99:95:70:e8:29",
"BluetoothLE#BluetoothLE98:5f:d3:d1:35:3f-4e:03:3e:8f:50:96",
"BluetoothLE#BluetoothLE98:5f:d3:d1:35:3f-43:2d:3f:b7:45:02",
"",
"",
};*/ static int RUcnt, NUcnt;
/*BDアドレス*/
private ulong[] okList =
{
/*82423332791826, //Bluetooth 4a:f6:ad:78:e6:12
108555962440447, //Bluetooth 62:bb:27:94:5a:ff
117605944835917,
76312922084733, //Bluetooth 45:67:fc:9c:d5:7d 自分の何か
139673612859991, // orutasu 12/19
95952497671738, // orutasu 12/19
104072803926013, // orutasu 12/19
112717208922713, //12/20 lab
*/
//12/23 自宅
72542603779210 ,//Bluetooth 41:fa:24:21:1c:8a,
119668175063121 ,//Bluetooth 6c:d6:6b:10:c8:51,
139563132157043,//Bluetooth 7e:ee:92:ea:7c:73,
//1/8 lab
140285132663853 ,//Bluetooth 7f:96:ad:7f:ec:2d,
83936478851746,//Bluetooth 4c:56:fc:01:72:a2,
};
/*private string[] okList =
{
Bluetooth 45:67:fc:9c:d5:7d, 76312922084733
Bluetooth 62:bb:27:94:5a:ff, 108555962440447
Bluetooth 59:d7:f7:2e:b4:b0, 98784099873968
Bluetooth 45:67:fc:9c:d5:7d, 76312922084733 static HashSet<string> RU_uuid = new HashSet<string>(); //RUのハッシュセット
Bluetooth 4a:f6:ad:78:e6:12, 82423332791826 //static HashSet<string> Around_uuid = new HashSet<string>(); //周囲のuuidのハッシュセット
Dictionary<string,DateTimeOffset> Around_uuid = new Dictionary<string, DateTimeOffset>(); //周囲のuuidのハッシュセット
Bluetooth 45:fb:92:65:f1:77, 76946795262327
Bluetooth 43:b4:22:bc:0b:c5, 74440955923397
Bluetooth 45:67:fc:9c:d5:7d, 76312922084733
Bluetooth 45:da:1d:36:ba:a5, 76803095313061
Bluetooth 6f:2b:60:01:42:b7, 122232084972215
Bluetooth 78:dc:79:ad:81:08, 132888329552136
Bluetooth 48:64:11:76:c7:0d, 79594626926349
Bluetooth 72:b0:e5:06:05:76, 126104082187638
Bluetooth 5e:a7:56:82:3f:fd, 104072803926013
Bluetooth 5e:dc:1f:04:ac:04, 104299506215940
Bluetooth 5d:cb:9f:e8:a2:f1, 103129142567665
Bluetooth 70:19:e9:5c:d2:55, 123256591667797 ,
Bluetooth 66:84:05:32:aa:59, 112717208922713 ,
Bluetooth 5f:85:83:41:60:a7, 105027037388967 ,
};*/
public MainWindow() public MainWindow()
{ {
InitializeComponent(); InitializeComponent();
this.watcher = new BluetoothLEAdvertisementWatcher();
//OK_List の表示 /* 事前登録 */
this.TextBlockokList.Text += $"\n"; RU_uuid.Add("48534442-4c45-4144-1234-dcba12345678");
foreach (var ok in okList) RU_uuid.Add("48534442-4c45-4144-1234-abcd12345678");
{
this.TextBlockokList.Text += $"{ok}\n"; this.advWatcher = new BluetoothLEAdvertisementWatcher();
}
this.TextBlockokList.Text += $"--------------------------------\n";
// CompanyIDとかDataでフィルタリングしたいとき // https://blogs.msdn.microsoft.com/shozoa/2016/02/28/windows-10-bluetooth/
//var md = new BluetoothLEManufacturerData(); // インターバルがゼロのままだと、CPU負荷が高くなりますので、適切な間隔(SDK サンプルでは 1秒)に指定しないと、アプリの動作に支障をきたすことになります。
//// company id 0xFFFF (多分これ https://www.bluetooth.com/specifications/assigned-numbers/company-Identifiers) this.advWatcher.SignalStrengthFilter.SamplingInterval = TimeSpan.FromMilliseconds(1000);
//md.CompanyId = 0xFFFF;
//// data 0x1234 // rssi >= -60のときスキャンする
//var w = new DataWriter(); //this.advWatcher.SignalStrengthFilter.InRangeThresholdInDBm = -60;
//w.WriteUInt16(0x1234);
//md.Data = w.DetachBuffer();
//this.watcher.AdvertisementFilter.Advertisement.ManufacturerData.Add(md);
this.advWatcher.Received += this.Watcher_Received;
// ↓https://docs.microsoft.com/ja-jp/windows/uwp/devices-sensors/ble-beacon // スキャン開始
// rssi >= -60のとき受信開始するっぽい this.advWatcher.Start();
this.watcher.SignalStrengthFilter.InRangeThresholdInDBm = -60; // >=-60dBm
// rssi <= -65が2秒続いたら受信終わるっぽい
this.watcher.SignalStrengthFilter.OutOfRangeThresholdInDBm = -65; // <=-65dBm
this.watcher.SignalStrengthFilter.OutOfRangeTimeout = TimeSpan.FromMilliseconds(3000);// 3000ミリ秒以上遠ざかっていると受信終了
this.watcher.Received += this.Watcher_Received;
} }
private async void Watcher_Received(BluetoothLEAdvertisementWatcher sender, BluetoothLEAdvertisementReceivedEventArgs args) private async void Watcher_Received(BluetoothLEAdvertisementWatcher sender, BluetoothLEAdvertisementReceivedEventArgs args)
{ {
/*
await this.Dispatcher.InvokeAsync(() => await this.Dispatcher.InvokeAsync(() =>
{ {
var md = args.Advertisement.ManufacturerData.FirstOrDefault();
if (md != null) foreach (var manufacturerData in args.Advertisement.ManufacturerData)
{ {
// ManufactureDataをもとにCompanyIDとったりできる /*
} Debug.WriteLine($"{args.Timestamp} {args.Advertisement.LocalName}:{args.BluetoothAddress}");
var uuids = String.Join(",", args.Advertisement.ServiceUuids.Select(uuid => uuid.ToString())); Debug.WriteLine($"RSSI={args.RawSignalStrengthInDBm}");
this.TextBlockRSSI.Text = $"{args.Timestamp:HH\\:mm\\:ss}, RSSI: {args.RawSignalStrengthInDBm}, Address: {args.BluetoothAddress.ToString("X")}, Type: {args.AdvertisementType} , {args.Advertisement.ServiceUuids.Count}{uuids}"; Debug.WriteLine($"length:{manufacturerData.Data.Length}");
}); Debug.WriteLine($"companyId :{manufacturerData.CompanyId}");
Debug.WriteLine($"Ad type :{args.AdvertisementType}");
Debug.WriteLine($"--------------");
*/ */
var task = BluetoothLEDevice.FromBluetoothAddressAsync(args.BluetoothAddress); // mutex.WaitOne();
//↑Adパケットをキャプチャするというタスク
task.Completed = delegate if (manufacturerData.CompanyId != CompanyID_Apple)
{ {
switch (task.Status) continue;
}
if (manufacturerData.Data.Length != Length_of_iBeacon_Advertise_Packet)
{ {
case Windows.Foundation.AsyncStatus.Completed://無事完了すれば continue;
var device = task.GetResults(); }
if (device == null) return;
Debug.WriteLine($"device found:{device.Name},{device.BluetoothAddress}");// ここでKeyを決める
Debug.WriteLine($"device found:{device.Name},{device.DeviceId},{device.BluetoothDeviceId.Id}");// ここでKeyを決める Debug.WriteLine($"-------------");
Debug.WriteLine($"{args.Timestamp} RSSI={args.RawSignalStrengthInDBm} BD:{args.BluetoothAddress}");
// Debug.WriteLine($"{args.AdvertisementType}, {manufacturerData.CompanyId}");
using (var reader = DataReader.FromBuffer(manufacturerData.Data))
{
reader.ByteOrder = ByteOrder.BigEndian;// BigEndian:順方向にパケットを保存
if (device.WasSecureConnectionUsedForPairing) { //接続したことがあればSecure /* 0215 で始まればiBeacon */ //http://d.hatena.ne.jp/shu223/20141208/1418051009
Debug.WriteLine("####Secure####"); var indicator = reader.ReadByte();
var length = reader.ReadByte();
if (indicator != 0x02 && length != 0x15)
{
continue; //iBeacon でないAdvertise Packet
} }
mutex.WaitOne(); Debug.WriteLine("#####This is iBeacon Packet!!!");
devices[device.BluetoothAddress] = device;//DeviceId と device を結び付けている
//KeyにBDアドレスを選択
//RSSIが小さければ削除するコード(必要か?) // Parse advertise packet.
var uuidA = reader.ReadInt32();
var uuidB = reader.ReadInt16();
var uuidC = reader.ReadInt16();
var uuidD = new byte[8];
reader.ReadBytes(uuidD);
var major = reader.ReadUInt16();
var minor = reader.ReadUInt16();
var power = reader.ReadByte();
Debug.WriteLine("===========begin"); var proximity_uuid = new Guid(uuidA, uuidB, uuidC, uuidD);
foreach (var x in devices)
{
var dev = x.Value;
var id = x.Key; // == dev.BluetoothAddress
Debug.WriteLine($"{dev.Name}, {id} ,");// Name,BluetoothAddress /* RUのハッシュセットを作成 *//*
if( !RU_uuid.Contains(proximity_uuid.ToString() ) )
{
RU_uuid.Add(proximity_uuid.ToString() );
}
foreach (var RU in RU_uuid)
{
Debug.WriteLine($" RU is {RU}");
Console.WriteLine($" RU is {RU}");
} }
Debug.WriteLine("===========end"); Console.WriteLine($"------------");
mutex.ReleaseMutex(); */
this.Dispatcher.InvokeAsync(() => /* 周囲のuuidのDictionaryを作成 */
if (!Around_uuid.Keys.Contains(proximity_uuid.ToString())) //新しいUUIDなら追加 ????????
{ {
mutex.WaitOne(); Around_uuid.Add(proximity_uuid.ToString(),args.Timestamp);
this.TextBlockRSSI.Text = ""; Debug.WriteLine($"New!");
foreach (var x in devices) Debug.WriteLine($"UUID: {proximity_uuid}, major: {major}, minor: {minor}, power: {power}");
}
else //既にあるUUIDなら時間更新
{ {
var dev = x.Value; Around_uuid[proximity_uuid.ToString()] = args.Timestamp;
var id = x.Key; // == dev.DeviceId Debug.WriteLine($"Time Refreshed...");
this.TextBlockRSSI.Text += $"{dev.Name}, {id}\n";
} }
// OKリストの中身と何個一致しているか /* Timestamp が古いものを削除 */
//var count = okList.Count((okId) => devices.ContainsKey(okId)); DateTime dt = DateTime.Now;
var removeTargetLst = Around_uuid.Where(kv => (dt - kv.Value) < TIMEOUT).ToList();
var count = okList.Count((okId) => devices.ContainsKey(okId)); foreach (var item in removeTargetLst)
{
this.TextBlockRSSI.Text += $"ok count: {count}\n"; Around_uuid.Remove(item.Key); // ここで削除する。Keyを指定して削除出来る。
if (count >= Define.OK_Num) {
this.TextBlockRSSI.Text += $"You are You!\n";
} }
mutex.ReleaseMutex(); /* 周囲にあるUUID */
}); foreach (var some in Around_uuid)
break; {
Debug.WriteLine($"UUID:{some.Key} ,time:{some.Value}");
case Windows.Foundation.AsyncStatus.Started: this.textBox.Text = this.textBox.Text + some.Value + ":" + some.Key +"\r\n";
Debug.WriteLine($"started: "); }
break;
default: /* 判定フェーズ↓ */
Debug.WriteLine($"failed: {task.Status} {task.ErrorCode}"); RUcnt = 0;
break; NUcnt = 0;
foreach (var N in RU_uuid)
{
if (Around_uuid.Keys.Contains(N))
{
RUcnt++;
} }
}; else { NUcnt++; }
} }
this.textBox.Text = this.textBox.Text + "RU:" + RUcnt + "人, NU" + NUcnt + "人" + "\r\n";
private void Window_Closed(object sender, EventArgs e) if (RUcnt >= OKnum && RUcnt * 3 > NUcnt)//安全かどうかの判定
{ {
this.watcher.Stop(); this.textBox.Text = this.textBox.Text + "You are YOU!!" + "\r\n";
// watcher.Stop();
} }
/* 判定フェーズ↑ */
private void Window_Loaded(object sender, RoutedEventArgs e) }
{ }
this.watcher.Start();
});
} }
} }
} }
...@@ -53,6 +53,7 @@ ...@@ -53,6 +53,7 @@
</Reference> </Reference>
<Reference Include="Windows.Devices" /> <Reference Include="Windows.Devices" />
<Reference Include="Windows.Foundation" /> <Reference Include="Windows.Foundation" />
<Reference Include="Windows.Storage" />
<Reference Include="WindowsBase" /> <Reference Include="WindowsBase" />
<Reference Include="PresentationCore" /> <Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" /> <Reference Include="PresentationFramework" />
......
#pragma checksum "..\..\MainWindow.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "56F052CFB7FE06C2C911627D754264C69B1D7797" #pragma checksum "..\..\MainWindow.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "529B587B28CD66E92A7B94149F23D8EDF9A1A6D5"
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// このコードはツールによって生成されました。 // このコードはツールによって生成されました。
...@@ -29,10 +29,10 @@ using System.Windows.Media.TextFormatting; ...@@ -29,10 +29,10 @@ using System.Windows.Media.TextFormatting;
using System.Windows.Navigation; using System.Windows.Navigation;
using System.Windows.Shapes; using System.Windows.Shapes;
using System.Windows.Shell; using System.Windows.Shell;
using WpfBleSampleApp; using iBeaconScanner;
namespace WpfBleSampleApp { namespace iBeaconScanner {
/// <summary> /// <summary>
...@@ -41,17 +41,9 @@ namespace WpfBleSampleApp { ...@@ -41,17 +41,9 @@ namespace WpfBleSampleApp {
public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector { public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
#line 19 "..\..\MainWindow.xaml" #line 10 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock TextBlockokList; internal System.Windows.Controls.TextBox textBox;
#line default
#line hidden
#line 20 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock TextBlockRSSI;
#line default #line default
#line hidden #line hidden
...@@ -87,24 +79,7 @@ namespace WpfBleSampleApp { ...@@ -87,24 +79,7 @@ namespace WpfBleSampleApp {
switch (connectionId) switch (connectionId)
{ {
case 1: case 1:
this.textBox = ((System.Windows.Controls.TextBox)(target));
#line 11 "..\..\MainWindow.xaml"
((WpfBleSampleApp.MainWindow)(target)).Loaded += new System.Windows.RoutedEventHandler(this.Window_Loaded);
#line default
#line hidden
#line 12 "..\..\MainWindow.xaml"
((WpfBleSampleApp.MainWindow)(target)).Closed += new System.EventHandler(this.Window_Closed);
#line default
#line hidden
return;
case 2:
this.TextBlockokList = ((System.Windows.Controls.TextBlock)(target));
return;
case 3:
this.TextBlockRSSI = ((System.Windows.Controls.TextBlock)(target));
return; return;
} }
this._contentLoaded = true; this._contentLoaded = true;
......
#pragma checksum "..\..\MainWindow.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "56F052CFB7FE06C2C911627D754264C69B1D7797" #pragma checksum "..\..\MainWindow.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "529B587B28CD66E92A7B94149F23D8EDF9A1A6D5"
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// このコードはツールによって生成されました。 // このコードはツールによって生成されました。
...@@ -29,10 +29,10 @@ using System.Windows.Media.TextFormatting; ...@@ -29,10 +29,10 @@ using System.Windows.Media.TextFormatting;
using System.Windows.Navigation; using System.Windows.Navigation;
using System.Windows.Shapes; using System.Windows.Shapes;
using System.Windows.Shell; using System.Windows.Shell;
using WpfBleSampleApp; using iBeaconScanner;
namespace WpfBleSampleApp { namespace iBeaconScanner {
/// <summary> /// <summary>
...@@ -41,17 +41,9 @@ namespace WpfBleSampleApp { ...@@ -41,17 +41,9 @@ namespace WpfBleSampleApp {
public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector { public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
#line 19 "..\..\MainWindow.xaml" #line 10 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock TextBlockokList; internal System.Windows.Controls.TextBox textBox;
#line default
#line hidden
#line 20 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock TextBlockRSSI;
#line default #line default
#line hidden #line hidden
...@@ -87,24 +79,7 @@ namespace WpfBleSampleApp { ...@@ -87,24 +79,7 @@ namespace WpfBleSampleApp {
switch (connectionId) switch (connectionId)
{ {
case 1: case 1:
this.textBox = ((System.Windows.Controls.TextBox)(target));
#line 11 "..\..\MainWindow.xaml"
((WpfBleSampleApp.MainWindow)(target)).Loaded += new System.Windows.RoutedEventHandler(this.Window_Loaded);
#line default
#line hidden
#line 12 "..\..\MainWindow.xaml"
((WpfBleSampleApp.MainWindow)(target)).Closed += new System.EventHandler(this.Window_Closed);
#line default
#line hidden
return;
case 2:
this.TextBlockokList = ((System.Windows.Controls.TextBlock)(target));
return;
case 3:
this.TextBlockRSSI = ((System.Windows.Controls.TextBlock)(target));
return; return;
} }
this._contentLoaded = true; this._contentLoaded = true;
......
982da2a63defad06f7788fc2a61c45b51255c7eb c29fb9c2404a15e23ee1a74e928fbf0ecdc3fa15
...@@ -82,3 +82,66 @@ C:\Users\Kaoru\source\repos\catchBLE\WpfApp1\obj\Debug\WpfApp1.csproj.CoreCompil ...@@ -82,3 +82,66 @@ C:\Users\Kaoru\source\repos\catchBLE\WpfApp1\obj\Debug\WpfApp1.csproj.CoreCompil
C:\Users\Kaoru\source\repos\catchBLE\WpfApp1\obj\Debug\WpfApp1.csproj.CopyComplete C:\Users\Kaoru\source\repos\catchBLE\WpfApp1\obj\Debug\WpfApp1.csproj.CopyComplete
C:\Users\Kaoru\source\repos\catchBLE\WpfApp1\obj\Debug\WpfApp1.exe C:\Users\Kaoru\source\repos\catchBLE\WpfApp1\obj\Debug\WpfApp1.exe
C:\Users\Kaoru\source\repos\catchBLE\WpfApp1\obj\Debug\WpfApp1.pdb C:\Users\Kaoru\source\repos\catchBLE\WpfApp1\obj\Debug\WpfApp1.pdb
C:\Users\Kaoru\source\repos\catchBLE3\WpfApp1\obj\Debug\WpfApp1.csprojAssemblyReference.cache
C:\Users\Kaoru\source\repos\catchBLE3\WpfApp1\obj\Debug\MainWindow.g.cs
C:\Users\Kaoru\source\repos\catchBLE3\WpfApp1\obj\Debug\App.g.cs
C:\Users\Kaoru\source\repos\catchBLE3\WpfApp1\obj\Debug\WpfApp1_MarkupCompile.cache
C:\Users\Kaoru\source\repos\catchBLE3\WpfApp1\obj\Debug\WpfApp1_MarkupCompile.lref
C:\Users\Kaoru\source\repos\catchBLE3\WpfApp1\obj\Debug\WpfApp1.exe
C:\Users\Kaoru\source\repos\catchBLE3\WpfApp1\obj\Debug\WpfApp1.pdb
C:\Users\Kaoru\source\repos\catchBLE3\WpfApp1\bin\Debug\WpfApp1.exe.config
C:\Users\Kaoru\source\repos\catchBLE3\WpfApp1\bin\Debug\WpfApp1.exe
C:\Users\Kaoru\source\repos\catchBLE3\WpfApp1\bin\Debug\WpfApp1.pdb
C:\Users\Kaoru\source\repos\catchBLE3\WpfApp1\bin\Debug\System.Runtime.WindowsRuntime.dll
C:\Users\Kaoru\source\repos\catchBLE3\WpfApp1\bin\Debug\System.Runtime.WindowsRuntime.UI.Xaml.dll
C:\Users\Kaoru\source\repos\catchBLE3\WpfApp1\bin\Debug\Windows.WinMD
C:\Users\Kaoru\source\repos\catchBLE3\WpfApp1\bin\Debug\System.Runtime.WindowsRuntime.xml
C:\Users\Kaoru\source\repos\catchBLE3\WpfApp1\bin\Debug\System.Runtime.WindowsRuntime.UI.Xaml.xml
C:\Users\Kaoru\source\repos\catchBLE3\WpfApp1\obj\Debug\MainWindow.baml
C:\Users\Kaoru\source\repos\catchBLE3\WpfApp1\obj\Debug\WpfApp1.g.resources
C:\Users\Kaoru\source\repos\catchBLE3\WpfApp1\obj\Debug\WpfApp1.Properties.Resources.resources
C:\Users\Kaoru\source\repos\catchBLE3\WpfApp1\obj\Debug\WpfApp1.csproj.GenerateResource.cache
C:\Users\Kaoru\source\repos\catchBLE3\WpfApp1\obj\Debug\WpfApp1.csproj.CoreCompileInputs.cache
C:\Users\Kaoru\source\repos\catchBLE3\WpfApp1\obj\Debug\WpfApp1.csproj.CopyComplete
C:\Users\Kaoru\source\repos\ConsoleApp2\WpfApp1\bin\Debug\WpfApp1.exe.config
C:\Users\Kaoru\source\repos\ConsoleApp2\WpfApp1\bin\Debug\WpfApp1.exe
C:\Users\Kaoru\source\repos\ConsoleApp2\WpfApp1\bin\Debug\WpfApp1.pdb
C:\Users\Kaoru\source\repos\ConsoleApp2\WpfApp1\bin\Debug\System.Runtime.WindowsRuntime.dll
C:\Users\Kaoru\source\repos\ConsoleApp2\WpfApp1\bin\Debug\System.Runtime.WindowsRuntime.UI.Xaml.dll
C:\Users\Kaoru\source\repos\ConsoleApp2\WpfApp1\bin\Debug\Windows.WinMD
C:\Users\Kaoru\source\repos\ConsoleApp2\WpfApp1\bin\Debug\System.Runtime.WindowsRuntime.xml
C:\Users\Kaoru\source\repos\ConsoleApp2\WpfApp1\bin\Debug\System.Runtime.WindowsRuntime.UI.Xaml.xml
C:\Users\Kaoru\source\repos\ConsoleApp2\WpfApp1\obj\Debug\WpfApp1.csprojAssemblyReference.cache
C:\Users\Kaoru\source\repos\ConsoleApp2\WpfApp1\obj\Debug\MainWindow.g.cs
C:\Users\Kaoru\source\repos\ConsoleApp2\WpfApp1\obj\Debug\App.g.cs
C:\Users\Kaoru\source\repos\ConsoleApp2\WpfApp1\obj\Debug\WpfApp1_MarkupCompile.cache
C:\Users\Kaoru\source\repos\ConsoleApp2\WpfApp1\obj\Debug\WpfApp1_MarkupCompile.lref
C:\Users\Kaoru\source\repos\ConsoleApp2\WpfApp1\obj\Debug\MainWindow.baml
C:\Users\Kaoru\source\repos\ConsoleApp2\WpfApp1\obj\Debug\WpfApp1.g.resources
C:\Users\Kaoru\source\repos\ConsoleApp2\WpfApp1\obj\Debug\WpfApp1.Properties.Resources.resources
C:\Users\Kaoru\source\repos\ConsoleApp2\WpfApp1\obj\Debug\WpfApp1.csproj.GenerateResource.cache
C:\Users\Kaoru\source\repos\ConsoleApp2\WpfApp1\obj\Debug\WpfApp1.csproj.CoreCompileInputs.cache
C:\Users\Kaoru\source\repos\ConsoleApp2\WpfApp1\obj\Debug\WpfApp1.csproj.CopyComplete
C:\Users\Kaoru\source\repos\ConsoleApp2\WpfApp1\obj\Debug\WpfApp1.exe
C:\Users\Kaoru\source\repos\ConsoleApp2\WpfApp1\obj\Debug\WpfApp1.pdb
C:\Users\Kaoru\source\repos\WpfApp3\WpfApp1\bin\Debug\WpfApp1.exe.config
C:\Users\Kaoru\source\repos\WpfApp3\WpfApp1\bin\Debug\WpfApp1.exe
C:\Users\Kaoru\source\repos\WpfApp3\WpfApp1\bin\Debug\WpfApp1.pdb
C:\Users\Kaoru\source\repos\WpfApp3\WpfApp1\bin\Debug\System.Runtime.WindowsRuntime.dll
C:\Users\Kaoru\source\repos\WpfApp3\WpfApp1\bin\Debug\System.Runtime.WindowsRuntime.UI.Xaml.dll
C:\Users\Kaoru\source\repos\WpfApp3\WpfApp1\bin\Debug\Windows.WinMD
C:\Users\Kaoru\source\repos\WpfApp3\WpfApp1\bin\Debug\System.Runtime.WindowsRuntime.xml
C:\Users\Kaoru\source\repos\WpfApp3\WpfApp1\bin\Debug\System.Runtime.WindowsRuntime.UI.Xaml.xml
C:\Users\Kaoru\source\repos\WpfApp3\WpfApp1\obj\Debug\WpfApp1.csprojAssemblyReference.cache
C:\Users\Kaoru\source\repos\WpfApp3\WpfApp1\obj\Debug\MainWindow.g.cs
C:\Users\Kaoru\source\repos\WpfApp3\WpfApp1\obj\Debug\App.g.cs
C:\Users\Kaoru\source\repos\WpfApp3\WpfApp1\obj\Debug\WpfApp1_MarkupCompile.cache
C:\Users\Kaoru\source\repos\WpfApp3\WpfApp1\obj\Debug\WpfApp1_MarkupCompile.lref
C:\Users\Kaoru\source\repos\WpfApp3\WpfApp1\obj\Debug\MainWindow.baml
C:\Users\Kaoru\source\repos\WpfApp3\WpfApp1\obj\Debug\WpfApp1.g.resources
C:\Users\Kaoru\source\repos\WpfApp3\WpfApp1\obj\Debug\WpfApp1.Properties.Resources.resources
C:\Users\Kaoru\source\repos\WpfApp3\WpfApp1\obj\Debug\WpfApp1.csproj.GenerateResource.cache
C:\Users\Kaoru\source\repos\WpfApp3\WpfApp1\obj\Debug\WpfApp1.csproj.CoreCompileInputs.cache
C:\Users\Kaoru\source\repos\WpfApp3\WpfApp1\obj\Debug\WpfApp1.csproj.CopyComplete
C:\Users\Kaoru\source\repos\WpfApp3\WpfApp1\obj\Debug\WpfApp1.exe
C:\Users\Kaoru\source\repos\WpfApp3\WpfApp1\obj\Debug\WpfApp1.pdb
...@@ -4,16 +4,16 @@ ...@@ -4,16 +4,16 @@
winexe winexe
C# C#
.cs .cs
C:\Users\Kaoru\source\repos\catchBLE\WpfApp1\obj\Debug\ C:\Users\Kaoru\source\repos\WpfApp3\WpfApp1\obj\Debug\
WpfApp1 WpfApp1
none none
false false
DEBUG;TRACE DEBUG;TRACE
C:\Users\Kaoru\source\repos\catchBLE\WpfApp1\App.xaml C:\Users\Kaoru\source\repos\WpfApp3\WpfApp1\App.xaml
11151548125 11151548125
5-2017746502 5-2017746502
71148438499 72-24968511
MainWindow.xaml; MainWindow.xaml;
False False
......
...@@ -4,17 +4,17 @@ ...@@ -4,17 +4,17 @@
winexe winexe
C# C#
.cs .cs
C:\Users\Kaoru\source\repos\WpfApp1\WpfApp1\obj\Debug\ C:\Users\Kaoru\source\repos\ConsoleApp2\WpfApp1\obj\Debug\
WpfApp1 WpfApp1
none none
false false
DEBUG;TRACE DEBUG;TRACE
C:\Users\Kaoru\source\repos\WpfApp1\WpfApp1\App.xaml C:\Users\Kaoru\source\repos\ConsoleApp2\WpfApp1\App.xaml
11151548125 11151548125
9403354300 9403354300
71148438499 72-24968511
MainWindow.xaml; MainWindow.xaml;
False True

FC:\Users\Kaoru\source\repos\ConsoleApp2\WpfApp1\MainWindow.xaml;;
 
FC:\Users\Kaoru\source\repos\catchBLE\WpfApp1\MainWindow.xaml;; FC:\Users\Kaoru\source\repos\WpfApp3\WpfApp1\MainWindow.xaml;;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment