Maison  >  Article  >  développement back-end  >  Méthodes et exemples de codes pour envoyer des commandes AT en PHP

Méthodes et exemples de codes pour envoyer des commandes AT en PHP

墨辰丷
墨辰丷original
2018-06-02 10:02:071578parcourir

Cet article présente principalement les informations pertinentes sur l'exemple de code PHP envoyant une commande AT. Il est très bon et a une valeur de référence. Les amis qui en ont besoin peuvent y jeter un œil ensemble

Exigence : Envoyer un SMS à L'utilisateur entre le téléphone mobile et exige que le contenu du message puisse être personnalisé

Problème : Il n'y a pas de mode télécom et l'interface API gratuite ne peut pas être utilisé pour personnaliser le contenu du message texte

Solution : Connectez-vous au serveur via une carte réseau 4G, faites fonctionner la carte réseau via les commandes AT et envoyez des messages texte

Après vérification, nous avons constaté que l'envoi de qualité AT nécessite plusieurs encodages d'informations et des délais d'envoi, mais l'envoi réel a réussi, le problème n'a pas été complètement résolu

. Le code est le suivant :

<?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;
}

Résumé : Ce qui précède représente l'intégralité du contenu de cet article, j'espère cela sera utile à l’étude de chacun.

Recommandations associées :

Fonction PHP Learning Record Array

Exemple de partage d'implémentation PHP d'exportation d'Excel avec style

PHP implémente la méthode de forçage du type de rappel basé sur Callable

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn