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 相关文章推荐
Win9x/ME下Apache+PHP安装配置
Oct 09 PHP
使用数据库保存session的方法
Oct 09 PHP
生成静态页面的PHP类
Nov 25 PHP
php+javascript的日历控件
Nov 19 PHP
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
Nov 21 PHP
使用php实现快钱支付功能(涉及到接口)
Jul 01 PHP
php中函数前加&amp;符号的作用分解
Jul 08 PHP
php json中文编码为null的解决办法
Dec 14 PHP
PHP实现的DES加密解密封装类完整实例
Apr 29 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
Apr 04 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
Dec 16 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
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
php抓取https的内容的代码
2010/04/06 PHP
详解js异步文件加载器
2016/01/24 PHP
PHP基于DOMDocument解析和生成xml的方法分析
2017/07/17 PHP
由浅到深了解JavaScript类
2006/09/08 Javascript
JavaScript 保存数组到Cookie的代码
2010/04/14 Javascript
仅IE不支持setTimeout/setInterval函数的第三个以上参数
2011/05/25 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字
2013/01/23 Javascript
Jquery 实现表格颜色交替变化鼠标移过颜色变化实例
2013/08/28 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
2014/03/13 Javascript
js实现获取div坐标的方法
2015/11/16 Javascript
JS折半插入排序算法实例
2015/12/02 Javascript
详解Js模板引擎(TrimPath)
2016/11/22 Javascript
微信小程序实现滑动删除效果
2017/05/19 Javascript
javascript实现数字配对游戏的实例讲解
2017/12/14 Javascript
深入理解js 中async 函数的含义和用法
2018/05/13 Javascript
微信小程序实现弹出菜单功能
2018/06/12 Javascript
微信小程序canvas.drawImage完全显示图片问题的解决
2018/11/30 Javascript
vuex实现及简略解析(小结)
2019/03/01 Javascript
深入解读Node.js中的koa源码
2019/06/17 Javascript
在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法
2019/09/10 Javascript
解决vue项目刷新后,导航菜单高亮显示的位置不对问题
2019/11/01 Javascript
python中的对象拷贝示例 python引用传递
2014/01/23 Python
Python程序设计入门(4)模块和包
2014/06/16 Python
Python查找函数f(x)=0根的解决方法
2015/05/07 Python
Python装饰器用法实例总结
2018/02/07 Python
python读取TXT每行,并存到LIST中的方法
2018/10/26 Python
Python:Numpy 求平均向量的实例
2019/06/29 Python
python中property和setter装饰器用法
2019/12/19 Python
快速解释如何使用pandas的inplace参数的使用
2020/07/23 Python
CSS3实现3D翻书效果
2016/06/20 HTML / CSS
处理HTML5新标签的浏览器兼容版问题
2017/03/13 HTML / CSS
Exception类的常用方法
2012/06/16 面试题
精彩的广告词
2014/03/19 职场文书
代理协议书
2014/04/22 职场文书
如何使用分区处理MySQL的亿级数据优化
2021/06/18 MySQL