This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] LP-EM-CC2340R5:如何自动将外设连接到中央

Guru**** 2746095 points

Other Parts Discussed in Thread: CC2340R5, ENERGYTRACE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1279854/lp-em-cc2340r5-how-to-automatically-connect-peripheral-to-central

器件型号:LP-EM-CC2340R5
主题中讨论的其他器件:CC2340R5ENERGYTRACE

你好  

我想要在没有菜单的情况下自动将外设连接到中央设备。

在板(peripheral (cc2340r5)和 central (cc2340r5))已自动扫描和连接时如何连接   

 

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Umesh:

    您可以参考以下主题: 中央到外设自动连接

    但是、您是否需要有关如何实现此功能的更多详细信息?

    此致、

    大卫。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我想像没有菜单一样连接  

    因此、如果在扫描时找到器件(外设)、则会自动连接电路板。   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Umesh:

    此处所述的修改 无需通过"CONNECT"菜单即可将中央设备连接至外设。 中央设备将自动连接到它正在寻找的地址外设。 如果您希望连接到任何器件、我建议删除地址评估情况下的 if 语句(在 app_central.c 中)。

    确保先启动外设、然后再启动中央设备。

    希望这对您有所帮助。

    大卫。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我的查询与此不符。

    我想知道如何在电路板开启或加电时自动扫描。 没有菜单

    此致  

    乌梅希  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Umesh:

    我建议检查 扫描和广告基础 SLA 、看看这对您来说是否是一个良好的起点。

    什么不适合您?

    此致、

    大卫。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我需要直接扫描、无需任何菜单或按键。

    自动启动扫描启动。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Umesh:

    我假设您正在使用 based_ble 项目、并且您已经按照 从中心到外设自动连接的线程中所述、修改了针对外围设备和中央设备的项目

    修改后的 app_central.c 可以在加电后在没有菜单的情况下开始扫描,方法是将以下内容添加到 Central_Start ()函数中。

    status = BLEAppUtil_scanStart(&centralScanStartParams);
        if(status != SUCCESS)
          {
              // Return status value
              return(status);
         }

    您试过吗? 到底什么是不起作用的?

    此致、

    大卫。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    David、您好!

    谢谢你的忏悔,但我已经试过这一个,但这是不可行的。

    因此、当板加电时、我按下 按钮、扫描 将启动、这是预定义的、但我想在  加电后立即处理板 、同时扫描应自动启动。

    现在 发生的事情 ,我将转到 tis 文件 app_menu.c 并调用 menu_start()函数。

    我在下面提到了它、供您参考。  

    bStatus_t Menu_start()
    {
      bStatus_t status = SUCCESS;
    
    #if !defined(Display_DISABLE_ALL)
      MenuModule_params_t params = {
    #if ( HOST_CONFIG & ( CENTRAL_CFG | OBSERVER_CFG | PERIPHERAL_CFG ) )
        .mode = MenuModule_Mode_MENU_WITH_BUTTONS
    #else
        .mode = MenuModule_Mode_PRINTS_ONLY
    #endif // #if ( HOST_CONFIG & ( CENTRAL_CFG | OBSERVER_CFG | PERIPHERAL_CFG ) )
      };
    
    #if ( HOST_CONFIG & ( CENTRAL_CFG | OBSERVER_CFG | PERIPHERAL_CFG ) )
      status = MenuModule_init(&mainMenuObject, &params);
    #else
      status = MenuModule_init(NULL, &params);
      if(status == SUCCESS)
      {
    
        // Print the application name
        MenuModule_printf(APP_MENU_GENERAL_STATUS_LINE, 0,
                          MENU_MODULE_COLOR_BOLD MENU_MODULE_COLOR_CYAN
                          "Basic BLE" MENU_MODULE_COLOR_RESET);
      }
    #endif // #if ( HOST_CONFIG & ( CENTRAL_CFG | OBSERVER_CFG | PERIPHERAL_CFG ) )
    
    #endif // #if !defined(Display_DISABLE_ALL)
      return status;
    }
    

    调用函数 MenuModule_init (&mainMenuObject、&params)之后;然后 调用下面的函数  

    //*****************************************************************************
    //! Globals
    //*****************************************************************************
    #if ( HOST_CONFIG & ( CENTRAL_CFG | PERIPHERAL_CFG ) )
    // The current connection handle the menu is working with
    static uint16 menuCurrentConnHandle;
    #endif // #if ( HOST_CONFIG & ( CENTRAL_CFG | PERIPHERAL_CFG ) )
    
    #if ( HOST_CONFIG & ( CENTRAL_CFG | OBSERVER_CFG ) )
    // Scan Menu
    const MenuModule_Menu_t scanningMenu[] =
    {
     {"Scan", &Menu_scanStartCB, "Scan for devices"},
     {"Stop Scan", &Menu_scanStopCB, "Stop Scanning for devices"}
    };
    
    MENU_MODULE_MENU_OBJECT("Scanning Menu", scanningMenu);
    #endif // #if ( HOST_CONFIG & ( CENTRAL_CFG ) )
    
    #if ( HOST_CONFIG & ( CENTRAL_CFG | PERIPHERAL_CFG ) )
    // Connection Menu
    const MenuModule_Menu_t connectionMenu[] =
    {
    #if ( HOST_CONFIG & ( CENTRAL_CFG ) )
     {"Connect", &Menu_connectCB, "Connect to a device"},
    #endif // #if ( HOST_CONFIG & ( CENTRAL_CFG ) )
     {"Work with", &Menu_workWithCB, "Work with a peer device"}
    };
    
    MENU_MODULE_MENU_OBJECT("Connection Menu", connectionMenu);
    
    // Work with menu
    const MenuModule_Menu_t workWithMenu[] =
    {
     {"Change conn phy", &Menu_connPhyCB, "1M, Coded or 2M"},
     {"Param update", &Menu_paramUpdateCB, "Send connection param update req"},
     {"Disconnect", &Menu_disconnectCB, "Disconnect a specific connection"}
    };
    
    MENU_MODULE_MENU_OBJECT("Work with Menu", workWithMenu);
    
    // Phy selection menu
    const MenuModule_Menu_t connPhyMenu[] =
    {
     {"1 Mbps", &Menu_connPhyChangeCB, ""},
     {"2 Mbps", &Menu_connPhyChangeCB, ""},
     {"1 & 2 Mbps", &Menu_connPhyChangeCB, ""},
     {"Coded", &Menu_connPhyChangeCB, ""},
     {"1 & 2 Mbps & Coded", &Menu_connPhyChangeCB, ""},
    };
    
    MENU_MODULE_MENU_OBJECT("Set Conn PHY Preference", connPhyMenu);
    
    #endif // #if ( HOST_CONFIG & ( CENTRAL_CFG | PERIPHERAL_CFG ) )
    
    // Main menu
    #if ( HOST_CONFIG & ( CENTRAL_CFG | OBSERVER_CFG | PERIPHERAL_CFG ) )
    const MenuModule_Menu_t mainMenu[] =
    {
    #if ( HOST_CONFIG & ( CENTRAL_CFG | OBSERVER_CFG) )
     {"Scanning", &Menu_scanningCB, "Scan menu"},
    #endif // #if ( HOST_CONFIG & ( CENTRAL_CFG | OBSERVER_CFG ) )
    #if ( HOST_CONFIG & ( CENTRAL_CFG | PERIPHERAL_CFG ) )
     {"Connection", &Menu_connectionCB, "Connection menu"},
    #endif // #if ( HOST_CONFIG & ( CENTRAL_CFG | PERIPHERAL_CFG ) )
    };
    
    MENU_MODULE_MENU_OBJECT("Basic BLE Menu", mainMenu);
    #endif // #if ( HOST_CONFIG & ( CENTRAL_CFG | OBSERVER_CFG | PERIPHERAL_CFG ) )
    

    然后这个函数被称为 menu_module_menu_object ("连接菜单"、connectionMenu); 然后我 按下 按钮、扫描将开始。 但我不希望在开机时自动启动扫描。

    此致、

    乌梅希

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Umesh:

    请尝试禁用显示模块、您还可以根据需要使用 syscfg 来取出按钮。

    希望它有所帮助、

    大卫。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    David、您好!

     我已尝试禁用显示模块、但扫描 无法正常工作。

    那么、在这种情况下、我可以 直接调用扫描函数吗?

    此致、

    乌梅希

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Umesh:

    如何检查设备是否正在扫描? 我建议您查看 EnergyTrace。 它可以让您很好地了解开始运行程序时所发生的情况。 使用修改后的项目代码刷写器件并启动 EnergyTrace。

    在单击开始符号后、您应该能够看到类似这样的内容。

    确保先复位电路板、即使在运行 EnergyTrace 时也是如此。

    此致、

    大卫。