如何将串行对象作为数字传递(使用arduino串行的新库)

问题描述 投票:-2回答:2

我想创建一个新的库来控制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++ arduino parameter-passing
2个回答
1
投票

C ++不支持reflection。您无法在运行时构建变量名。


0
投票

[而不是使用uint8_t,为什么不使用Stream对象,然后可以直接传递Serial2,如:newLibrary connection(Serial2,9600);

© www.soinside.com 2019 - 2024. All rights reserved.