Vraag:
SerialGSM voor GSM-shield zonder SoftwareSerial
user1584421
2014-06-23 14:40:03 UTC
view on stackexchange narkive permalink

SerialGSM is een bibliotheek voor het vereenvoudigen van GSM-schilden.

Dit is voorbeeldcode voor het verzenden van sms:

  #include <SerialGSM.h> # include <SoftwareSerial.h>Serial , 3); void setup () {Serial.begin (9600); cell.begin (9600); cell.Verbose (true); cell.Boot (); cell.FwdSMS2Serial (); cell.Rcpt ("+ 972123456789"); cell.Message ("hallo wereld"); cell.SendSMS ();} void loop () {if (cell.ReceiveSMS ()) {Serial.println (cell.Message ()); cell.DeleteAllSMS (); }}  

Zoals je kunt zien, gebruikt hij seriële software.

Ik ben van plan dit te gebruiken voor mijn schoolscriptie, maar ik gebruik een schild, dus ik heb gewonnen gebruik geen Software Serial.

Wat me stoort is deze regel

  SerialGSM-cel (2,3);  

In in mijn geval, verklaar ik het zo ?:

  SerialGSM cell (0,1); 

Of zijn er conflicten met serieel?

BEWERK: Met andere woorden, hoe declareer ik het SeralGSM-object met seriële hardware en niet seriële software?

Twee antwoorden:
Peter Bloomfield
2014-06-23 20:41:07 UTC
view on stackexchange narkive permalink

SerialGSM is ontworpen om te werken met software serieel, zoals je kunt zien aan de klassendeclaratie in de SerialGSM.h header:

  class SerialGSM: public SoftwareSerial {...};  

Helaas is het wijzigen ervan om hardware-serieel te gebruiken ingewikkelder dan het lijkt. Er zijn twee mogelijke manieren waarop u dit kunt doen:

  1. Afgeleid van HardwareSerial in plaats van SoftwareSerial . Dit zou je flexibiliteit geven, maar je zou ervoor moeten zorgen dat alle juiste gegevens naar de HardwareSerial -constructor worden gestuurd, wat nogal rommelig is.

  2. Nergens vandaan komen. Gebruik het globale Serial -object en vervang handmatig alle seriële functieaanroepen door hun Serial.xxx () -equivalenten. Dit is waarschijnlijk gemakkelijker, maar het beperkt je tot een specifieke seriële poort.

Beide benaderingen vereisen nogal wat codering, dus het zijn geen triviale taken. Het is ook belangrijk op te merken dat SerialGSM momenteel het globale Serial -object gebruikt om foutopsporingsinformatie uit te voeren. U zou dat moeten verwijderen of wijzigen voordat u het naar hardware-serie converteert, anders kan het interfereren.

Hartelijk bedankt! Oké, als dat het geval is, kan ik het gebruiken in Software Serial-modus. Nu heb ik een gps-eenheid die ik ook wil gebruiken. Dat betekent, sluit het schild aan en gebruik de SerailGSM-bibliotheek, en sluit ook de gps aan op poort 0 (en 1 als ik wil dat de gps gegevens ontvangt), en gebruik Serial.begin (4800); om de seriële ontvangst te starten?
Dat zou moeten werken, maar onthoud dat `SerialGSM` foutopsporingsinformatie naar hardware serieel uitvoert. Dat betekent dat als u de hardware TX op uw GPS aansluit, het waarschijnlijk mis zal gaan.
OK, een andere benadering zou dan zijn om een ​​arduinos klaar voorbeeld te gebruiken voor het verzenden van sms. het punt is dat ik dit schild https://www.sparkfun.com/products/9607 heb, met de SM5100B-chipset. Weet je of het Arduinos-voorbeeld van sms-verzending werkt met dit schild?
Ik heb dat schild nog nooit gebruikt, dus ik ben bang dat ik het niet weet. Het lijkt erop dat SparkFun er echter hun eigen voorbeeldcode voor heeft: https://github.com/sparkfun/SM5100B_Cellular_Shield/blob/master/Firmware/Cellular_Shield_Passthrough_b/Cellular_Shield_Passthrough/Cellular_Shield_Passthrough.pde
user1584421
2014-06-24 20:41:16 UTC
view on stackexchange narkive permalink

Maakt niet uit, ik ging met het GSM SMS-voorbeeld van arduino 1.0.5 (weet niet welke versie van arduino IDE dit bevatte) en werkt prima.

Als je overweegt om de SerialGSM te gebruiken bibliotheek is dat niet nodig!

LET OP: In de Arduino-bibliotheek, wanneer u het telefoonnummer opgeeft, moet u het internationale formaat gebruiken

(Bedankt Bloomfield voor de informatie die u heeft verstrekt in het vorige antwoord)



Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 3.0-licentie waaronder het wordt gedistribueerd.
Loading...