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 相关文章推荐
处理php自动反斜杠的函数代码
Jan 05 PHP
smarty基础之拼接字符串的详解
Jun 18 PHP
PHP 解决session死锁的方法
Jun 20 PHP
PHP整数取余返回负数的相关解决方法
May 15 PHP
php创建、获取cookie及基础要点分析
Jan 26 PHP
php中smarty变量修饰用法实例分析
Jun 11 PHP
php获取、检查类名、函数名、方法名的函数方法
Jun 25 PHP
php实现简单的上传进度条
Nov 17 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
Mar 05 PHP
PHP设计模式之工厂方法设计模式实例分析
Apr 25 PHP
laravel实现上传图片并在页面显示的例子
Oct 14 PHP
Thinkphp 框架扩展之应用模式实现方法分析
Apr 27 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遍历文件夹和文件列表示例分享
2014/03/11 PHP
Cygwin中安装PHP方法步骤
2015/07/04 PHP
jQuery chili图片远处放大插件
2009/11/30 Javascript
jQuery ajax BUG:object doesn't support this property or method
2010/07/06 Javascript
通过javascript把图片转化为字符画
2013/10/24 Javascript
jQuery中 delegate使用的问题
2015/07/03 Javascript
JS实时弹出新消息提示框并有提示音响起的实现代码
2016/04/20 Javascript
RequireJS使用注意细节
2016/05/15 Javascript
JavaScript版经典游戏之扫雷游戏完整示例【附demo源码下载】
2016/12/12 Javascript
ES6中箭头函数的定义与调用方式详解
2017/06/02 Javascript
微信小程序实现表单校验功能
2020/03/30 Javascript
vue登录注册及token验证实现代码
2017/12/14 Javascript
JS计算输出100元钱买100只鸡问题的解决方法
2018/01/04 Javascript
教你如何用node连接redis的示例代码
2018/07/12 Javascript
vue2.0 中使用transition实现动画效果使用心得
2018/08/13 Javascript
Vue路由history模式解决404问题的几种方法
2018/09/29 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
基于JavaScript实现十五拼图代码实例
2020/04/26 Javascript
JavaScript实现简单动态表格
2020/12/02 Javascript
详解Python 2.6 升级至 Python 2.7 的实践心得
2017/04/27 Python
初探TensorFLow从文件读取图片的四种方式
2018/02/06 Python
python将音频进行变速的操作方法
2020/04/08 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
Django多个app urls配置代码实例
2020/11/26 Python
Python实例教程之检索输出月份日历表
2020/12/16 Python
CSS3圆角和渐变2种常用功能详解
2016/01/06 HTML / CSS
Html5移动端弹幕动画实现示例代码
2018/08/27 HTML / CSS
瑞士图书网站:Weltbild.ch
2019/09/17 全球购物
怎样声明子类
2013/07/02 面试题
班会关于环保演讲稿
2013/12/29 职场文书
啤酒节策划方案
2014/05/28 职场文书
教师节学生演讲稿
2014/09/03 职场文书
基层党员群众路线整改措施及努力方向
2014/10/28 职场文书
小学二年级班主任工作经验交流材料
2015/11/02 职场文书
2016年第十四个公民道德宣传日活动总
2016/04/01 职场文书
导游词之湖北武当山
2019/09/23 职场文书