Heim  >  Artikel  >  Backend-Entwicklung  >  Methoden und Beispielcodes zum Senden von AT-Befehlen in PHP

Methoden und Beispielcodes zum Senden von AT-Befehlen in PHP

墨辰丷
墨辰丷Original
2018-06-02 10:02:071580Durchsuche

In diesem Artikel werden hauptsächlich relevante Informationen zum Beispielcode für das Senden von AT-Befehlen durch PHP vorgestellt. Er ist sehr gut und hat Referenzwert. Freunde, die ihn benötigen, können einen Blick darauf werfen.

Anforderung: SMS senden an Der Benutzer gibt das Mobiltelefon ein und verlangt, dass der Nachrichteninhalt angepasst werden kann

Problem: Es gibt keinen Telekommunikationsmodus und die kostenlose API-Schnittstelle kann nicht angepasst werden Wird zum Anpassen des Textnachrichteninhalts verwendet

Lösung: Stellen Sie eine Verbindung zum Server über eine 4G-Netzwerkkarte her, bedienen Sie die Netzwerkkarte über AT-Befehle und senden Sie Textnachrichten

Nach der Überprüfung haben wir festgestellt, dass das Senden in AT-Qualität mehrere Kodierungen von Informationen erfordert und beim Senden eine Zeitüberschreitung auftritt, das eigentliche Senden jedoch erfolgreich war, das Problem wurde nicht vollständig gelöst

Der Code lautet wie folgt:

<?php
send_message(&#39;&#39;, &#39;您好, 你正在申请注册服务平台, 您的验证码是: &#39;);
function send_message($phone, $message) {
$phone = decode_phone($phone);
$message_center = decode_message_center(&#39;+&#39;); //此步骤似乎没用
$message = decode_message($message);
$length = get_message_length($phone, $message);
set_time_limit();
//根据情况选择COM口, 此处为COM, 在管理设备中, 查看网络解调器的COM口
exec(&#39;mode COM: baud= data= stop= parity=n xon=on&#39;);
$fd = dio_open(&#39;COM:&#39;, O_RDWR);
$ff = dio_stat($fd);
if (!$fd) {
die("failed open com");
}
//chr()是回车, chr()是Ctrl+Z
dio_write($fd, "AT+CMGF=" . chr()); //设置发送模式为PDU
dio_write($fd, "AT+CMGS=" . $length . chr()); //发送信息长度
dio_write($fd, &#39;D&#39; . $phone . &#39;&#39; . $message . chr() . chr()); //发送短信息
sleep();
dio_close($fd);
}
function decode_phone($phone) {
$phone = str_replace(&#39;+&#39;, &#39;&#39;, $phone);
if (strlen($phone) % !== ) {
$phone = $phone . &#39;F&#39;;
}
$newPhone = &#39;&#39;;
for ($i = ; $i < strlen($phone); $i += ) {
$newPhone = $newPhone . substr($phone, $i + , ) . substr($phone, $i, );
}
return $newPhone;
}
function decode_message_center($phone) {
$newPhone = &#39;&#39; . decode_phone($phone);
$len = strtoupper(dechex(strlen($newPhone) / ));
if (strlen($len) % !== ) {
$len = &#39;&#39; . $len;
}
$newPhone = $len . $newPhone;
return $newPhone;
}
function decode_message($message) {
$newMessage = utf_unicode($message);
$len = strtoupper(dechex(strlen($newMessage) / ));
if (strlen($len) % !== ) {
$len = &#39;&#39; . $len;
}
$newMessage = $len . $newMessage;
return $newMessage;
}
function utf_unicode($name) {
$name = iconv(&#39;UTF-&#39;, &#39;UCS-&#39;, $name);
$len = strlen($name);
$str = &#39;&#39;;
for ($i = ; $i < $len - ; $i = $i + ) {
$c = $name[$i];
$c = $name[$i + ];
if (ord($c) > ) { //两个字节的文字 
$str .= base_convert(ord($c), , ) . str_pad(base_convert(ord($c), , ), , , STR_PAD_LEFT);
} else {
$str .= str_pad(base_convert(ord($c), , ), , , STR_PAD_LEFT);
}
}
$str = strtoupper($str); //转换为大写 
return $str;
}
function get_message_length($phone, $message) {
$str = &#39;D&#39; . $phone . &#39;&#39; . $message;
$length = strlen($str) / ;
if ($length < ) {
$length = &#39;&#39; . $length;
}
return $length;
}

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, das wird so sein hilfreich für das Studium aller sein.

Verwandte Empfehlungen:

PHP Learning Record Array Function

Beispielfreigabe der PHP-Implementierung zum Exportieren von Excel mit Stil

PHP implementiert die Methode zum Erzwingen des Rückruftyps basierend auf Callable

Das obige ist der detaillierte Inhalt vonMethoden und Beispielcodes zum Senden von AT-Befehlen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn