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.

[参考译文] IWR1642BOOST:使用我自己的 Win32 C 程序发送 CLI 时、可以#39;t 从 IWR1642BOOST 接收"done 和 quot

Guru**** 2546020 points


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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/696776/iwr1642boost-can-t-receive-done-from-iwr1642boost-when-sending-cli-using-my-own-win32-c-program

器件型号:IWR1642BOOST

您好!

每当我使用自己的 C 程序配置器件时、我都很难从 IWRBOOST 接收"DONE"字符串。

我将通过串行 UART 配置以115200波特率逐一发送以下字符数组。

如果我先使用 Visualizer 配置器件、然后尝试使用我自己的程序发送以下数组、那么我将收到我发送的确切行、但不使用"DONE"。 字符串。 (请注意、接收数组的长度为100字节、因此我认为接收整个确认应该足够了。)

如果我不使用 Visualizer 配置器件、而是尝试使用相同的 C 程序配置器件、我将不会从串行器件中接收任何内容。 串行读取将超时。

我是否正在发送正确的序列,且\n 在行的末尾? 我还将添加每行20ms 的延迟。

char aTxLine1[]="dfeDataOutputMode 1\n";
char aTxLine2[]="通道配置15 3 0\n";
char aTxLine3[]="adcCfg 2 1\n";
char aTxLine4[]="adcbufCfg 0 1 1\n";
char aTxLine5[]="profileCfg 0 77 30 7 62 0 60 1 128 2500 0 30\n";
char aTxLine6[]="啁 啾 Cfg 0 0 0 0 0 0 0 1 \n";
char aTxLine7[]="chirpCfg 1 0 0 0 2 \n";
char aTxLine8[]="frameCfg 0 1 128 0 50 1 0\n";
char aTxLine9[]="低功耗0\n";
char aTxLine10[]="guiMonitor 1 0 0\n";
char aTxLine11[]="doaCfg 600 1875 30 1\n";
char aTxLine12[]="SceneryParam - 2 2 0.05 6\n";
char aTxLine13[]="GatingParam 4 3 2 0\n";
char aTxLine14[]="StateParam 10 5 100 5\n";
char aTxLine15[]="AllocationParam 250 0.01 5 1 2\n";
char aTxLine16[]="VariationParam 0.289 0.289 1.0\n";
char aTxLine17[]="trackingCfg 1 2 250 20 200 50 90\n";
char aTxLine18[]="sensorStart\n";

代码对所有行重复如下:

/*发送行*/

if (false =libserialcomms_WriteData (handle、aTxLine1、sizeof (aTxLine1)、numOfBytesWr))

fprintf (stdout、"写入失败!\n");
返回 STATUS_ERROR;

睡眠(延迟);

/*从设备接收 ACK */

if (false =libserialcomms_ReadData (handle、data、line_buff、numOfBytesRd、timeout))

fprintf (stdout、"读取失败\n");
返回 STATUS_ERROR;

如果器件首先由 Visualizer 进行配置、

输出:

DfeDataOutputMode 1
mmwDemo:/>

通道配置15 3 0
mmwDemo:/>

ADCfg 2 1.
mmwDemo:/>emo:/>

(依此类推)

如果器件未由 Visualizer 进行配置、只需我的程序即可

输出

