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 相关文章推荐
基于mysql的论坛(2)
Oct 09 PHP
php中文字符截取防乱码
Mar 28 PHP
PHP中MVC模式的模板引擎开发经验分享
Mar 23 PHP
php使用cookie显示用户上次访问网站日期的方法
Jan 26 PHP
php实现Mongodb自定义方式生成自增ID的方法
Mar 23 PHP
php实现网站文件批量压缩下载功能
Oct 28 PHP
基于PHP后台的Android新闻浏览客户端
May 23 PHP
PHP大神的十大优良习惯
Sep 14 PHP
PHP 极验验证码实例讲解
Sep 29 PHP
常用PHP封装分页工具类
Jan 14 PHP
safari下载文件自动加了html后缀问题
Nov 09 PHP
PHP join()函数用法与实例讲解
Mar 11 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下使用strpos需要注意 === 运算符
2010/07/17 PHP
php setcookie(name, value, expires, path, domain, secure) 参数详解
2013/06/28 PHP
PHP session文件独占锁引起阻塞问题解决方法
2015/05/12 PHP
JavaScript 节点操作 以及DOMDocument属性和方法
2007/12/06 Javascript
2007/12/23更新创意无限,简单实用(javascript log)
2007/12/24 Javascript
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
javascript textContent与innerText的异同分析
2010/10/22 Javascript
获取鼠标在div中的相对位置的实现代码
2013/12/30 Javascript
js实现延迟加载的方法
2015/06/24 Javascript
深入理解React中es6创建组件this的方法
2016/08/29 Javascript
Javascript自定义事件详解
2017/01/13 Javascript
JS轮播图中缓动函数的封装
2020/11/25 Javascript
jQuery制作input提示内容(兼容IE8以上)
2017/07/05 jQuery
写一个移动端惯性滑动&amp;回弹Vue导航栏组件 ly-tab
2018/03/06 Javascript
vue 左滑删除功能的示例代码
2019/01/28 Javascript
微信小程序如何自定义table组件
2019/06/29 Javascript
微信小程序实现页面分享onShareAppMessage
2019/08/12 Javascript
解决vue.js中settimeout遇到的问题(时间参数短效果不稳定)
2020/07/21 Javascript
Python 字符串定义
2009/09/25 Python
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
python实现超简单端口转发的方法
2015/03/13 Python
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
python中is与双等于号“==”的区别示例详解
2017/11/21 Python
python中WSGI是什么,Python应用WSGI详解
2017/11/24 Python
python中pytest收集用例规则与运行指定用例详解
2019/06/27 Python
Python Pandas 如何shuffle(打乱)数据
2019/07/30 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
python实现的分层随机抽样案例
2020/02/25 Python
Space NK英国站:英国热门美妆网站
2017/12/11 全球购物
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
商场总经理岗位职责
2014/02/03 职场文书
社区道德讲堂实施方案
2014/03/21 职场文书
2014年行风建设工作总结
2014/12/01 职场文书
实习科室评语
2015/01/04 职场文书
初中班主任心得体会
2016/01/07 职场文书
MySQL时间设置注意事项的深入总结
2021/05/06 MySQL