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中处理模拟rewrite 效果
Dec 09 PHP
php print EOF实现方法
May 21 PHP
php绝对路径与相对路径之间关系的的分析
Mar 03 PHP
PHP 写文本日志实现代码
May 18 PHP
php学习之简单计算器实现代码
Jun 09 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
Aug 18 PHP
PHP实现清除wordpress里恶意代码
Oct 21 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
Aug 17 PHP
微信公众号OAuth2.0网页授权问题浅析
Jan 21 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
Jun 07 PHP
PHP设计模式之工厂模式定义与用法详解
Apr 03 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
Apr 13 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 post大量数据时发现数据丢失问题解决方法
2015/06/20 PHP
Laravel统一错误处理为JSON的方法介绍
2020/10/18 PHP
javascript 二分法(数组array)
2010/04/24 Javascript
PHP 与 js的通信(via ajax,json)
2010/11/16 Javascript
jQuery-onload让第一次页面加载时图片是淡入方式显示
2012/05/23 Javascript
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
location对象的属性和方法应用(解析URL)
2013/04/12 Javascript
jquery 触发a链接点击事件解决方案
2013/05/02 Javascript
PHPExcel中的一些常用方法汇总
2015/01/23 Javascript
JS控制HTML元素的显示和隐藏的两种方法
2016/09/27 Javascript
详解jQuery中ajax.load()方法
2017/01/25 Javascript
React降级配置及Ant Design配置详解
2018/12/27 Javascript
[01:12]DOTA2 2015年秋季互动指南
2015/11/10 DOTA
[03:10]超级美酒第四天 fy拉比克秀 大合集
2018/06/05 DOTA
归纳整理Python中的控制流语句的知识点
2015/04/14 Python
对python中数据集划分函数StratifiedShuffleSplit的使用详解
2018/12/11 Python
Django实现微信小程序的登录验证功能并维护登录态
2019/07/04 Python
SpringBoot实现登录注册常见问题解决方案
2020/03/04 Python
Django中使用Celery的方法步骤
2020/12/07 Python
Python用Jira库来操作Jira
2020/12/28 Python
Boston Proper官网:美国女装品牌
2017/10/30 全球购物
艺龙旅行网酒店预订:国内、港澳台酒店
2018/06/26 全球购物
Tommy Hilfiger美国官网:美国高端休闲领导品牌
2019/01/14 全球购物
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
Java面试题:说出如下代码的执行结果
2015/10/30 面试题
德尔福集团DELPHI的笔试题
2012/02/22 面试题
毕业生精彩的自我评价分享
2013/10/06 职场文书
施工材料员岗位职责
2014/02/12 职场文书
2014年护士工作总结范文
2014/11/11 职场文书
工程技术负责人岗位职责
2015/04/13 职场文书
青年志愿者活动感想
2015/08/07 职场文书
《七律·长征》教学反思
2016/02/16 职场文书
AJAX实现省市县三级联动效果
2021/10/16 Javascript
Python中的 Set 与 dict
2022/03/13 Python
bat批处理之字符串操作的实现
2022/03/16 Python
Spring JPA 增加字段执行异常问题及解决
2022/06/10 Java/Android