我想创建一个新的库来控制arduino的Serial库。
这是我想要的...
主草图
#include <newLibrary.h>
newLibrary connection(2,9600); // 2 is Serial2, 9600 is baudRate
void main()
{
connection.start();
}
newLibrary.cpp
newLibrary::newLibrary (uint8_t port, long baudRate)
{
__port = port;
__baudRate = baudRate;
}
void newLibrary::start()
{
(Serial+port).begin(); // I need to add port to Serial to make Serial2
}
我想做的是,
用户将选择将与哪个串行端口(例如,Serial / Serial1 / Serial2等...)一起使用;
newLibrary connection(2,9600); // 2 is Serial2, 9600 is baudRate
之后,newLibrary.h中的启动函数将使用类似的算法启动该串行端口;
void newLibrary::start()
{
(Serial+port).begin(); // Which is equal to Serial.begin() or Serial1.begin() etc
}
我知道可以通过if语句或切换大小写来完成...
但是还有另一种方法吗?
例如宏。...
我知道宏可以像;一样使用
#define serialPort (Serial##1) // so the serialPort refers to Serial1
但是这种方式对我不起作用。...
C ++不支持reflection。您无法在运行时构建变量名。
[而不是使用uint8_t,为什么不使用Stream对象,然后可以直接传递Serial2,如:newLibrary connection(Serial2,9600);