PHP はシリアル ポート経由でテキスト メッセージを送信します。PHP はシリアル ポート経由でテキスト メッセージを送信します_PHP チュートリアル

WBOY
リリース: 2016-07-13 09:51:43
オリジナル
1037 人が閲覧しました

PHP はシリアル ポート経由でテキスト メッセージを送信し、PHP はシリアル ポート経由でテキスト メッセージを送信します

テクノロジーの進歩により、テキスト メッセージの送受信の分野では、ブロック モード、テキスト モード ベースの 3 つのモードが生み出されました。 AT コマンド、および AT コマンドに基づく PDU MODE。このうち、TEXT MODE は比較的シンプルで、多くの Nokia 携帯電話がこのモードをサポートしています。ほとんどの Siemens 携帯電話は PDU モードのみをサポートします。 PDU モードは、テキスト メッセージを送受信する方法であり、テキスト メッセージのテキストは 16 進数でエンコードされて送信されます。現在、PDU が BLOCK MODE に代わっています。

SMS は Etsi によって開発された仕様 (GSM 03.40 および GSM 03.38) です。 7 ビット エンコードを使用すると最大 160 文字を送信できますが、8 ビット エンコードでは最大 140 文字を送信できますが、16 ビット エンコードを使用すると最大 140 文字を送信できます。最大 70 文字。ほとんどの携帯電話で表示できる Unicode (UCS2) テキスト情報を表示するために使用されます。

今日の説明は、PDU MODE、UCS2 エンコーディングについてです。これは、英語または中国語に関係なく、最大 70 文字を送信できることを意味します。
​ 「こんにちは」というメッセージを送信するとします。送信する前に、SIM カードが配置されている SMS センター番号 (China Mobile の SMS センター番号など) を知っておく必要があります:

受信した携帯電話番号: 13638197275
​ 杭州SMSセンター番号: 13800571500
​ テキストメッセージの内容: こんにちは
​ このテキスト メッセージを送信するには、電話機はエンコード後に実行し、次の文字列になります:
0891683180501705F011000D91683136187972F5000800044F60597D
この一連のコードを最初から最後まで説明してください:
08 – SMS センター番号の長さ、つまり (91)+(683180501705F0) を 2 で割った長さ、つまり 08 = (2+14)/2 を指します
91 – SMS センター番号のタイプを指します。 91 は、TON/NPI が International/E.164 標準に準拠していることを意味します。これは、数値の前に「+」記号を追加する必要があることを意味しますが、91 が最も一般的に使用されます。
683180501705F0 - SMS センター番号。位置に若干の処理が行われているため、実際の数値は 8613800571500 になります (文字 F は偶数の長さを補うために追加された文字です)。
11 - ファイルヘッダーバイト
00 - メッセージタイプ (TP-Message-Reference)
0D - 着信番号の長さ
91 - 着信番号タイプ

実際、実際の処理では、通常、プログラム内で 11000D91 をハードコーディングします。これは、中国ではこれらのデータが変更されないためです。

683136187972F5 ・着信番号は置換処理されており、実際の番号は「8613638197275」となります。

以上(00) )+(0D )+(91 )+(683136187972F5 ) は、テキスト メッセージ全体の宛先アドレス (TP-Destination-Address) の 2 番目の部分を構成します。

続けて…
00 - プロトコル識別子 TP-PID、ここは通常 00 です
08 - データコーディングスキーム TP-DCS (TP-Data-Coding-Scheme) は、前述の USC2 (16bit) データコーディングを使用します
00 - 有効期間 TP-VP (TP-Valid-Period)
04 - 長さ TP-UDL (TP-User-Data-Length)、メッセージ長/2 の 16 進数の 04 です
​ 4F60597D テキスト メッセージの内容は次のとおりです。実際の内容は次のとおりです:「こんにちは」

上記の状況に基づいて、SMS エンコード用のプログラム スクリプトを作成できます。

1. SMS センター番号の処理:
1. SMS センター番号「+8613800571500」から + 記号を削除して、長さが偶数であるかどうかを確認します。そうでない場合は、最後に F
を追加します。 =>「8613800571500F」
2. 奇数桁と偶数桁を入れ替えます。
=>「683108501705F0」
3. SMS センター番号の前に文字 91 を追加します。91 は国際化を意味します
。 =>「91683108501705F0」
4. 長さを計算し、結果を 2 で割って、2 桁の 16 進文字列にフォーマットします、16 / 2 = 8 => “08”
=>「0891683108501705F0」

