using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using MonitoringTechnology.Ble; using MonitoringTechnology.ViewModels; namespace MonitoringTechnology.Views { /// /// SystemSettings.xaml 的交互逻辑 /// public partial class LYScanPage : Window { private readonly BleManager BleManager = BleManager.Instance; private readonly LYScanPageViewModels lyScanPageViewModel = new LYScanPageViewModels(); public static BleDevice _bleDevice = new BleDevice(); //保存已选择的蓝牙设备信息 public static bool IsStayConnected_LY = false;//蓝牙页面数据是否已加载 public LYScanPage() { InitializeComponent(); DataContext = lyScanPageViewModel; //初始化页面之后直接扫描设备 BleManager.Instance.StartScan(); BleManager.Started += BleManager_Started; BleManager.FoundDevice += BleManager_FoundDevice; BleManager.Stopped += BleManager_Stopped; } /// /// 设备列表双击事件 /// /// /// private void deviceListBox_MouseDoubleClick(object sender, MouseButtonEventArgs e) { if (deviceListBox.SelectedItem is BleDevice device) { BleManager.Instance.StopScan(); SystemOperationView view = new SystemOperationView(device); _bleDevice = device; MainWindow.mainViewModel.MainContent = view; this.Close(); } } /// /// 连接选中的设备 /// /// /// private void btnConnect_Click(object sender, RoutedEventArgs e) { if (deviceListBox.SelectedItem is BleDevice device) { BleManager.Instance.StopScan(); SystemOperationView view = new SystemOperationView(device); _bleDevice = device; MainWindow.mainViewModel.MainContent = view; this.Close(); } else { MessageBox.Show("请选择要连接的设备!"); } } /// /// 扫描设备 /// /// /// private void btnStartScan_Click(object sender, RoutedEventArgs e) { lyScanPageViewModel.Devices.Clear(); BleManager.Instance.StartScan(); } private void BleManager_Started(BleManager sender, object args) { btnStartScan.Dispatcher.Invoke(delegate { btnStartScan.Content = "停止扫描"; }); } private void BleManager_FoundDevice(BleManager sender, BleDevice args) { deviceListBox.Dispatcher.Invoke(() => { lyScanPageViewModel.AddDevice(args); //如果附近搜索列表中有名称为DT_SERVER,则直接连接该设备 //但是目前出现一种情况,已经连接该设备之后,再次搜索附近设备,跳转出来的页面会卡顿,不会关闭 //foreach (var item in lyScanPageViewModel.Devices) //{ // if (item.Mac == "00:80:E1:26:C4:D3") // { // BleManager.Instance.StopScan(); // SystemOperationView view = new SystemOperationView(item); // _bleDevice = item; // MainWindow.mainViewModel.MainContent = view; // this.Close(); // } //} }); } private void BleManager_Stopped(BleManager sender, object args) { btnStartScan.Dispatcher.Invoke(delegate { btnStartScan.Content = "开始扫描"; }); } } }