2017-04-19 32 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

のいずれかにです –

+0

stackmalux @その利用できませんそのように実装されたときに動作しますが、それは何をしようとしているのではありません。 – stackmalux

+0

[https://www.arduino.cc/en/Reference/SoftwareSerialExample]シリアルでSoftwareSerialをテストする場合は、この単純な例を試してみてください –

関連する問題