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. //} /// /// 搜索到蓝牙设备之后到代理事件 /// FBYBleDeviceBackBlock getBlufiDeviceDelegate; /// /// 设备搜索到蓝牙设备之后到代理事件 /// public void SetBlufiDeviceDelegate(Action 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}"); } }); } /// /// 搜索蓝牙设备 /// public void ScanBlufi() { share.StartScan(getBlufiDeviceDelegate); } /// /// 停止搜索蓝牙设备 /// public void StopScanBlufi() { share.StopScan(); } /// /// 关闭 BlufiClient Close BlufiClient /// 释放资源 /// public void CloseBlufiClient() { blufiClient.Close(); } /// /// 链接蓝牙 /// public void ConnectionBlufi(string blufiId) { blufiClient.Connect(blufiId); } /// /// 断开蓝牙链接 /// public void CloseConnectionBlufi() { blufiClient.RequestCloseConnection(); } /// /// 发送数据 /// 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 } } }