• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
sim800l wstawienie numeru ze zmiennej
#1
Pytanie może banalne ale jak wstawić zmienną numer_telefonu w poniższy kod wysyłania sms aby nie wpisywać cyferek  ?
Kod:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(7, 6);  

long numer = 123456789;  // numer telefonu

void setup() {
 mySerial.begin(9600);  
 
 delay(500);
 mySerial.println("AT");          
 delay(500);
 mySerial.println("AT+CMGF=1");                      
 delay(500);                                      
 mySerial.println("AT+CMGS=\"+48123456789\"\r");
 delay(500);
 mySerial.println("Tekst sms");
 delay(1000);
 mySerial.println((char)26);
}

void loop() {
 }
 
Odpowiedź
#2
Czemu long?


long numer = 123456789;  // numer telefonu

Zrob const char numer = 123456789;

 mySerial.println("AT+CMGS=\"+ numer+"\r");

Lub jesli ma byc edytowalny to char i przypisujesz wartosc.

Wysłane z mojego SM-G950F przy użyciu Tapatalka
 
Odpowiedź
#3
Nie za bardzo wiadomo o co Ci chodzi, musisz wyraźnie rozróżniać liczby i tekst. Cyferki, hmm, chodzi Ci o znaki typu char czy liczby poniżej 10? Wysłać do modemu i tak trzeba jako text, odbierzesz też jako tekst. Zmienne liczbowe można umieszczać w tekstowych używając funkcji do formatowania tekstu https://pl.wikibooks.org/wiki/C/printf lub Arduinowe String() i sklejać napisy.
 
Odpowiedź
#4
Numer telefonu jest wcześniej edytowany i zapisywany do zmiennej long (9 cyfr). Chodzi o to aby tą zmienną wstawić jako String do kodu ale poprzedzić ją  prefiksem +48 i nie wiem jak to zrobić.

poprawiłem na takie coś ale nie działa...
Kod:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(7, 6);  

String text;
long numer = 123456789;

void setup() {

mySerial.begin(9600);   // Setting the baud rate of GSM Module
 
text = String(numer);

 delay(500);
 mySerial.println("AT");          
 delay(500);
 mySerial.println("AT+CMGF=1");                      
 delay(500);                                      
 mySerial.println("AT+CMGS =\"+48\"String(numer)\r");
 delay(500);
 mySerial.println("TAK");
 delay(1000);
 mySerial.println((char)26);
}

void loop() {
 }
 
Odpowiedź
#5
Użycie + do dobry kierunek, tak się właśnie skleja napisy w Arduino ze String(). Ale jak umieścisz to wewnątrz "" to będzie napis a nie funkcja.
 
Odpowiedź
#6
Ok.Dzięki za pomoc .poprawiłem kod i działa.
Kod:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(7, 6);  

long liczba = 123456789;
String numer;

void setup() {

mySerial.begin(9600);  
 
numer = String(liczba);

delay(500);
 mySerial.println("AT");          
 delay(500);
 mySerial.println("AT+CMGF=1");                      
 delay(500);                                      
 
 mySerial.println("AT+CMGS=\"+48" + numer + "\"\r"); // o tą linijkę mi chodziło
   
 delay(500);
 mySerial.println("TAK");
 delay(1000);
 mySerial.println((char)26);// ASCII code of CTRL+Z
}

void loop() {
 }  
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości