133 lines
4.4 KiB
C#
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 = "开始扫描";
|
|
});
|
|
}
|
|
}
|
|
}
|