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 相关文章推荐
phpmyadmin 常用选项设置详解版
Mar 07 PHP
PHP daddslashes 使用方法介绍
Oct 26 PHP
用php来改写404错误页让你的页面更友好
Jan 24 PHP
PHP笔记之:日期函数的使用介绍
Apr 24 PHP
php计算两个整数的最大公约数常用算法小结
Mar 05 PHP
试用php中oci8扩展
Jun 18 PHP
在Mac上编译安装PHP7的开发环境
Jul 28 PHP
PHP实现的迷你漂流瓶
Jul 29 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
Mar 03 PHP
PHP检测链接是否存在的代码实例分享
May 06 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
Jul 20 PHP
PHP单例模式模拟Java Bean实现方法示例
Dec 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脚本的10个技巧(3)
2006/10/09 PHP
PHP的FTP学习(二)
2006/10/09 PHP
php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
2011/07/14 PHP
深入PHP异步执行的详解
2013/06/03 PHP
解析php中用PHPMailer来发送邮件的示例(126.com的例子)
2013/06/24 PHP
php中使用key,value,current,next和prev函数遍历数组的方法
2015/03/17 PHP
PHP抓取及分析网页的方法详解
2016/04/26 PHP
JavaScript 事件记录使用说明
2009/10/20 Javascript
js判断IE6/IE7/FF的代码[XMLHttpRequest]
2011/02/16 Javascript
防止浏览器记住用户名及密码的简单实用方法
2013/04/22 Javascript
JavaScript的模块化:封装(闭包),继承(原型) 介绍
2013/07/22 Javascript
Javascript对象属性方法汇总
2013/11/21 Javascript
深入理解JavaScript系列(31):设计模式之代理模式详解
2015/03/03 Javascript
基于jquery实现的自动补全功能
2015/03/12 Javascript
对jQuary选择器的全面总结
2016/06/20 Javascript
jquery获取select选中值的文本,并赋值给另一个输入框的方法
2018/08/21 jQuery
示例vue 的keep-alive缓存功能的实现
2018/12/13 Javascript
JavaScript实现的九种排序算法
2019/03/04 Javascript
[55:11]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第一场 11.26
2020/11/30 DOTA
python中函数总结之装饰器闭包详解
2016/06/12 Python
python中yaml配置文件模块的使用详解
2018/04/27 Python
Python二叉树定义与遍历方法实例分析
2018/05/25 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
2018/07/11 Python
Python反射和内置方法重写操作详解
2018/08/27 Python
python中如何使用分步式进程计算详解
2019/03/22 Python
Python实现多态、协议和鸭子类型的代码详解
2019/05/05 Python
python数据处理之如何选取csv文件中某几行的数据
2019/09/02 Python
CSS 3.0文字悬停跳动特效代码
2020/10/26 HTML / CSS
利用html5的websocket实现websocket聊天室
2013/12/12 HTML / CSS
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
自动化专业大学生职业生涯规划范文:爱拚才会赢
2014/09/12 职场文书
一次性工伤赔偿协议书范本
2014/11/25 职场文书
爱国主题班会教案
2015/08/14 职场文书
vue生命周期钩子函数以及触发时机
2022/04/26 Vue.js
小喇叭开始广播了! 四十多年前珍贵老照片
2022/05/09 无线电