没有

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    请检查下列事项:
    可视化工具发送 cfg 时该 EVM 是否正常工作?
    2.您使用的是外部 USB 转 UART 电缆还是板载 XDS110?
    其他终端串行端口(UART)工具是否正常工作?

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

    1.是的、此 EVM 可与 Visualizer 配合使用。

    2.我正在使用板载 XDS110。

    3.如果我使用 Realterm 发送配置文件,它将起作用。 我可以看到"DONE"字符串被回显。

    每行的\n 是否正确并作为字符数组发送? 我想知道为什么我可以从 EVM 接收回显命令、而不是"DONE"字符串、因为该器件已经由可视化工具进行配置。 如果从启动开始重新启动、我不会接收任何内容。

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

    你好、Mary、

    “\n”应该正确。

    由于您使用的是 Windows、我假设您正在解析命令的文本文件:您是否检查了解析行中的'\r\n'?

    在 ROS 演示代码中有类似的东西  


    //删除 Windows 回车(如果有)
    line.erase (std::remove (line.begin ()、line.end ()、'\r')、line.end ());

    之后、'\n\ istapped


    line.append ("\n");

    祝你好运、

    安瑞科

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    啊、抱歉、我应该已经完整阅读了您的帖子。
    因此、您的命令是硬编码的。

    您可能需要在开始时使用"顶部传感器"?


    否则、我认为查看 ROS 演示代码是个好主意、因为有命令通过 C 程序发送。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    如果 EVM 可以与在线 GUI 配合使用、请检查您自己的软件是否可以正确发送配置。

    配置文件以脚本发送、115200bps 通过应用程序/用户端口。

    谢谢。

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

    我已解决缺少的"DONE"字符串。

    我还记得 C 字符串总是被\0终止。 最初、我发送的是整个字符数组、包括隐藏的\0。 我没有尝试发送最后一个字节、现在我可以看到"DONE"字符串被回显。

    但是、成功配置后、我的传感器仍然无法启动。 我是否在命令的末尾遗漏了一些内容? 为什么它仍然无法启动、即使它说配置正确?
    _________________________________________________________
    下面是我要发送的内容:

    const char aTxLine1[]="dfeDataOutputMode 1\n";
    const char aTxLine2[]="通道配置15 3 0\n";
    const char aTxLine3[]="adcCfg 2 1\n";
    const char aTxLine4[]="adcbufCfg 0 1 1\n";
    const char aTxLine5[]="profileCfg 0 77 30 7 62 0 60 1 128 2500 0 30\n";
    const char aTxLine6[]="chirpCfg 0 0 0 0 0 0 0 1 \n";
    const char aTxLine7[]="chirpCfg 1 0 0 0 2 \n";
    const char aTxLine8[]="frameCfg 0 1 128 0 50 1 0\n";
    const char aTxLine9[]="低功耗0\n";
    const char aTxLine10[]="guiMonitor 1 0 0\n";
    const char aTxLine11[]="doaCfg 600 1875 30 1\n";
    const char aTxLine12[]="SceneryParam -2 0.05 6\n";
    const char aTxLine13[]="GatingParam 4 3 2 0\n";
    const char aTxLine14[]="StateParam 10 5 100 5\n";
    const char aTxLine15[]="AllocationParam 250 0.01 5 1 2\n";
    const char aTxLine16[]="VariationParam 0.289 0.289 1.0\n";
    const char aTxLine17[]="trackingCfg 1 2 250 20 200 50 90\n";
    const char aTxLine18[]="sensorStart\n";

    _________________________________________________________
    以下是配置的结果:

    DfeDataOutputMode 1
    完成
    mmwDemo:/>

    通道配置15 3 0
    完成
    mmwDemo:/>

    ADCfg 2 1.
    完成
    mmwDemo:/>

    AdcbufCfg 0 1 1
    完成
    mmwDemo:/>

    ProfileCfg 0 77 30 7 62 0 60 1 128 2500 0 30
    完成
    mmwDemo:/>

    线性调频脉冲配置0 0 0 0 0 0 0 0 1
    完成
    mmwDemo:/>

    线性调频脉冲配置1 1 0 0 0 0 2
    完成
    mmwDemo:/>

    帧配置0 1 128 0 50 1 0
    完成
    mmwDemo:/>

    低功耗0 0
    完成
    mmwDemo:/>

    guiMonitor 1 0 0
    完成
    mmwDemo:/>

    DoaCfg 600 1875 30 1.
    完成
    mmwDemo:/>

    生成参数-2 2 0.05 6
    完成
    mmwDemo:/>

    GatingParam 4 3 2 0
    完成
    mmwDemo:/>

    param State10 5 10 100 5
    完成
    mmwDemo:/>

    AllocationParam 250 0.01 5 1 2
    完成
    mmwDemo:/>

    VariationParam 0.289 0.289 1.0
    完成
    mmwDemo:/>

    跟踪配置1 2 250 20 200 50 90
    完成
    mmwDemo:/>

    sensorStart
    完成
    mmwDemo:/>
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    能否检查 UART 是否正确?
    对于毫米波演示、数据和配置传输需要2个 UART。
    应用/用户 UART:配置端口115200bps:UART_RX <- USB-UART 电缆<- PC
    辅助数据端口:数据端口921600bps:MSS_logger->USB-UART 电缆-> PC

    然后、您能否使用 UART 终端链接 Putty 检查 PC 是否已接收到任何数据。 谢谢。

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

    是的、UART 正确。 正如我说过的、我能够发送 CLI 配置并通过 Application/User/115200bps UART 接收"Done"字符串。

    不过、在由我的用户程序配置后、我仍然无法看到传感器启动、并且在数据端口/921600bps 中没有输出任何数据。

    使用可视化工具、一切都正常。

    您能帮助我查看我使用 C 程序发送的内容吗? 我认为可能有一些我错过的东西、但我无法弄清楚。 我想、一旦我收到完成字符串、一切都将得到解决。

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

    尊敬的 Mary:

    当我查看可视化工具的命令时、可视化工具会在开头发送以下命令:

    sensorStop


    FlushCfg

    这些可能缺失了吗?

    OH 和我在第12页的 SDK 用户指南中找到:

    "每次重新配置时、它都会首先向器件发送'sensorStop'命令以停止毫米波的活动运行

    器件。 接下来、它会发送命令'flushCfg'以在发送新配置之前刷新旧配置。 是的
    必须在发送新配置之前刷新旧配置。 此外、必须发送所有
    用于该演示/平台的命令、即使用户希望禁用功能、即没有命令
    可选。"

    祝你好运、

    安瑞科

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

    我尝试使用 Realterm 工具将 sensorStop 和 flushCfg 发送到 EVM。 虽然 sensorStop 确实会停止数据 UART 端口中的数据记录、但即使我发送 flushCfg 并再次重新发送整个 CLI 命令、我也无法使用 sensorStart 重新启动数据记录。 恢复数据记录的唯一方法是按下 EVM 上的 RESET 按钮、然后再次重新发送整个 CLI 配置。 有人知道为什么会这样?

    因此、我想理解两个问题:

    1.我的 C 程序 CLI 配置中缺少哪些内容无法使 EVM 开始流式传输数据? 成功接收到"SensorStart"命令后、EVM 是否应该能够启动?

    2.为什么在我发送 sensorStop EVM 时、除非我按下重置按钮、否则数据记录将停止并无法恢复?

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

    您好!

    请确保通过 GUI/ Realterm 发送的 CLI 命令与 TI 的 GUI 相同。

    谢谢、

    Wesley

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

    这就是我已经做的事情。 我认为我将发送与 TI Visualizer 相同的命令。 但是、它不起作用。

    我相信我错过了一些东西。 这就是我来到这个论坛寻求帮助的原因。

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

    您好!

    请确保 您可以使用2终端串行端口(UART)监控工具(如 PuTTy)手动获取数据。 一个设置为115200bps 作为命令、另一个设置为921600bps 作为数据。 然后在命令终端中键入配置、每行输入"enter"。 然后、您可以在数据终端中获取数据。

    如果您无法获取数据、请检查您的硬件连接和 PC 设置。 谢谢。

    此致、

    Wesley

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

    正如我在以前的许多职位上所说的那样,我以重新的方式尝试了它。 它在工作。

    我无法理解的是、当我尝试我的 C 程序时、它为什么不起作用。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    如果领域能够工作。 我们可以轻松地确定这是您自己的 PC 软件问题。
    那么它应该由您自己解决。
    谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我知道这应该由自己解决。 我不是要你为我解决这个问题。 在 之前的帖子中、我反复询问以下问题、但您仍在说检查 UART 端口。  

    1.我的 C 程序 CLI 配置中缺少哪些内容无法使 EVM 开始流式传输数据? 成功接收到"SensorStart"命令后、EVM 是否应该能够启动? 请注意、正在接收 DONE 字符串。

    2.为什么在我发送 sensorStop EVM 时、除非我按下重置按钮、否则数据记录将停止并无法恢复?

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

    您好!

    您能否对通过 PC 软件和官方 GUI 发送的命令进行二进制比较?

    EVM 接收到所有正确的命令并使用" SensorStart"完成后、它将回复"完成"、然后器件开始工作。

    要 恢复数据记录、是否可以再次尝试发送 CFG 文件?

    谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉、我们无法及时为您提供答案。
    如果这仍然是一个问题、我们建议您启动一个新的线程。