C++ Arduino中作为函数参数的串行对象
我有一个叫做Client的类。该类的构造函数定义为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(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();
}