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下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
Dec 29 PHP
php设计模式 Builder(建造者模式)
Jun 26 PHP
php断点续传之如何分割合并文件
Mar 22 PHP
2014年10个最佳的PHP图像操作库
Jul 14 PHP
PHP从FLV文件获取视频预览图的方法
Mar 12 PHP
php通过exif_read_data函数获取图片的exif信息
May 21 PHP
PHP实现简单汉字验证码
Jul 28 PHP
WordPress分页伪静态加html后缀
Jun 08 PHP
PHP7新增运算符用法实例分析
Sep 26 PHP
php实现和c#一致的DES加密解密实例
Jul 24 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
May 27 PHP
PHP基于openssl实现非对称加密代码实例
Jun 19 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
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
分页详解 从此分页无忧(PHP+mysql)
2007/11/23 PHP
php递归实现无限分类生成下拉列表的函数
2010/08/08 PHP
mac下使用brew配置环境的步骤分享
2011/05/23 PHP
php 对输入信息的进行安全过滤的函数代码
2012/06/29 PHP
php开发微信支付获取用户地址
2015/10/04 PHP
Yii框架实现记录日志到自定义文件的方法
2017/05/23 PHP
浅析PHP类的反射来实现依赖注入过程
2018/02/06 PHP
PHP实现用session来实现记录用户登陆信息
2018/10/15 PHP
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
Javascript Global对象
2009/08/13 Javascript
JavaScript Event学习第八章 事件的顺序
2010/02/07 Javascript
ExtJS 学习专题(一) 如何应用ExtJS(附实例)
2010/03/11 Javascript
jQuery 回车事件enter使用示例
2014/02/18 Javascript
jQuery实现隔行背景色变色
2014/11/24 Javascript
jquery实现左右滑动菜单效果代码
2015/08/27 Javascript
Jquery和Js获得元素标签名称的方法总结
2016/10/08 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
2016/11/26 Javascript
Angularjs中的ui-bootstrap的使用教程
2017/02/19 Javascript
JS通用方法触发点击事件代码实例
2020/02/17 Javascript
vue实现移动端项目多行文本溢出省略
2020/07/29 Javascript
使用js和canvas实现时钟效果
2020/09/08 Javascript
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
2019/04/27 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
2020/03/30 Python
使用python无账号无限制获取企查查信息的实例代码
2020/04/17 Python
Python 3.9的到来到底是意味着什么
2020/10/14 Python
python3中布局背景颜色代码分析
2020/12/01 Python
html5 canvas实现跟随鼠标旋转的箭头
2016/03/11 HTML / CSS
前端canvas动画如何转成mp4视频的方法
2019/06/17 HTML / CSS
阿里云:Aliyun.com
2017/02/15 全球购物
戴尔新西兰官网:Dell New Zealand
2020/01/07 全球购物
学校运动会报道稿
2014/09/23 职场文书
综合办公室主任岗位职责
2015/04/01 职场文书
校车司机安全责任书
2015/05/11 职场文书
小学一年级数学教学反思
2016/02/16 职场文书
《狼牙山五壮士》读后感:宁死不屈,视死如归
2019/08/16 职场文书