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 相关文章推荐
利用static实现表格的颜色隔行显示的代码
Sep 02 PHP
phpmail类发送邮件函数代码
Feb 20 PHP
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
Jun 18 PHP
解析如何在PHP下载文件名中解决乱码的问题
Jun 20 PHP
typecho插件编写教程(六):调用接口
May 28 PHP
PHP 获取ip地址代码汇总
Jul 05 PHP
thinkPHP实现MemCache分布式缓存功能
Mar 23 PHP
PHP中key和current,next的联合运用实例分析
Mar 29 PHP
jquery+thinkphp实现跨域抓取数据的方法
Oct 15 PHP
使用PHP连接多种数据库的实现代码(mysql,access,sqlserver,Oracle)
Dec 21 PHP
tp5实现微信小程序多图片上传到服务器功能
Jul 16 PHP
thinkPHP5框架接口写法简单示例
Aug 05 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投票程序源码
2007/03/11 PHP
php mysql数据库操作分页类
2008/06/04 PHP
PHP的一个基础知识 表单提交
2011/07/04 PHP
php自动注册登录验证机制实现代码
2011/12/20 PHP
PHP中extract()函数的妙用分析
2012/07/11 PHP
php递归删除目录下的文件但保留的实例分享
2014/05/10 PHP
php实现对文件压缩简单的方法
2019/09/29 PHP
php7 list()、session及其他模块的修改实例分析
2020/05/25 PHP
XP折叠菜单&amp;仿QQ2006菜单
2006/12/16 Javascript
Javascript-Mozilla和IE中的一个函数直接量的问题
2007/01/09 Javascript
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
2013/07/31 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解
2016/07/18 Javascript
Bootstrop实现多级下拉菜单功能
2016/11/24 Javascript
JavaScript实现定时页面跳转功能示例
2017/02/14 Javascript
JavaScript的继承实现小结
2017/05/07 Javascript
JS原生带小白点轮播图实例讲解
2017/07/22 Javascript
jQuery实现仿京东防抖动菜单效果示例
2018/07/06 jQuery
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
2018/08/30 Javascript
vue踩坑记录之数组定义和赋值问题
2019/03/20 Javascript
vxe-table vue table 表格组件功能
2019/05/26 Javascript
如何使用proxy实现一个简单完整的MVVM库的示例代码
2019/09/17 Javascript
[06:07]辉夜杯现场观众互动 “比谁远送显示器”
2015/12/26 DOTA
[01:28:24]NAVI vs VG Supermajor 败者组 BO3 第三场 6.5
2018/06/06 DOTA
详解Python中的各种函数的使用
2015/05/24 Python
python正则实现计算器功能
2017/12/14 Python
Python安装模块的常见问题及解决方法
2018/02/05 Python
巴塞罗那观光通票:Barcelona Pass
2019/10/30 全球购物
翻译专业应届生求职信
2013/11/23 职场文书
资源工程专业毕业生求职信
2014/02/27 职场文书
数控技校生自我鉴定
2014/03/02 职场文书
离婚财产分配协议书
2014/10/21 职场文书
2015年学校信息技术工作总结
2015/05/25 职场文书
使用Python的开发框架Brownie部署以太坊智能合约
2021/05/28 Python
golang中字符串MD5生成方式总结
2021/07/04 Golang
jQuery实现广告显示和隐藏动画
2021/07/04 jQuery