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 相关文章推荐
mysql5详细安装教程
Jan 15 PHP
swfupload 多文件上传实现代码
Aug 27 PHP
Views rows style模板重写代码
May 16 PHP
php下利用curl判断远程文件是否存在的实现代码
Oct 08 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
Oct 17 PHP
利用php+mcDropdown实现文件路径可在下拉框选择
Aug 07 PHP
php中将一段数据存到一个txt文件中并显示其内容
Aug 15 PHP
CodeIgniter整合Smarty的方法详解
Aug 25 PHP
PHP实现数组的笛卡尔积运算示例
Dec 15 PHP
CI框架(CodeIgniter)实现的数据库增删改查操作总结
May 23 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
May 29 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
Oct 27 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
ThinkPHP采用模块和操作分析
2011/04/18 PHP
精美漂亮的php分页类代码
2013/04/02 PHP
php实现的Captcha验证码类实例
2014/09/22 PHP
codeigniter实现get分页的方法
2015/07/10 PHP
EasyUI中的tree用法介绍
2011/11/01 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
2012/12/26 Javascript
Javascript实现视频轮播在pc端与移动端均可
2013/09/29 Javascript
js解决弹窗问题实现班级跳转DIV示例
2014/01/06 Javascript
js replace替换所有匹配的字符串
2014/02/13 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
jQuery基于xml格式数据实现模糊查询及分页功能的方法
2016/12/25 Javascript
javascript实现二叉树遍历的代码
2017/06/08 Javascript
vue中如何实现变量和字符串拼接
2017/06/19 Javascript
node实现定时发送邮件的示例代码
2017/08/26 Javascript
使用vue-router在Vue页面之间传递数据的方法
2019/07/15 Javascript
小程序Request的另类用法详解
2019/08/09 Javascript
Vue 3.0双向绑定原理的实现方法
2019/10/23 Javascript
python中的内置函数getattr()介绍及示例
2014/07/20 Python
简洁的十分钟Python入门教程
2015/04/03 Python
Python入门学习之字符串与比较运算符
2015/10/12 Python
python实现在cmd窗口显示彩色文字
2019/06/24 Python
Python aiohttp百万并发极限测试实例分析
2019/10/26 Python
Python获取统计自己的qq群成员信息的方法
2019/11/15 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
2020/03/30 Python
在python中对于bool布尔值的取反操作
2020/12/11 Python
html标签之Object和EMBED标签详解
2013/07/04 HTML / CSS
国外平面设计第一市场:99designs
2016/10/25 全球购物
Wedgwood英国官方网站:英式精致骨瓷餐具、礼品与生活精品,源于1759年
2019/09/02 全球购物
捷克母婴用品购物网站:Feedo.cz
2020/12/28 全球购物
幼儿园英语教学反思
2014/01/30 职场文书
党支部2014年度工作总结
2014/12/04 职场文书
大学生毕业评语
2014/12/31 职场文书
我的兄弟姐妹观后感
2015/06/15 职场文书
学校趣味运动会开幕词
2016/03/04 职场文书
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
2021/06/26 MySQL
JS 基本概念详细介绍
2021/10/16 Javascript