串行对象作为Arduino中的函数参数

时间:2017-11-17 19:08:06

标签: c++ arduino

我有一个名为Client的类。该类的构造函数定义为

Client(HardwareSerial * serial);

我班上也有一个私人字段HardwareSerial * serial。在构造函数中,我指定this->serial = serial。该课程以Client * client = new Client(&Serial2);开始。

在我在构造函数中调用this->serial->begin(baud)之前,一切都很好。在此之后,Arduino陷入困境。发生了什么事?

班级定义

#include <HardwareSerial.h>

class Client {
  private:
    HardwareSerial * serial;

  public:
    Client(HardwareSerial * serial);
};

班级实施

#include "Client.h"

Client::Client(HardwareSerial * serial) {
  this->serial = serial;
  this->serial->begin(115200);
}

实例化

Client * client = new Client(&Serial2);

将Stream对象传递给类(当然更改变量类型)并在Arduino设置函数中调用begin工作但这不是最佳的。这样,类就不会处理begin函数的调用。

1 个答案:

答案 0 :(得分:0)

在初始化串行接口之前调用构造函数。

您需要使用begin方法,然后在setup()内调用。

Client.h

#include <HardwareSerial.h>

class Client {
  private:
    HardwareSerial * serial;

  public:
    Client(HardwareSerial * serial);
    void begin();
};

Client.cpp

#include "Client.h"

Client::Client(HardwareSerial * serial) {
  this->serial = serial;
}

void Client::begin() {
  this->serial->begin(115200);
}

您的计划:

#include "Client.h"

Client * client = new Client(&Serial2);

void setup() {
  client->begin();
}