温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

PHP如何发送AT指令

发布时间:2021-09-01 09:59:15 阅读:164 作者:小新 栏目:开发技术
PHP开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇文章将为大家详细讲解有关PHP如何发送AT指令,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

需求: 发送短信到用户输入手机, 要求可以自定义信息内容

问题: 没有电信猫, 使用免费api接口无法自定义短信内容

解决方案: 通过4G网卡, 接在服务器上, 通过AT指令操作网卡, 发送短信

查阅发现, AT质量发送需要对信息进行多重编码, 而且发送超时, 但实际发送成功, 问题还未完全解决

代码如下:

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

关于“PHP如何发送AT指令”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×