我有一个名为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函数的调用。
答案 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();
}