using System;
|
using CoreBluetooth;
|
using Foundation;
|
using HdlBlufi;
|
|
namespace HDL_ON
|
{
|
|
public class MyBlufiClient
|
{
|
|
HdlBluWi share;
|
|
BlufiClient blufiClient;
|
|
public new BlueWifiDelegate BlufiDelegate;
|
public MyBlufiClient()
|
{
|
SetBlufiDeviceDelegate(null);
|
|
share = HdlBluWi.Share();
|
|
|
blufiClient = new BlufiClient();
|
|
blufiClient.CentralManagerDelete = new BlueCBCentralManagerDelegate();
|
blufiClient.BlufiDelegate = new BlueWifiDelegate(blufiClient);
|
}
|
|
//public string GetPer()
|
//{
|
//share.
|
//}1
|
|
|
/// <summary>
|
/// 搜索到蓝牙设备之后到代理事件
|
/// </summary>
|
FBYBleDeviceBackBlock getBlufiDeviceDelegate;
|
|
/// <summary>
|
/// 设备搜索到蓝牙设备之后到代理事件
|
/// </summary>
|
public void SetBlufiDeviceDelegate(Action<string, string> action)
|
{
|
getBlufiDeviceDelegate = new FBYBleDeviceBackBlock((arg0) =>
|
{
|
action?.Invoke(arg0.Name, arg0.Uuid.ToString());
|
if (!string.IsNullOrEmpty(arg0.Name) && arg0.Name.Contains("BLU"))
|
{
|
Console.WriteLine($"{arg0.Name} : {arg0.Uuid}");
|
}
|
});
|
}
|
|
/// <summary>
|
/// 搜索蓝牙设备
|
/// </summary>
|
public void ScanBlufi()
|
{
|
share.StartScan(getBlufiDeviceDelegate);
|
}
|
/// <summary>
|
/// 停止搜索蓝牙设备
|
/// </summary>
|
public void StopScanBlufi()
|
{
|
share.StopScan();
|
}
|
/// <summary>
|
/// 关闭 BlufiClient Close BlufiClient
|
/// 释放资源
|
/// </summary>
|
public void CloseBlufiClient()
|
{
|
blufiClient.Close();
|
}
|
|
/// <summary>
|
/// 链接蓝牙
|
/// </summary>
|
public void ConnectionBlufi(string blufiId)
|
{
|
blufiClient.Connect(blufiId);
|
}
|
|
|
|
/// <summary>
|
/// 断开蓝牙链接
|
/// </summary>
|
public void CloseConnectionBlufi()
|
{
|
blufiClient.RequestCloseConnection();
|
}
|
|
/// <summary>
|
/// 发送数据
|
/// </summary>
|
public void SendMsg(string msg)
|
{
|
NSData vs = new NSData();
|
vs = msg;
|
blufiClient.PostCustomData(vs);
|
}
|
|
|
|
public class BlueWifiDelegate : BlufiDelegate
|
{
|
[Weak] BlufiClient _client;
|
public BlueWifiDelegate(BlufiClient client)
|
{
|
_client = client;
|
}
|
public BlueWifiDelegate()
|
{
|
}
|
|
protected BlueWifiDelegate(NSObjectFlag t) : base(t)
|
{
|
}
|
|
protected internal BlueWifiDelegate(IntPtr handle) : base(handle)
|
{
|
}
|
|
public override void Blufi_didNegotiateSecurity(HdlBlufi.BlufiClient client, BlufiStatusCode status)
|
{
|
Console.WriteLine("Blufi_didNegotiateSecurity");
|
//base.Blufi_didNegotiateSecurity(client, status);
|
}
|
|
public override void Blufi_didPostCustomData(HdlBlufi.BlufiClient client, NSData data, BlufiStatusCode status)
|
{
|
if (status == BlufiStatusCode.Success)
|
{
|
MainPage.Log($"发送蓝牙数据成功:{data.ToString()}");
|
}
|
else
|
{
|
MainPage.Log("发送蓝牙数据失败");
|
}
|
}
|
|
public override void Blufi_didReceiveDeviceScanResponse(HdlBlufi.BlufiClient client, BlufiScanResponse[] scanResults, BlufiStatusCode status)
|
{
|
Console.WriteLine("Blufi_didReceiveDeviceScanResponse");
|
//base.Blufi_didReceiveDeviceScanResponse(client, scanResults, status);
|
}
|
|
public override void Blufi_didReceiveDeviceVersionResponse(HdlBlufi.BlufiClient client, BlufiVersionResponse response, BlufiStatusCode status)
|
{
|
Console.WriteLine("Blufi_didReceiveDeviceVersionResponse");
|
//base.Blufi_didReceiveDeviceVersionResponse(client, response, status);
|
}
|
|
public override void Blufi_didPostConfigureParams(HdlBlufi.BlufiClient client, BlufiStatusCode status)
|
{
|
Console.WriteLine("Blufi_didPostConfigureParams");
|
//base.Blufi_didPostConfigureParams(client, status);
|
}
|
|
public override void Blufi_didReceiveCustomData(HdlBlufi.BlufiClient client, NSData data, BlufiStatusCode status)
|
{
|
Console.WriteLine("Blufi_didReceiveCustomData");
|
//base.Blufi_didReceiveCustomData(client, data, status);
|
}
|
|
public override void Blufi_didReceiveDeviceStatusResponse(HdlBlufi.BlufiClient client, BlufiStatusResponse response, BlufiStatusCode status)
|
{
|
Console.WriteLine("Blufi_didReceiveDeviceStatusResponse");
|
//base.Blufi_didReceiveDeviceStatusResponse(client, response, status);
|
}
|
|
public override void Blufi_didReceiveError(HdlBlufi.BlufiClient client, nint errCode)
|
{
|
Console.WriteLine("Blufi_didReceiveError");
|
//base.Blufi_didReceiveError(client, errCode);
|
}
|
|
public override void Blufi_gattPrepared(HdlBlufi.BlufiClient client, BlufiStatusCode status, CBService service, CBCharacteristic writeChar, CBCharacteristic notifyChar)
|
{
|
if (status == BlufiStatusCode.Success)
|
{
|
MainPage.Log("蓝牙连接成功");
|
}
|
else
|
{
|
MainPage.Log("蓝牙连接失败");
|
}
|
//base.Blufi_gattPrepared(client, status, service, writeChar, notifyChar);
|
}
|
}
|
|
public class BlueCBCentralManagerDelegate : CBCentralManagerDelegate
|
{
|
public override void UpdatedState(CBCentralManager central)
|
{
|
|
//throw new NotImplementedException();
|
}
|
//public override void
|
}
|
}
|
|
}
|