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上传、管理照片示例
Oct 09 PHP
再次研究下cache_lite
Feb 14 PHP
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
Jan 03 PHP
使用php判断浏览器的类型和语言的函数代码
Feb 28 PHP
使用php计算排列组合的方法
Nov 13 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
Sep 30 PHP
php实现无限级分类查询(递归、非递归)
Mar 10 PHP
ThinkPHP3.2.3实现分页的方法详解
Jun 03 PHP
PHP删除数组中指定下标的元素方法
Feb 03 PHP
PHP5.5新特性之yield理解与用法实例分析
Jan 11 PHP
laravel 框架结合关联查询 when()用法分析
Nov 22 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
Aug 07 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的垃圾回收机制详解
2013/10/28 PHP
那些年我们错过的魔术方法(Magic Methods)
2014/01/14 PHP
PHP自带ZIP压缩、解压缩类ZipArchiv使用指南
2015/03/03 PHP
PHP实现的数独求解问题示例
2017/04/18 PHP
PHP面向对象多态性实现方法简单示例
2017/09/27 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
laravel中的fillable和guarded属性详解
2019/10/23 PHP
在html页面上拖放移动标签
2010/01/08 Javascript
浅析JavaScript中的同名标识符优先级
2013/12/06 Javascript
JavaScript中奇葩的假值示例应用
2014/03/11 Javascript
js 设置缓存及获取设置的缓存
2014/05/08 Javascript
JavaScript使用addEventListener添加事件监听用法实例
2015/06/01 Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
2015/07/08 Javascript
图解js图片轮播效果
2015/12/20 Javascript
浅谈javascript 函数表达式和函数声明的区别
2016/01/05 Javascript
JS获取字符串实际长度(包含汉字)的简单方法
2016/08/11 Javascript
分享十三个最佳JavaScript数据网格库
2017/04/07 Javascript
利用angular、react和vue实现相同的面试题组件
2018/02/19 Javascript
vue.js响应式原理解析与实现
2020/06/22 Javascript
nodejs提示:cross-device link not permitted, rename错误的解决方法
2019/06/10 NodeJs
JS原形与原型链深入详解
2020/05/09 Javascript
Python实现Const详解
2015/01/27 Python
centos6.4下python3.6.1安装教程
2017/07/21 Python
Python实现的视频播放器功能完整示例
2018/02/01 Python
Python实现操纵控制windows注册表的方法分析
2019/05/24 Python
matplotlib jupyter notebook 图像可视化 plt show操作
2020/04/24 Python
如何使用python写截屏小工具
2020/09/29 Python
如何用Matlab和Python读取Netcdf文件
2021/02/19 Python
英国休闲奢华的缩影:Crew Clothing
2019/05/05 全球购物
日本AOKI官方商城:AOKI西装
2020/06/11 全球购物
后勤岗位职责
2013/11/26 职场文书
女大学生个人求职信
2013/12/09 职场文书
车间班组长的职责
2013/12/13 职场文书
报社实习生自荐信
2014/01/24 职场文书
《工作是最好的修行》读后感3篇
2019/12/13 职场文书
国庆节到了,利用JS实现一个生成国庆风头像的小工具 详解实现过程
2021/10/05 Javascript