我不会深入探讨 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。该更改也会在下次重新启动时生效。