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.

[参考译文] 客户端 ID 设置为唯一 MAC 地址- MQTT 客户端时出现问题

Guru**** 2553450 points


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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/616859/issue-with-client-id-set-as-a-unique-mac-address-mqtt-client

您好!

我想在 MQTT 客户端应用程序中更改客户端 ID。 目前、它使用静态客户端 ID、我必须使其成为动态 ID。因此我使用唯一的 Mac 地址作为客户端 ID。我可以从"sl_NetCfgGet (sl_MAC_ADDRESS_Get、NULL、&macAddressLen、(_u8 *) macAddressVal)"获取该地址、但无法设置 为客户端 ID。

他们是否有任何设置客户端 ID 的方法? 我将 Mac 地址存储到数组中、即 声明为全局数组的 macAddressFull。

在 Code 中、我将直接将 Mac 地址阵列"macAddressFull "设置为客户端 ID。下面是代码、但它不起作用-

connect_config usr_connect_config[]=
{
{
{
{
SL_MQTT_NETCONN_URL、
Server_address、
port_number、
0、
0、
0、
null
}、
服务器模式、
对、
}、
null、
macAddressFull、 //为客户端 ID 设置
null、
null、
对、
keep_alive_timer、
{MQTT_Recv、SL_MqttEvt、SL_MqttDisconnect}、
Topic_count、
{TOPIC1、topic2、TOPIC3、TOPIC4}、
{QOS2、QOS2、QOS2、QOS2}、
{will _topic、will _MSG、will _QoS、will _retain}、
否
}
}; 

 我必须在代码中进行的任何其他更改。

谢谢、此致、

Shashank

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

    您到底遇到了什么错误? MQTT 客户端示例代码使用字符串"user1"作为客户端 ID。 您是否尝试将 Mac 地址键入字符串?

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

    尊敬的 Seong:

    是的、我尝试将 Mac 地址键入字符串、但在这里、每次我都必须将客户端 ID 作为 Mac 地址。

    我要做的是、一个代码将在各种 LaunchPad 上运行。

    我想将其设置为动态、程序将从 ROM 获取 Mac 地址并将其设置为客户端 ID。 这样、一个代码就可以在各种 LaunchPad 上运行、并具有唯一的客户端 ID。每次我不想键入 Mac 地址和构建。

    在这里、我将获取 Mac 地址并存储在"macAddressFull "数组中、但当我尝试设置为客户端 ID 时、未正确设置 LP。LP 未与代理连接。我尝试将 Mac 地址拼写为字符串、它的工作方式是动态的、但它不工作。

    他们是否需要将"macAddressFull"数组转换为字符串,然后进行设置? 请提供建议。

    谢谢、此致、
    Shashank

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

    请输出该结构以验证其设置是否正确。 确保在启动连接之前设置结构。

    您能否通过"动态方式"工作来拓展您的含义? 如果对字符串进行拼写检查有效、它应该适用于所有 LaunchPad?
    您希望将 Mac 地址用作客户端 ID 的用例是什么?
    是否正在尝试修改 MAC 地址?
    您是否正在尝试从代理端或客户端创建客户端 ID?

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

    我正在处理 MQTT 客户端项目。在我的应用程序中、我必须与服务器通信2个 LP。在这里、我不想更改 Mac 地址。我想获取设备的 Mac 地址、并且必须用作客户端 ID。

    如果我们在两个 LaunchPad 中使用相同的客户端 ID、则每次只有一个 LaunchPad 与服务器通信。 相同的客户端 ID 不是两个 LaunchPad 都使用的正确方法。如果2个 LaunchPad 想要连接 MQTT 服务器、它们必须具有不同的客户端 ID、而两者同时将与服务器进行通信。这就是为什么、 我正在尝试首先调用"sl_NetCfgGet ()函数以获取 MAC 地址并设置为客户端 ID。通过这种方式、每个客户端 ID 都不同(因为每个 Launchpad 都有自己的唯一 MAC 地址)。

    每次我不想为每个 Launchpad 创建.bin 文件时、都要这样做。 单个程序可以在所有 LaunchPad 上运行、具有不同的客户端 ID 并一次与服务器通信。

    目前、我能够获取设备的 MAC 地址并将其存储到阵列中。相同的阵列我将其设置为客户端 ID、但当我指定其工作的客户端 ID 时、它不起作用(即它未与代理连接)。

    它的结构是接受十六进制数组作为客户端 ID,还是必须先将其转换为字符串中的默认值,因为它使用的是"user1"? 因为我将在数组中获得十六进制的 Mac 地址。

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

    问题已解决。现在、我可以获取设备的 MAC 地址并设置为客户端 ID。

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

    尊敬的 Seong:

    感谢您的回复。

    我在代码中所做的更改是从"sl_NetCfgGet ()函数获取 MAC 地址,并将其存储在具有十六进制值的数组中。要将 MAC 地址设置为客户端 ID,需要转换字符串中的所有十六进制值,则同一变量可以设置为客户端 ID。

    直接的十六进制数组不起作用。它需要先用字符串转换。

    希望这有助于其他用户将 MAC 地址设置为客户端 ID。

    此致、

    Shashank