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 自写函数代码 获取关键字 去超链接
Feb 08 PHP
drupal 代码实现URL重写
May 04 PHP
供参考的 php 学习提高路线分享
Oct 23 PHP
使用PHP导出Redis数据到另一个Redis中的代码
Mar 12 PHP
php cookie中点号(句号)自动转为下划线问题
Oct 21 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
Dec 21 PHP
CodeIgniter配置之routes.php用法实例分析
Jan 19 PHP
关于php 高并发解决的一点思路
Apr 16 PHP
PHP基于curl post实现发送url及相关中文乱码问题解决方法
Nov 25 PHP
PHP实现数据库的增删查改功能及完整代码
Apr 18 PHP
PHP CURL中传递cookie的方法步骤
May 09 PHP
在PHP中实现使用Guzzle执行POST和GET请求
Oct 15 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相当简单的分页类
2008/10/02 PHP
php数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
2011/10/29 PHP
Thinkphp模板中使用自定义函数的方法
2012/09/23 PHP
Yii PHP Framework实用入门教程(详细介绍)
2013/06/18 PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
2014/12/15 PHP
PHP接入支付宝接口失效流程详解
2020/11/10 PHP
兼容IE和Firefox火狐的上下、左右循环无间断滚动JS代码
2013/04/19 Javascript
jquery 利用show和hidden实现级联菜单示例代码
2013/08/09 Javascript
JavaScript显示当然日期和时间即年月日星期和时间
2013/10/29 Javascript
用JS将搜索的关键字高亮显示实现代码
2013/11/08 Javascript
JavaScript实现的购物车效果可以运用在好多地方
2014/05/09 Javascript
jQuery使用hide方法隐藏指定元素class样式用法实例
2015/03/30 Javascript
jQuery同步提交示例代码
2015/12/12 Javascript
基于Bootstrap实现下拉菜单项和表单导航条(两个菜单项,一个下拉菜单和登录表单导航条)
2016/07/22 Javascript
js Canvas实现的日历时钟案例分享
2016/12/25 Javascript
微信小程序 radio单选框组件详解及实例代码
2017/01/10 Javascript
mui上拉加载更多下拉刷新数据的封装过程
2017/11/03 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
2019/09/20 Javascript
[32:39]完美世界DOTA2联赛循环赛 Forest vs Inki BO2第一场 11.04
2020/11/04 DOTA
Python远程桌面协议RDPY安装使用介绍
2015/04/15 Python
Python 处理图片像素点的实例
2019/01/08 Python
如何使用Python抓取网页tag操作
2020/02/14 Python
Python urllib.request对象案例解析
2020/05/11 Python
使用OpenCV去除面积较小的连通域
2020/07/05 Python
celery在python爬虫中定时操作实例讲解
2020/11/27 Python
英国婴儿产品专家:Samuel Johnston
2020/04/20 全球购物
商务英语求职自荐信范文
2013/12/24 职场文书
高三政治教学反思
2014/02/06 职场文书
五型班组建设方案
2014/02/10 职场文书
2014三八妇女节活动总结
2014/03/01 职场文书
2014年预备党员学习两会心得体会
2014/03/17 职场文书
测绘工程专业求职信
2014/07/15 职场文书
违反学校规则制度检讨书
2015/01/01 职场文书
项目技术负责人岗位职责
2015/04/13 职场文书
保留意见审计报告
2015/06/05 职场文书
创业计划书之便利店
2019/09/05 职场文书