2. 携帯電話番号の処理:
1. 携帯電話番号 +8613638197275 から + 記号を削除し、長さが偶数かどうかを確認します。そうでない場合は、最後に F
を追加します。 =>「8613638197275F」
2. 携帯電話番号の奇数桁と偶数桁を入れ替えます。
=>「683136187972F5」

3. ショートメッセージの処理:
1. 文字列を Unicode コードに変換します。
「こんにちは」のUnicodeコードは4F60597Dです
2. 長さを 2 で割って、2 桁の 16 進数を保持します。つまり、4F60597D = 8 / 2 =>「04」、
=>「044F60597D」

4. 組み合わせ
1. 携帯電話番号の前に文字列 11000D91 を追加します (1100: 固定、0D: 携帯電話番号の長さ (+ 記号を除く、16 進数で表現)、91: 送信
携帯電話へは91、PHSへは81)、
つまり、11000D91 + 683136187972F5
=>11000D91683136187972F5
2. 携帯電話番号の後に 000800 を追加し、先ほどのテキスト メッセージの内容を 000800 と書きます。 つまり、11000D91683136187972F5 + 000800 + 044F60597D
=> 11000D91683136187972F5000800044F60597D
3. メッセージ全体の長さを 2 で割って、2 桁の 10 進数にフォーマットします
今すぐ 11000D91683136187972F5000800044F60597D => 38 ビット / 2 => 19

5.それで送信する内容は

AT+CMGF=0 #SMS 送信モード PDU を設定します
わかりました
AT+CMGS=19
> #テキストメッセージのコンテンツコードを入力してください

添付された最終的な PHP コード:

リーリー

