Bitte, ich bin gespannt, wie wirken sich die Baudraten von Software Serial und Serial auf die anschließende Ausführung meines Arduino-Codes? Ich habe ein merkwürdiges Verhalten in meinem Code bemerkt. Es druckt weiter Test1, es geht nie weiter. Wenn ich die Baud-Raten auf die gleiche (9600) gemacht habe, bekomme ich kontinuierlich àààààà kontinuierlich. Also brauche ich eine Erklärung, was wirklich passiert.Konstante Iteration in Arduino Code
test.ino
#include "gsm.h"
#include <SoftwareSerial.h>
#include <string.h>
#include <stdio.h>
SoftwareSerial mySerial(10, 11); // RX, TX
gsm gm;
char temp[10];
void setup() {
Serial.begin(57600);
mySerial.begin(9600);
gm.getMsg(mySerial, 1);
Serial.print("Test1");
if(mySerial.available()){
mySerial.readBytes(temp, 10);
Serial.print("Test2");
}
Serial.print("Test3");
gm.getText(temp);
}
void loop() {
}
gsm.cpp
#include "gsm.h"
#include <string.h>
#include <arduino.h>
#include <SoftwareSerial.h>
void gsm::getText(char str[]) {
char *temp1 = strrchr(str, '\"')+3;
int l1 = strlen(temp1);
char *temp2 = strchr(temp1,'\n');
int l2 = strlen(temp2);
int len = l1-l2;
char msg[10];
strncpy(msg, temp1, len);
msg[len] = '\0';
strncpy(message, msg,len);
}
void gsm::getMsg(SoftwareSerial serial, int index) {
serial.print("AT+CMGR = ");
serial.print(index);
serial.print("\r\n");
delay(300);
}
gsm.h
#ifndef GSM_H_
#define GSM_H_
#include <SoftwareSerial.h>
struct gsm{
char message[20];
void getText(char str[]);
void getMsg(SoftwareSerial serial, int index);
};
#endif
Sie lesen ein einziges Byte in einen char-Array der Länge 1 ein erwarten, dass es eine Zeichenfolge sein? –
ist es ein Tippfehler @ gre_gor –