Arounduuidとか

parent 83e2de52
<Window x:Class="WpfBleSampleApp.MainWindow"
<Window x:Class="iBeaconScanner.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfBleSampleApp"
xmlns:local="clr-namespace:iBeaconScanner"
mc:Ignorable="d"
Title="MainWindow"
Height="500"
Width="566.338"
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" />
Title="MainWindow" Height="350" Width="1130.975">
<Grid>
<TextBox x:Name="textBox" Margin="0,35,0,0.5" TextWrapping="Wrap" Text=""/>
</Grid>
</Window>
\ No newline at end of file
</Window>
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Diagnostics;
using System.Linq;
using System.Threading;
using System.Windows;
using Windows.Devices.Bluetooth;
using Windows.Devices.Bluetooth.Advertisement;
using Windows.Storage.Streams;
public class Define
{
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
namespace iBeaconScanner
{
/// <summary>
/// MainWindow.xaml の相互作用ロジック
/// </summary>
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;
public static int OKnum = 1;
public static TimeSpan TIMEOUT = new TimeSpan(0,0,3);//3秒離れてたらタイムアウト
private Mutex mutex = new Mutex();
static int RUcnt, NUcnt;
static HashSet<string> RU_uuid = new HashSet<string>(); //RUのハッシュセット
//static HashSet<string> Around_uuid = new HashSet<string>(); //周囲のuuidのハッシュセット
Dictionary<string,DateTimeOffset> Around_uuid = new Dictionary<string, DateTimeOffset>(); //周囲のuuidのハッシュセット
/*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",
"",
"",
};*/
/*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
Bluetooth 4a:f6:ad:78:e6:12, 82423332791826
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()
{
InitializeComponent();
this.watcher = new BluetoothLEAdvertisementWatcher();
//OK_List の表示
this.TextBlockokList.Text += $"\n";
foreach (var ok in okList)
{
this.TextBlockokList.Text += $"{ok}\n";
}
this.TextBlockokList.Text += $"--------------------------------\n";
// CompanyIDとかDataでフィルタリングしたいとき
//var md = new BluetoothLEManufacturerData();
//// company id 0xFFFF (多分これ https://www.bluetooth.com/specifications/assigned-numbers/company-Identifiers)
//md.CompanyId = 0xFFFF;
//// data 0x1234
//var w = new DataWriter();
//w.WriteUInt16(0x1234);
//md.Data = w.DetachBuffer();
//this.watcher.AdvertisementFilter.Advertisement.ManufacturerData.Add(md);
// ↓https://docs.microsoft.com/ja-jp/windows/uwp/devices-sensors/ble-beacon
// rssi >= -60のとき受信開始するっぽい
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;
/* 事前登録 */
RU_uuid.Add("48534442-4c45-4144-1234-dcba12345678");
RU_uuid.Add("48534442-4c45-4144-1234-abcd12345678");
this.advWatcher = new BluetoothLEAdvertisementWatcher();
// https://blogs.msdn.microsoft.com/shozoa/2016/02/28/windows-10-bluetooth/
// インターバルがゼロのままだと、CPU負荷が高くなりますので、適切な間隔(SDK サンプルでは 1秒)に指定しないと、アプリの動作に支障をきたすことになります。
this.advWatcher.SignalStrengthFilter.SamplingInterval = TimeSpan.FromMilliseconds(1000);
// rssi >= -60のときスキャンする
//this.advWatcher.SignalStrengthFilter.InRangeThresholdInDBm = -60;
this.advWatcher.Received += this.Watcher_Received;
// スキャン開始
this.advWatcher.Start();
}
private async void Watcher_Received(BluetoothLEAdvertisementWatcher sender, BluetoothLEAdvertisementReceivedEventArgs args)
{
/*
await this.Dispatcher.InvokeAsync(() =>
{
var md = args.Advertisement.ManufacturerData.FirstOrDefault();
if (md != null)
{
// ManufactureDataをもとにCompanyIDとったりできる
}
var uuids = String.Join(",", args.Advertisement.ServiceUuids.Select(uuid => uuid.ToString()));
this.TextBlockRSSI.Text = $"{args.Timestamp:HH\\:mm\\:ss}, RSSI: {args.RawSignalStrengthInDBm}, Address: {args.BluetoothAddress.ToString("X")}, Type: {args.AdvertisementType} , {args.Advertisement.ServiceUuids.Count}{uuids}";
});
*/
var task = BluetoothLEDevice.FromBluetoothAddressAsync(args.BluetoothAddress);
//↑Adパケットをキャプチャするというタスク
task.Completed = delegate
{
switch (task.Status)
foreach (var manufacturerData in args.Advertisement.ManufacturerData)
{
case Windows.Foundation.AsyncStatus.Completed://無事完了すれば
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を決める
if (device.WasSecureConnectionUsedForPairing) { //接続したことがあればSecure
Debug.WriteLine("####Secure####");
/*
Debug.WriteLine($"{args.Timestamp} {args.Advertisement.LocalName}:{args.BluetoothAddress}");
Debug.WriteLine($"RSSI={args.RawSignalStrengthInDBm}");
Debug.WriteLine($"length:{manufacturerData.Data.Length}");
Debug.WriteLine($"companyId :{manufacturerData.CompanyId}");
Debug.WriteLine($"Ad type :{args.AdvertisementType}");
Debug.WriteLine($"--------------");
*/
// mutex.WaitOne();
if (manufacturerData.CompanyId != CompanyID_Apple)
{
continue;
}
if (manufacturerData.Data.Length != Length_of_iBeacon_Advertise_Packet)
{
continue;
}
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:順方向にパケットを保存
/* 0215 で始まればiBeacon */ //http://d.hatena.ne.jp/shu223/20141208/1418051009
var indicator = reader.ReadByte();
var length = reader.ReadByte();
if (indicator != 0x02 && length != 0x15)
{
continue; //iBeacon でないAdvertise Packet
}
mutex.WaitOne();
devices[device.BluetoothAddress] = device;//DeviceId と device を結び付けている
//KeyにBDアドレスを選択
Debug.WriteLine("#####This is iBeacon Packet!!!");
// 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();
var proximity_uuid = new Guid(uuidA, uuidB, uuidC, uuidD);
/* 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}");
}
Console.WriteLine($"------------");
*/
//RSSIが小さければ削除するコード(必要か?)
/* 周囲のuuidのDictionaryを作成 */
if (!Around_uuid.Keys.Contains(proximity_uuid.ToString())) //新しいUUIDなら追加 ????????
{
Around_uuid.Add(proximity_uuid.ToString(),args.Timestamp);
Debug.WriteLine($"New!");
Debug.WriteLine($"UUID: {proximity_uuid}, major: {major}, minor: {minor}, power: {power}");
}
else //既にあるUUIDなら時間更新
{
Around_uuid[proximity_uuid.ToString()] = args.Timestamp;
Debug.WriteLine($"Time Refreshed...");
}
Debug.WriteLine("===========begin");
foreach (var x in devices)
/* Timestamp が古いものを削除 */
DateTime dt = DateTime.Now;
var removeTargetLst = Around_uuid.Where(kv => (dt - kv.Value) < TIMEOUT).ToList();
foreach (var item in removeTargetLst)
{
var dev = x.Value;
var id = x.Key; // == dev.BluetoothAddress
Around_uuid.Remove(item.Key); // ここで削除する。Keyを指定して削除出来る。
}
Debug.WriteLine($"{dev.Name}, {id} ,");// Name,BluetoothAddress
/* 周囲にあるUUID */
foreach (var some in Around_uuid)
{
Debug.WriteLine($"UUID:{some.Key} ,time:{some.Value}");
this.textBox.Text = this.textBox.Text + some.Value + ":" + some.Key +"\r\n";
}
Debug.WriteLine("===========end");
mutex.ReleaseMutex();
this.Dispatcher.InvokeAsync(() =>
/* 判定フェーズ↓ */
RUcnt = 0;
NUcnt = 0;
foreach (var N in RU_uuid)
{
mutex.WaitOne();
this.TextBlockRSSI.Text = "";
foreach (var x in devices)
if (Around_uuid.Keys.Contains(N))
{
var dev = x.Value;
var id = x.Key; // == dev.DeviceId
this.TextBlockRSSI.Text += $"{dev.Name}, {id}\n";
RUcnt++;
}
else { NUcnt++; }
}
this.textBox.Text = this.textBox.Text + "RU:" + RUcnt + "人, NU" + NUcnt + "人" + "\r\n";
// OKリストの中身と何個一致しているか
//var count = okList.Count((okId) => devices.ContainsKey(okId));
var count = okList.Count((okId) => devices.ContainsKey(okId));
this.TextBlockRSSI.Text += $"ok count: {count}\n";
if (count >= Define.OK_Num) {
this.TextBlockRSSI.Text += $"You are You!\n";
}
mutex.ReleaseMutex();
});
break;
case Windows.Foundation.AsyncStatus.Started:
Debug.WriteLine($"started: ");
break;
if (RUcnt >= OKnum && RUcnt * 3 > NUcnt)//安全かどうかの判定
{
this.textBox.Text = this.textBox.Text + "You are YOU!!" + "\r\n";
// watcher.Stop();
}
/* 判定フェーズ↑ */
default:
Debug.WriteLine($"failed: {task.Status} {task.ErrorCode}");
break;
}
}
};
}
private void Window_Closed(object sender, EventArgs e)
{
this.watcher.Stop();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.watcher.Start();
});
}
}
}
\ No newline at end of file
}
......@@ -53,6 +53,7 @@
</Reference>
<Reference Include="Windows.Devices" />
<Reference Include="Windows.Foundation" />
<Reference Include="Windows.Storage" />
<Reference Include="WindowsBase" />
<Reference Include="PresentationCore" />
<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>
// このコードはツールによって生成されました。
......@@ -29,10 +29,10 @@ using System.Windows.Media.TextFormatting;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Shell;
using WpfBleSampleApp;
using iBeaconScanner;
namespace WpfBleSampleApp {
namespace iBeaconScanner {
/// <summary>
......@@ -41,17 +41,9 @@ namespace WpfBleSampleApp {
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")]
internal System.Windows.Controls.TextBlock TextBlockokList;
#line default
#line hidden
#line 20 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock TextBlockRSSI;
internal System.Windows.Controls.TextBox textBox;
#line default
#line hidden
......@@ -87,24 +79,7 @@ namespace WpfBleSampleApp {
switch (connectionId)
{
case 1:
#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));
this.textBox = ((System.Windows.Controls.TextBox)(target));
return;
}
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>
// このコードはツールによって生成されました。
......@@ -29,10 +29,10 @@ using System.Windows.Media.TextFormatting;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Shell;
using WpfBleSampleApp;
using iBeaconScanner;
namespace WpfBleSampleApp {
namespace iBeaconScanner {
/// <summary>
......@@ -41,17 +41,9 @@ namespace WpfBleSampleApp {
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")]
internal System.Windows.Controls.TextBlock TextBlockokList;
#line default
#line hidden
#line 20 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock TextBlockRSSI;
internal System.Windows.Controls.TextBox textBox;
#line default
#line hidden
......@@ -87,24 +79,7 @@ namespace WpfBleSampleApp {
switch (connectionId)
{
case 1:
#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));
this.textBox = ((System.Windows.Controls.TextBox)(target));
return;
}
this._contentLoaded = true;
......
982da2a63defad06f7788fc2a61c45b51255c7eb
c29fb9c2404a15e23ee1a74e928fbf0ecdc3fa15
......@@ -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.exe
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 @@
winexe
C#
.cs
C:\Users\Kaoru\source\repos\catchBLE\WpfApp1\obj\Debug\
C:\Users\Kaoru\source\repos\WpfApp3\WpfApp1\obj\Debug\
WpfApp1
none
false
DEBUG;TRACE
C:\Users\Kaoru\source\repos\catchBLE\WpfApp1\App.xaml
C:\Users\Kaoru\source\repos\WpfApp3\WpfApp1\App.xaml
11151548125
5-2017746502
71148438499
72-24968511
MainWindow.xaml;
False
......
......@@ -4,17 +4,17 @@
winexe
C#
.cs
C:\Users\Kaoru\source\repos\WpfApp1\WpfApp1\obj\Debug\
C:\Users\Kaoru\source\repos\ConsoleApp2\WpfApp1\obj\Debug\
WpfApp1
none
false
DEBUG;TRACE
C:\Users\Kaoru\source\repos\WpfApp1\WpfApp1\App.xaml
C:\Users\Kaoru\source\repos\ConsoleApp2\WpfApp1\App.xaml
11151548125
9403354300
71148438499
72-24968511
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