添付ファイル 1 :各地のモバイルSMSセンター番号 ​ 現地のモバイル オフィスの SMS 番号を入力します。 +8613800xxx500 (「+」記号は必ず入力してください)、 ここで、xxx は市内電話の市外局番です。 --- 電話の市外局番が 3 桁の地域: xxx を電話の市外局番に置き換えるだけです。 例: 深センの電話の市外局番は 755 です。 モバイルショートメッセージセンターの番号は: +8613800755500 --- 電話の市外局番が2桁の地域: xxx を 3 桁に置き換えるには、市外局番の後に「0」を追加してください。 例: 北京の電話市外局番は 10、 モバイルショートメッセージセンターの番号は: +8613800100500 現在、チャイナユニコム165ネットワークは全国で事業を開始している。 SMS サービスを使用する前に、SMS センター サービス番号を設定する必要があります。 北京 +8613010112500 上海 +8613010314500 深セン +8613010888500 山東省 +8613010171500 江蘇 +8613010341500 浙江省 +8613010360500 福建省 +8613010380500 四川省 +8613010811500 重慶 +8613010831500 海南 +8613010501500 黒竜江省 +8613010980500 吉林 +8613010911500 天津 +8613010130500 河北省 +8613010180500 内モンゴル +8613010950500 山西省 +8613010701500 安徽省 +8613010305500 新疆 +8613010969500 青海省 +8613010776500 甘粛省 +8613010879500 寧夏 +8613010796500 貴州省 +8613010788500 雲南省 +8613010868500 湖南省+8613010731500 湖北省 +8613010710500 広東省 +8613010200500 広西チワン族自治区 +8613010591500 河南省 +8613010761500 江西省 +8613010720500 遼寧省 +8613010240500 ​ 添付資料 2 : よく使用される AT コマンド: AT+CSMS ショートメッセージサービス選択 AT+CPMS選択ショートメッセージメモリ AT+CMGF は SMS 形式を選択します AT+CSCA SMS センター アドレス AT+CNMI は新しく受信したテキスト メッセージを表示します AT+CMGR がショートメッセージを読みました AT+CMGS が SMS を送信する AT+CMGL SIMカード内のショートメッセージを一覧表示 AT+CMSS SIM メモリから SMS を送信 AT+CMGW は送信ショート メッセージを SIM メモリに書き込みます AT+CMGD SIM メモリ内のショートメッセージを削除します AT+CSCB はセルラーブロードキャスト情報を選択します ​ 添付資料 3 :ショートメッセージの受信 ショート メッセージの受信は、基本的に SIM またはキャッシュから情報を読み取ることです。主にAT+CMGRとAT+CMGを使用します。 完了するには 2 つの命令が必要です。無線モジュールのメーカーが異なると、AT コマンド セットの解釈コードと応答メッセージが異なるため、 したがって、最初にモデムとの通信が確立できるかどうかを確認する必要があります。通常は、AT コマンドを使用してこの確認を完了し、次に AT+CM を使用します。 GF コマンドはショート メッセージのデータ形式を選択し、モデムから正しい応答を受信した後、AT コマンドを使用して読み取り機能を完了します。 通常、MODEM の RING データを受信する場合は、AT+CMGL を使用して以前の情報を読み取ります。 GRはリアルタイム情報を読み取ります。以下は、H6221-W を使用した SMS 受信の例であり、PDU モードの適用を示しています。 使用。 操作手順は次のとおりです({}内はコメント)。 送信:AT 回答: OK {接続が確立されました} 送信: AT+CMGF=0 {PDU 形式を選択} 回答: OK {PDU 形式の選択を許可します} 送信: AT+CMGL=2 {既存のテキスト メッセージをリストする} 答え: +CMGL: 1、2、、24 {1 はメッセージの数を表し、2 は未送信のメッセージを表し、24 は合計メッセージ容量を表します} 0D71683108370105F004000D81683179133208F10000026080410033802632184C F682D 95E0DC2B36D3D170A0243106933D97A0243106933D97A02451068B1983492608 わかりました 上記の PDU 形式の 16 進文字列のセットには、ショート メッセージの内容だけでなく、送信者も含まれています。 電話番号、SMSセンター番号、SMS送信時刻など 情報内容は以下のように分析されます。 0D: ショートメッセージセンターアドレス(数値)の長さ。 91: SMS センター番号タイプ、91 は TON/NPI です。 TON/NPI は International/E.164 に準拠 標準、 これは、数値の前に「+」記号を追加する必要があることを意味します。また、他の数値も使用できますが、91 が最も一般的に使用されます。 683108370105F0: SMSC ショート メッセージに使用されるサービス センターの番号は 13807310500 です。それは16を通ります 上位ニブルと下位ニブルはバイト単位で転置され、数値は奇数に F を加えたものとなり、16 進バイトを形成します。 04: PDU タイプ、ファイルヘッダーバイト。 0B: 発信番号の長さ。 81: 発信番号のタイプ。 3179133208F1: 0A 発信者番号も処理されており、実際の番号は 13973123801 です。 00: PID。プロトコル識別子です。 00: DCS ショート メッセージのエンコード タイプは GSM デフォルト アルファベットで、7 ビット ASCII コードを 8 ビットにシフトして構成されます。 16 進コード (オクテット)、その方式を表 2 に示します。 1shex B0 A6 A5 A4 A3 A2 A1 A0 2 番目のヘックス C1 C0 B6 B5 B4 B3 B2 B1 3 進数 D2 D1 D0 C6 C5 C4 C3 C2 4 進数 E3 E2 E1 E0 D6 D5 D4 D3 5 進数 F4 F3 F2 F1 F0 E6 E5 E4 6 進数 G5 G4 G3 G2 G1 G0 F6 F5 6 進数 H6 H5 H4 H3 H2 H1 H0 G6 02608041003380: SCTS SMS 送信時刻、02/06/08/14:00:33.08。 26: UDL は、メッセージの ASCII コード長よりも小さい、8 ビット コード (オクテット) の短いメッセージ バイト長を処理しました。 32184CF682D95E30DC2B36D3D170A0243106933D97A0243106933D97A0245106 8B1983492608: UD エンコードされた PDU データ、SMS内容「2002/06/08/13:48ID102OKID103」 OK ID201FAIL」。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1011720.html技術記事 PHP はシリアル ポートを介してテキスト メッセージを送信します。 PHP は、技術の進歩により、時間に応じてテキスト メッセージの送受信の分野に 3 つのモードが登場しました。BLOCK MODE、AT コマンドに基づく TEXT MODE です。 、および AT コマンドベース...
関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!