Maison >développement back-end >tutoriel php >Méthodes et exemples de codes pour envoyer des commandes AT en PHP
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('', '您好, 你正在申请注册服务平台, 您的验证码是: '); function send_message($phone, $message) { $phone = decode_phone($phone); $message_center = decode_message_center('+'); //此步骤似乎没用 $message = decode_message($message); $length = get_message_length($phone, $message); set_time_limit(); //根据情况选择COM口, 此处为COM, 在管理设备中, 查看网络解调器的COM口 exec('mode COM: baud= data= stop= parity=n xon=on'); $fd = dio_open('COM:', 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, 'D' . $phone . '' . $message . chr() . chr()); //发送短信息 sleep(); dio_close($fd); } function decode_phone($phone) { $phone = str_replace('+', '', $phone); if (strlen($phone) % !== ) { $phone = $phone . 'F'; } $newPhone = ''; for ($i = ; $i < strlen($phone); $i += ) { $newPhone = $newPhone . substr($phone, $i + , ) . substr($phone, $i, ); } return $newPhone; } function decode_message_center($phone) { $newPhone = '' . decode_phone($phone); $len = strtoupper(dechex(strlen($newPhone) / )); if (strlen($len) % !== ) { $len = '' . $len; } $newPhone = $len . $newPhone; return $newPhone; } function decode_message($message) { $newMessage = utf_unicode($message); $len = strtoupper(dechex(strlen($newMessage) / )); if (strlen($len) % !== ) { $len = '' . $len; } $newMessage = $len . $newMessage; return $newMessage; } function utf_unicode($name) { $name = iconv('UTF-', 'UCS-', $name); $len = strlen($name); $str = ''; 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 = 'D' . $phone . '' . $message; $length = strlen($str) / ; if ($length < ) { $length = '' . $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!