PHP发送AT指令实例代码


Posted in PHP onMay 26, 2016

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

问题: 没有电信猫, 使用免费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指令实例代码 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
文件上传类
Oct 09 PHP
php获取post中的json数据的实现方法
Jun 08 PHP
php异常处理技术,顶级异常处理器
Jun 13 PHP
php后退一页表单内容保存实现方法
Jun 17 PHP
phpcms模块开发之swfupload的使用介绍
Apr 28 PHP
thinkphp 多表 事务详解
Jun 17 PHP
解析数组非数字键名引号的必要性
Aug 09 PHP
PHP使用NuSOAP调用Web服务的方法
Jul 18 PHP
PHP调用Mailgun发送邮件的方法
May 04 PHP
php设计模式之策略模式应用案例详解
Jun 17 PHP
Yii框架页面渲染操作实例详解
Jul 19 PHP
PHP大文件分块上传功能实例详解
Jul 22 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
May 26 #PHP
php连接oracle数据库的核心步骤
May 26 #PHP
php连接oracle数据库的方法(测试成功)
May 26 #PHP
PHP封装的MSSql操作类完整实例
May 26 #PHP
PHP简单操作MongoDB的方法(安装及增删改查)
May 26 #PHP
基于PHP实现数据分页显示功能
May 26 #PHP
yii2实现根据时间搜索的方法
May 25 #PHP
You might like
防止用户利用PHP代码DOS造成用光网络带宽
2011/03/01 PHP
php使用filter过滤器验证邮箱 ipv6地址 url验证
2013/12/25 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
2014/09/04 PHP
非常实用的PHP常用函数汇总
2014/12/17 PHP
javaScript 利用闭包模拟对象的私有属性
2011/12/29 Javascript
关于JS字符串函数String.replace()
2013/04/07 Javascript
jQuery把表单元素变为json对象
2013/11/06 Javascript
莱鸟介绍window.print()方法
2016/01/06 Javascript
基于javascript实现句子翻牌网页版小游戏
2016/03/23 Javascript
详谈javascript精度问题与调整
2017/07/08 Javascript
Bootstrap与Angularjs的模态框实例代码
2017/08/03 Javascript
基于jQuery对象和DOM对象和字符串之间的转化实例
2017/08/08 jQuery
vue.js实现格式化时间并每秒更新显示功能示例
2018/07/07 Javascript
vuejs 动态添加input框的实例讲解
2018/08/24 Javascript
js实现网页版贪吃蛇游戏
2020/02/22 Javascript
vue props default Array或是Object的正确写法说明
2020/07/30 Javascript
Vue实现Header渐隐渐现效果的实例代码
2020/11/05 Javascript
[05:53]完美世界携手游戏风云打造 卡尔工作室观战系统篇
2013/04/22 DOTA
[58:09]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第三场 6.2
2018/06/03 DOTA
Python中常用信号signal类型实例
2018/01/25 Python
用python实现百度翻译的示例代码
2018/03/09 Python
win8下python3.4安装和环境配置图文教程
2018/07/31 Python
Python实现直播推流效果
2019/11/26 Python
html5 datalist 选中option选项后的触发事件
2020/03/05 HTML / CSS
加拿大女装网上购物:Reitmans
2016/10/20 全球购物
联想新加坡官方网站:Lenovo Singapore
2017/10/24 全球购物
BabyBjörn婴儿背带法国官网:BabyBjorn法国
2018/06/16 全球购物
Perfume’s Club德国官网:在线购买香水
2019/04/08 全球购物
沃尔玛旗下墨西哥超市:Bodega Aurrera
2020/11/13 全球购物
违纪检讨书2000字
2014/02/08 职场文书
辅导员评语
2014/05/04 职场文书
三严三实对照检查材料范文
2014/09/23 职场文书
党的群众路线对照检查材料思想汇报(学校)
2014/10/04 职场文书
第28个世界无烟日活动总结
2015/02/10 职场文书
Java内存模型之happens-before概念详解
2021/06/13 Java/Android
Python echarts实现数据可视化实例详解
2022/03/03 Python