如何在arduino中的函数中使用SoftwareSerial变量

时间:2017-04-19 16:49:31

标签: c++ arduino arduino-uno

我试图在函数中使用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(message,100)返回已复制到消息中的内容。 但似乎对串行可用性的测试失败了,因为 if(serial.available())中的代码没有被执行。我需要帮助,因为我一直在与此斗争一段时间。

1 个答案:

答案 0 :(得分:0)

尝试使用它:

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