2017-04-19 67 views
0

我想在函數中使用SoftwareSerial變量,但由於某些原因它總是不可用。 下面給出了各種代碼。如何在Arduino的函數中使SoftwareSerial變量可用

gsm.h 

#ifndef GSM_H_ 
#define GSM_H_ 
#include <SoftwareSerial.h> 

struct gsm{ 

    char *message; 
    char phone_number[20]; 

    void getText(SoftwareSerial serial, int index); 
}; 


#endif 


gsm.cpp 

#include "gsm.h" 
#include <string.h> 
#include <arduino.h> 
#include <SoftwareSerial.h> 

void gsm::getText(SoftwareSerial serial, int index){ 

    char str[100]; 
    serial.print("AT+CMGR=1 \r"); 
    delay(250); 
    if(serial.available()){ 
     Serial.print("serial is available"); 
     serial.readBytes(message, 100); 
    } 

} 


test.ino 

#include "gsm.h" 
#include <SoftwareSerial.h> 
#include <string.h> 
#include <stdio.h> 

SoftwareSerial mySerial(10, 11); // RX, TX 

gsm gm; 

void setup(){ 

    Serial.begin(9600); 
    mySerial.begin(9600); 
    gm.getText(mySerial,1); 
    Serial.print(gm.message); 
} 

void loop(){ 

} 

Serial.print(gm.message)應該返回什麼已被serial.readBytes(消息,100)複製到消息。 但是,如果(serial.available())沒有得到執行,似乎對串行可用性的測試失敗,因爲中的代碼沒有得到執行。我需要幫助,因爲我一直在與此戰鬥一段時間。

回答

0

嘗試使用此:

if (mySerial.available()>0){ 
    mySerial.read(); 
} 
+0

其不可用時@ stackmalux –

+0

試試這個簡單的例子串行[https://www.arduino.cc/en/Reference/SoftwareSerialExample] – stackmalux

+0

這是測試SoftwareSerial如果以這種方式實施工作,但這不是我想要做的。 –

相關問題