2017-09-26 35 views
0

我試圖通過使用RadioHead ASK的串行監視器發送文本。從串行監視器輸入的文本不會發送到接收器。我用char數組和指針讀了C++理論......它不在我腦海中計算:)。 * msg如何在沒有首先聲明char msg的情況下存在?請參閱下面的示例。如果你能用任何樣本解釋來解釋理論,那將是非常棒的。感謝您的幫助!在Arduino中使用帶有const char *的Serial.read()RadioHead

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

你能解釋一下「不工作」是什麼意思嗎?您可能需要readString()。 https://www.arduino.cc/en/Serial/ReadString –

+0

嗨退休忍者,在接收連續監視器可讀文本不會出現。但是,當我將第一行設置爲const char * msg =「Test Message」時;它工作正常。 – UHFCaffeine

+0

在初始化結果中不能將'String'轉換爲'const char *'const char * msg = Serial.readString(); – UHFCaffeine

回答

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); 
} 
}