You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MAUI Android应用连接蓝牙低功耗(BLE)设备技术咨询

MAUI BLE压力传感器连接方案

付费稳定库推荐

  • Telerik UI for MAUI:内置成熟的BLE通信组件,支持全平台(iOS/Android/Windows/MacCatalyst),提供官方技术支持与完善文档,能快速实现设备扫描、连接及数据读取
  • Syncfusion MAUI Controls:包含BLE模块,适配MAUI所有目标平台,企业级技术支持保障,配套有完整的使用示例
  • Infragistics MAUI:BLE组件经过多平台兼容性测试,稳定性强,专业团队提供技术支持,文档中包含详细的设备连接与数据交互教程

可编译实现连接的示例代码

以下是基于Telerik UI for MAUI的BLE连接与压力值读取简化示例(需先安装对应NuGet包):

using Telerik.Maui.Controls.Compatibility.Bluetooth;
using System.Timers;

public partial class MainPage : ContentPage
{
    private RadBluetoothManager bluetoothManager;
    private RadBluetoothDevice connectedDevice;
    private RadBluetoothCharacteristic pressureCharacteristic;
    private Timer readTimer;

    public MainPage()
    {
        InitializeComponent();
        bluetoothManager = new RadBluetoothManager();
        bluetoothManager.DeviceDiscovered += BluetoothManager_DeviceDiscovered;
        readTimer = new Timer(5000); // 每隔5秒读取一次
        readTimer.Elapsed += ReadTimer_Elapsed;
    }

    // 扫描BLE设备
    private async void ScanButton_Clicked(object sender, EventArgs e)
    {
        await bluetoothManager.StartScanningAsync();
    }

    // 发现目标设备(根据设备名称筛选)
    private void BluetoothManager_DeviceDiscovered(object sender, RadBluetoothDeviceEventArgs e)
    {
        if (e.Device.Name.Contains("PressureSensor")) // 替换为你的传感器名称
        {
            bluetoothManager.StopScanning();
            ConnectToDevice(e.Device);
        }
    }

    // 连接设备并找到压力特征
    private async void ConnectToDevice(RadBluetoothDevice device)
    {
        connectedDevice = device;
        await connectedDevice.ConnectAsync();
        
        // 替换为你的传感器服务UUID和特征UUID
        var pressureService = await connectedDevice.GetServiceAsync(Guid.Parse("YOUR_SERVICE_UUID"));
        pressureCharacteristic = await pressureService.GetCharacteristicAsync(Guid.Parse("YOUR_PRESSURE_CHAR_UUID"));
        
        readTimer.Start();
    }

    // 定时读取压力值
    private async void ReadTimer_Elapsed(object sender, ElapsedEventArgs e)
    {
        if (pressureCharacteristic != null && connectedDevice.IsConnected)
        {
            var data = await pressureCharacteristic.ReadAsync();
            // 根据传感器的协议解析数据,此处示例为简单转换
            float pressureValue = BitConverter.ToSingle(data, 0);
            MainThread.BeginInvokeOnMainThread(() =>
            {
                PressureLabel.Text = $"当前压力值: {pressureValue} kPa";
            });
        }
    }

    protected override void OnDisappearing()
    {
        base.OnDisappearing();
        readTimer?.Stop();
        connectedDevice?.DisconnectAsync();
        bluetoothManager?.StopScanning();
    }
}

代码说明

  1. 需在MAUI项目中安装Telerik UI for MAUI的NuGet包,并在平台配置文件中开启蓝牙权限(Android需在AndroidManifest.xml中添加BLUETOOTH、BLUETOOTH_ADMIN、ACCESS_FINE_LOCATION等权限;iOS需在Info.plist中添加NSBluetoothAlwaysUsageDescription)
  2. 替换代码中的YOUR_SERVICE_UUID和YOUR_PRESSURE_CHAR_UUID为你的压力传感器对应的UUID
  3. 根据传感器的数据协议调整压力值解析逻辑

内容的提问来源于stack exchange,提问作者Sutts99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 07:02:38