Dieser Artikel stellt hauptsächlich die Idee und die spezifische Implementierung des Sendens von Textnachrichten über die serielle Schnittstelle in PHP vor. Ich hoffe, dass er für alle hilfreich ist.
Mit der Weiterentwicklung der Technologie haben sich im Bereich des zeitnahen Sendens und Empfangens von SMS drei Modi herausgebildet: BLOCKMODUS, TEXTMODUS basierend auf AT-Befehlen und PDU-MODUS basierend auf AT-Befehlen. Unter anderem ist der TEXTMODUS relativ einfach und viele Nokia-Mobiltelefone unterstützen diesen Modus. Die meisten Siemens-Handys unterstützen nur den PDU-MODUS. Der PDU-Modus ist eine Methode zum Senden und Empfangen von Textnachrichten. Der Text der Textnachricht wird hexadezimal kodiert übertragen. Derzeit hat PDU den BLOCKMODUS ersetzt.
SMS ist eine von Etsi entwickelte Spezifikation (GSM 03.40 und GSM 03.38). Bei Verwendung der 7-Bit-Kodierung können bis zu 160 Zeichen gesendet werden. Bei der 8-Bit-Kodierung können jedoch bis zu 140 Zeichen gesendet werden, die normalerweise nicht direkt über das Mobiltelefon angezeigt werden können Bis zu 70 Zeichen. Wird zur Anzeige von Unicode-Textinformationen (UCS2) verwendet, die von den meisten Mobiltelefonen angezeigt werden können.
Was wir heute besprechen, ist der PDU-MODUS, UCS2-Kodierung, was bedeutet, dass Sie nur bis zu 70 Zeichen senden können, unabhängig von Englisch oder Chinesisch.
Angenommen, Sie möchten die folgende Nachricht senden: „Hallo“. Vor dem Senden müssen Sie die SMS-Center-Nummer kennen, in der sich die SIM-Karte des Mobiltelefons befindet. Zum Beispiel die SMS-Center-Nummer von China Mobile:
Empfangene Mobiltelefonnummer: 13638197275
Hangzhou SMS-Center-Nummer: 13800571500
SMS-Inhalt: Hallo
Um diese Textnachricht zu senden, führt das Telefon sie nach der Kodierung aus. Nach der Kodierung wird daraus die folgende Zeichenfolge:
0891683180501705F011000D91683136187972F5000800044F60597D
Wenn Sie es nicht verstehen, Bitte erläutern Sie diese Codierungszeichenfolge von Anfang bis Ende:
08 – bezieht sich auf die Länge der SMS-Center-Nummer, also die Länge von (91)+(683180501705F0) geteilt durch 2, also 08 = ( 2+14)/2
91 – bezieht sich auf den kurzen Nummerntyp des Nachrichtencenters. 91 bedeutet, dass TON/NPI dem International/E.164-Standard entspricht, was bedeutet, dass vor der Zahl ein „+“-Zeichen hinzugefügt werden muss. Es gibt jedoch andere Werte, aber 91 wird am häufigsten verwendet.
683180501705F0 - Nummer des SMS-Zentrums. Aufgrund einer geringfügigen Verarbeitung in der Position sollte die tatsächliche Zahl lauten: 8613800571500 (der Buchstabe F ist ein hinzugefügtes Zeichen, um die gerade Länge zu erreichen).
11 - Dateikopfbytes
00 - Nachrichtentyp (TP-Message-Reference)
0D - Länge der angerufenen Nummer
91 - Typ der angerufenen Nummer
ist tatsächlich tatsächlich Während der Verarbeitung Normalerweise codieren wir 11000D91 fest im Programm, da sich diese Daten in China nicht ändern.
683136187972F5 – Die angerufene Nummer wurde verschoben und die tatsächliche Nummer ist „8613638197275“.
Die oben genannten (00) + (0D) + (91) + (683136187972F5) bilden den zweiten Teil der Zieladresse (TP-Destination-Address) der gesamten Textnachricht.
Weiter...
00 – Protokollidentifikation TP-PID, hier ist im Allgemeinen 00
08 – Datenkodierungsschema TP-DCS (TP-Data-Coding-Scheme), unter Verwendung des zuvor erwähnten USC2 (16bit) Datenkodierung
00 – Gültigkeitszeitraum TP-VP (TP-Valid-Period)
04 – Länge TP-UDL (TP-User-Data-Length), die das Sechzehnfache der Informationslänge beträgt/ 2 Geben Sie 04
4F60597D ein. Hier ist der Inhalt der Textnachricht: „Hallo“
Basierend auf der obigen Situation können Sie das Programmskript für die Textnachrichtencodierung schreiben.
1. SMS-Center-Nummernverarbeitung:
1. Entfernen Sie das +-Zeichen von der SMS-Center-Nummer „+8613800571500“, um zu sehen, ob die Länge eine gerade Zahl ist. Wenn nicht, fügen Sie schließlich F
=> „8613800571500F“
2 hinzu.
=> „683108501705F0“
3. Fügen Sie das Zeichen 91 vor der SMS-Center-Nummer hinzu.
=> „91683108501705F0“
4 2. Formatieren Sie es in eine zweistellige Hexadezimalzeichenfolge, 16 / 2 => „08“
=> „0891683108501705F0“
2. Verarbeitung der Mobiltelefonnummer:
1. Entfernen Sie das +-Zeichen von der Mobiltelefonnummer +8613638197275 und prüfen Sie, ob die Länge eine gerade Zahl ist. Wenn nicht, fügen Sie am Ende F
=> „8613638197275F“ hinzu 2. Ändern Sie die Mobiltelefonnummer mit ungeraden Ziffern. Tauschen Sie sie mit geraden Ziffern aus.
=> „683136187972F5“
3. Kurze Nachrichtenverarbeitung:
1. „Hallo“ Der Unicode-Code ist 4F60597D2. Teilen Sie die Länge durch 2 und behalten Sie zwei hexadezimale Ziffern bei, d . Kombination
1. Fügen Sie die Zeichenfolge 11000D91 vor der Mobiltelefonnummer hinzu (1100: fest, 0D: die Länge der Mobiltelefonnummer, ohne das +-Zeichen, ausgedrückt in Hexadezimalzahl, 91: senden Sie
an das Mobiltelefon als 91, an den kleinen Lingtong senden ist 81),
d. h. 11000D91 + 683136187972F5
=> 11000D91683136187972F5
2. Fügen Sie 000800 und den Inhalt der Textnachricht nach der Handynummer hinzu, notieren Sie einfach 000800
d. h. 11000D 91683136187972F5 + 000800 + 044F60597D
=> 11000D91683136187972F5000800044F60597D
3. Teilen Sie die gesamte Nachrichtenlänge durch 2 und formatieren Sie sie in eine 2- Ziffer Dezimalzahl
, das ist 11000D91683136187972 F5000800044F60597D => bit/2 => 19
5. Der zu sendende Inhalt ist also
AT+CMGF=0
OK
AT+CMGS=19
> 🎜>Zusammenfassung:
Verwandte Empfehlungen:
Die Idee, den E-Mail-Versand in PHP zu implementieren
PHP Ajax kein Aktualisierungsnachrichtensystem
PHP-Datei-Upload-KlasseninstanzDas obige ist der detaillierte Inhalt vonPHP implementiert die Idee und konkrete Implementierung des Sendens von Textnachrichten über die serielle Schnittstelle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!