1

我一直在四处寻找,但似乎无法找到如何在编程夹具中确定 movesense 设备的正确端口,以便使用 wbcmd 工具查询设备。

我已经成功地使用夹具重新刷新设备,因此该部分正在工作。我缺少的是如何确定 wbcmd 中的端口选项,以便成功地与 mac os X(当前:High Sierra)上的设备通信。

我确实看到 /dev/cu.usbserial-AIO4RYMP 和 /dev/tty.usbserial-AIO4RYMP,但使用其中任何一个作为 --port 选项只会返回“未连接设备”。

在这一点上,我不确定这是 wbcmd 问题还是设置问题,但同样,我可以在 High Sierra 上成功地使用此设置刷新设备,并且看起来配置正确。

谢谢你的帮助

4

1 回答 1

1

我不会深入探讨 Mac 串行端口的详细信息,但简短的规则是/dev/tty.*用于传入(如 getty)和/dev/cu.*传出通信,因此您应该使用/dev/cu.*它。

确保您已SERIAL_COMMUNICATION(true)在 App.cpp 中定义,并注意启用串行通信会使 nRF52 的功耗增加几毫安。

编辑:我的立场得到纠正,看起来SERIAL_COMMUNICATION()-macro 在最新版本中已被弃用。那么最好的方法是使用 WB API system/settings/uarton-path 和 PUTtrue那里。此设置已保存,只需执行一次,下次重启时生效。

请参阅设置 API YAML

应用程序的小示例代码 ( UartClient.cpp):

#include "movesense.h"
#include "UartClient.hpp"
#include "system_settings/resources.h"

const char* const UartClient::LAUNCHABLE_NAME = "UART";

UartClient::UartClient()
    : ResourceClient(WBDEBUG_NAME(__FUNCTION__), WB_EXEC_CTX_APPLICATION),
      LaunchableModule(LAUNCHABLE_NAME, WB_EXEC_CTX_APPLICATION)
{
}

UartClient::~UartClient()
{
}

bool UartClient::initModule()
{
    mModuleState = WB_RES::ModuleStateValues::INITIALIZED;
    return true;
}

void UartClient::deinitModule()
{
    mModuleState = WB_RES::ModuleStateValues::UNINITIALIZED;
}

bool UartClient::startModule()
{
    mModuleState = WB_RES::ModuleStateValues::STARTED;

    // Enable UART. Notice that the change takes effect on next reboot.
    ResourceClient::asyncPut(WB_RES::LOCAL::SYSTEM_SETTINGS_UARTON(), AsyncRequestOptions::Empty, true);
    return true;
}

void UartClient::stopModule()
{
    mModuleState = WB_RES::ModuleStateValues::STOPPED;
}

标题 ( UartClient.hpp):

#pragma once

#include <whiteboard/LaunchableModule.h>
#include <whiteboard/ResourceClient.h>

class UartClient FINAL : private whiteboard::ResourceClient,
                         public whiteboard::LaunchableModule

{
public:
    /** Name of this class. Used in StartupProvider list. */
    static const char* const LAUNCHABLE_NAME;
    UartClient();
    ~UartClient();

private:
    /** @see whiteboard::ILaunchableModule::initModule */
    virtual bool initModule() OVERRIDE;

    /** @see whiteboard::ILaunchableModule::deinitModule */
    virtual void deinitModule() OVERRIDE;

    /** @see whiteboard::ILaunchableModule::startModule */
    virtual bool startModule() OVERRIDE;

    /** @see whiteboard::ILaunchableModule::stopModule */
    virtual void stopModule() OVERRIDE;
};

或者,您可以使用 iOS 示例应用程序,有一个选项可以在 UI 中启用 UART。该更改也会在下次重新启动时生效。

于 2018-09-19T06:16:59.847 回答