首页 > 解决方案 > 无法从 Telit BLE 模块读取数据(读取特征通知)

问题描述

在授予 tx 和 rx 信用之前似乎无法通知 Tx 信用,并且可以从我的终端 I/O 应用程序写入数据但不能读回任何数据(特征)这是我的连接功能。应用程序最初尝试通知 tx 信用,并且通知等于没有发生。在授予信用后(在不同的模块中)成功通知 tx 信用,但 Telit 实施指南说初始 tx 信用通知是强制性的。https://www.telit.com/wp-content/uploads/2017/09/TIO_Implementation_Guide_r6.pdf

  internal void Connect(CBPeripheral peripheral)
    {
        peripheral.DiscoveredService += (sender, e) =>
        {
            if (peripheral.Services == null) { return; }
            foreach (var s in peripheral.Services)
            {
                if (s.UUID.ToString().Contains("fefb"))
                {
                    service = s;
                    peripheral.DiscoverCharacteristics(service);
                };
            }
        };

        peripheral.DiscoveredCharacteristic += (sender, e) =>
        {
            //  peripheral.DiscoveredCharacteristic += (sender, e) =>
            // {
            foreach (var c in service.Characteristics)
            {
                if (c.UUID.ToString() == (TIO_UART_RX_UUID))
                {
                    UartRxCharacteristic = c;
                   
                }
            }
        };
        peripheral.DiscoveredCharacteristic += (sender, e) =>
        {
            foreach (var c in service.Characteristics)
            {

                if (c.UUID.ToString() == (TIO_UART_RX_CREDITS_UUID)) //|| (c.UUID.ToString() == TIO_UART_TX_CREDITS_UUID))

                {
                    UartRxCreditsCharacteristic = c;
                   
                }
            }
            
                
            
        };

        peripheral.DiscoveredCharacteristic += (sender, e) =>

        {

            foreach (var c in service.Characteristics)
            {

                if (c.UUID.ToString() == (TIO_UART_TX_CREDITS_UUID))
                {
                    UartTxCreditsCharacteristic = c;

                    if (Global.PeripheralManager != null)
                    {
                        // Global.PeripheralManager.Dispose();
                    }
                   
                    
                    this.PendingLocalUARTCreditsCount = this.MaxLocalUARTCreditsCount - this.LocalUARTCreditsCount;
                    Byte[] byteData = new Byte[1];


                    byteData[0] = (Byte)((this.PendingLocalUARTCreditsCount & 0xFF));


                    NSData valueData = (NSData.FromArray(byteData));
                   

                    FirstViewController.UartRxCreditsCharacteristic, CBCharacteristicWriteType.WithResponse);
                    peripheral.WriteValue(valueData, FirstViewController.UartTxCreditsCharacteristic, CBCharacteristicWriteType.WithResponse);
                  
                  
                    peripheral.SetNotifyValue(true, c);
                    // {
                    Global.PeripheralManager = new PeripheralManager(peripheral, c);
                    Global.PeripheralManager.DidReceiveData += PeripheralManager_DidReceiveData;
                   PeripheralManager(peripheral, c);
                  
                }
            }
        };
        peripheral.DiscoveredCharacteristic += (sender, e) =>
        { 
                foreach (var c in service.Characteristics)
            {
                if (c.UUID.ToString() == (TIO_UART_TX_UUID)) // == UUID_TX)
              //   UartTxCharacteristic = c; 
                {
                 

                    if (Global.PeripheralManager !=  null)
                    {
                        //Global.PeripheralManager.Dispose();
                    }

                    Global.PeripheralManager = new PeripheralManager(peripheral, c);
                    Global.PeripheralManager.DidReceiveData += PeripheralManager_DidReceiveData;
                    StrTemp = "";
                    Str1 = "";
                    var recdat = 3;
                   
                    
                    Global.PeripheralManager.Write(":F\r\n", recdat);
                   
                  //  name.Text = str;
                };
            }

        };
       

        myMgr.ConnectPeripheral(peripheral);

    }

标签: c#xamarin

解决方案


推荐阅读