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())が実行されない場合、内のコードとして、シリアルアベイラビリティのテストが失敗したようです。私はこれと数時間戦っているので、私は助けが必要です。
のいずれかにです –
stackmalux @その利用できませんそのように実装されたときに動作しますが、それは何をしようとしているのではありません。 – stackmalux
[https://www.arduino.cc/en/Reference/SoftwareSerialExample]シリアルでSoftwareSerialをテストする場合は、この単純な例を試してみてください –