在Arduino RadioHead中使用带有const char *的Serial.read()

时间:2017-09-26 14:36:39

标签: c++ arduino

我尝试使用RadioHead ASK通过串行监视器发送文本。从串行监视器输入的文本不会发送到接收器。我已经阅读了关于C ++理论的char数组和指针......它不是我脑子里的计算:)。如果没有先声明char msg,* msg如何存在?请参阅下面的示例。如果您能用任何样本解决方案解释理论,那将是很棒的。谢谢你的帮助!

void setup() {
  Serial.begin(9600); // Debugging only
  if (!driver.init())
    Serial.println("init failed");
  else
    Serial.println("TX");
}

void loop() {
  const char *msg = Serial.read();
  driver.send((uint8_t *)msg, strlen(msg));
  driver.waitPacketSent();
  delay(200);
}

1 个答案:

答案 0 :(得分:0)

这似乎有效。 strMsg.toCharArray(msg,i);你能否评论一下代码的效率?有没有更好的办法?谢谢!

void setup() {
  Serial.begin(9600); // Debugging only
  if (!driver.init())
    Serial.println("init failed");
  else
    Serial.println("TX");
}

void loop() {
if (Serial.available() > 0)
  {
String strMsg = "";
int i;

strMsg = Serial.readString();
i = (strMsg.length() + 1);
char msg[i] = {};
Serial.print("Sent: ");
Serial.println(strMsg);
Serial.print("Size: ");
Serial.println(i);
strMsg.toCharArray(msg, i);
driver.send((uint8_t *)msg, strlen(msg));
driver.waitPacketSent();
delay(200);
 }
}