20211124_ZNZT_upperpc/MonitoringTechnology/Views/LYScanPage.xaml.cs
2023-02-03 08:31:48 +08:00

133 lines
4.4 KiB
C#

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
{
/// <summary>
/// SystemSettings.xaml 的交互逻辑
/// </summary>
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;
}
/// <summary>
/// 设备列表双击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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();
}
}
/// <summary>
/// 连接选中的设备
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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("请选择要连接的设备!");
}
}
/// <summary>
/// 扫描设备
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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 = "开始扫描";
});
}
}
}