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+MSSQL分页的例子
Oct 09 PHP
PHP源代码数组统计count分析
Aug 02 PHP
PHP 简易输出CSV表格文件的方法详解
Jun 20 PHP
使用Sphinx对索引进行搜索
Jun 25 PHP
浅析PHP程序设计中的MVC编程思想
Jul 28 PHP
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
Oct 27 PHP
PHP中key和current,next的联合运用实例分析
Mar 29 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
Apr 28 PHP
实现PHP搜索加分页
Oct 12 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
Sep 17 PHP
PHP goto语句用法实例
Aug 06 PHP
laravel 框架实现无限级分类的方法示例
Oct 31 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
一个高ai的分页函数和一个url函数
2006/10/09 PHP
PHP 生成的XML以FLASH获取为乱码终极解决
2009/08/07 PHP
php多层数组与对象的转换实例代码
2013/08/05 PHP
PHP中soap的用法实例
2014/10/24 PHP
PHP使用CURL模拟登录的方法
2015/07/08 PHP
php魔术方法功能与用法实例分析
2016/10/19 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
PHP实现递归的三种方法
2020/07/04 PHP
Javascript中Eval函数的使用
2010/03/23 Javascript
P3P Header解决Cookie跨域的问题
2013/03/12 Javascript
JavaScript实现生成GUID(全局统一标识符)
2014/09/05 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
2015/06/24 Javascript
javascript定义类和类的实现实例详解
2015/12/01 Javascript
一道关于JavaScript变量作用域的面试题
2016/03/08 Javascript
用JS中split方法实现彩色文字背景效果实例
2016/08/24 Javascript
详解JQuery基础动画操作
2019/04/12 jQuery
axios封装,使用拦截器统一处理接口,超详细的教程(推荐)
2019/05/02 Javascript
使用Vue调取接口,并渲染数据的示例代码
2019/10/28 Javascript
Vue项目打包压缩的实现(让页面更快响应)
2020/03/10 Javascript
微信小程序图片右边加两行文字的代码
2020/04/23 Javascript
vue中实现图片压缩 file文件的方法
2020/05/28 Javascript
vue项目打包后请求地址错误/打包后跨域操作
2020/11/04 Javascript
python opencv之SURF算法示例
2018/02/24 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
2020/11/17 Python
Pandas直接读取sql脚本的方法
2021/01/21 Python
HTML5资源预加载(Link prefetch)详细介绍(给你的网页加速)
2014/05/07 HTML / CSS
TripAdvisor印尼站:全球领先的旅游网站
2018/03/15 全球购物
个人查摆剖析材料
2014/02/04 职场文书
2014年实验室工作总结
2014/12/03 职场文书
关于感恩的素材句子(38句)
2019/11/11 职场文书
关于Python OS模块常用文件/目录函数详解
2021/07/01 Python
SpringBoot详解整合Redis缓存方法
2022/07/15 Java/Android