Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使SoftwareSerial变量在arduino中的函数中可用_C++_Arduino_Arduino Uno - Fatal编程技术网

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

C++ 如何使SoftwareSerial变量在arduino中的函数中可用,c++,arduino,arduino-uno,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

我试图在函数中使用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(){

}
gsm.h
#ifndef GSM\U H_
#定义GSM_H_
#包括
结构化gsm{
字符*消息;
电话号码[20];
void getText(软件序列,int索引);
};
#恩迪夫
gsm.cpp
#包括“gsm.h”
#包括
#包括
#包括
void gsm::getText(软件串行,int索引){
char-str[100];
串行打印(“AT+CMGR=1\r”);
延迟(250);
if(serial.available()){
序列号。打印(“序列号可用”);
serial.readBytes(消息,100);
}
}
test.ino
#包括“gsm.h”
#包括
#包括
#包括
软件系列mySerial(10,11);//接收,发送
gsm-gm;
无效设置(){
Serial.begin(9600);
mySerial.begin(9600);
gm.getText(mySerial,1);
串行打印(gm.message);
}
void循环(){
}
Serial.print(gm.message)应该返回通过Serial.readBytes(message,100)复制到message中的内容。 但是串行可用性测试似乎失败了,因为if(serial.available())中的代码没有得到执行。请告诉我需要帮助,因为我已经为此奋斗了一段时间。

尝试使用以下方法:

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

它不可用either@stackmaluxtry这是一个用串口测试SoftwareSerial的简单示例[当以这种方式实现时,它可以工作,但这不是我想要做的。你在循环中尝试过吗?