Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Arduino中作为函数参数的串行对象_C++_Arduino - Fatal编程技术网

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

C++ Arduino中作为函数参数的串行对象,c++,arduino,C++,Arduino,我有一个叫做Client的类。该类的构造函数定义为 Client(HardwareSerial * serial); 我班上还有一个私有字段HardwareSerial*serial。在构造函数中,我分配this->serial=serial。使用Client*Client=newclient(&Serial2)启动该类 一切都很好,直到我在构造函数中调用this->serial->begin(baud)。Arduino在这一点之后被卡住了。发生了什么事 类定义 #include <Ha

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

Client(HardwareSerial * serial);
我班上还有一个私有字段
HardwareSerial*serial
。在构造函数中,我分配
this->serial=serial
。使用
Client*Client=newclient(&Serial2)启动该类

一切都很好,直到我在构造函数中调用
this->serial->begin(baud)
。Arduino在这一点之后被卡住了。发生了什么事

类定义

#include <HardwareSerial.h>

class Client {
  private:
    HardwareSerial * serial;

  public:
    Client(HardwareSerial * serial);
};
和实例化

Client * client = new Client(&Serial2);

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

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

您需要有一个
begin
方法,然后在
setup()中调用该方法

客户:h

#include <HardwareSerial.h>

class Client {
  private:
    HardwareSerial * serial;

  public:
    Client(HardwareSerial * serial);
    void begin();
};
您的程序:

#include "Client.h"

Client * client = new Client(&Serial2);

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

@RickAstley我添加了相关的代码片段。@RickAstley你是什么意思?@RickAstley它是由Arduino定义的。
#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();
}