php gprs,PHP通过php_dio扩展控制SIM800 GPRS模块模拟HTTP POST提交表单

function send_post($postdata) {

//设置超时时间

set_time_limit(0);

//设置端口号

$com_port = 3;

//windows平台使用下面命令设置端口

exec('mode COM'.$com_port.': baud=9600 data=8 stop=1 parity=n xon=on');

//以读写不阻塞方式打开端口,

$fd = dio_open('COM'.$com_port.':', O_RDWR|O_NONBLOCK);

if(!$fd)

{

die('Error open COM'.$com_port.'.');

}

$url = 'http://www.shukeiot.cn/api';

//汉字用urlencode编码

$msg = urlencode('这里是汉字内容');

$postdata = array(

'uid' => '1',

'msg' => $msg,

);

$poststr = http_build_query($postdata);

$contentlength = strlen($poststr);

//组装AT指令

$at_command = array();

//设置APN

array_push($at_command, array('AT+SAPBR=3,1,"APN","UNINET"', 1));

//打开网络连接

array_push($at_command, array('AT+SAPBR=1,1', 1));

//初始化HTTP

array_push($at_command, array('AT+HTTPINIT', 1));

//设置使用的连接,对应上面的AT+SAPBR的第二个参数

array_push($at_command, array('AT+HTTPPARA="CID",1', 1));

//设置HTTP URL参数

array_push($at_command, array('AT+HTTPPARA="URL","'.$url.'"', 1));

//设置HTTP CONTENT参数,Post表单:application/x-www-form-urlencoded

array_push($at_command, array('AT+HTTPPARA="CONTENT","application/x-www-form-urlencoded"', 1));

//发送HTTP DATA,这里定义即将要发送的消息长度和超时时间

array_push($at_command, array('AT+HTTPDATA='.$contentlength.',5000', 1));

//回复DOWNLOAD的时候就可以写入POST请求字符串了

array_push($at_command, array($poststr, 1));

//正式提交请求,0是GET,1是POST,2是HEAD,这条指令有两条回复

array_push($at_command, array('AT+HTTPACTION=1', 2));

//关闭HTTP 连接

array_push($at_command, array('AT+HTTPTERM', 1));

//关闭网络

array_push($at_command, array('AT+SAPBR=0,1', 1));

//开始循环执行命令

foreach ($at_command as $key => $value)

{

@dio_write($fd, $at_command[$key][0].chr(13));

$num = 1;

$datastr = '';

//进循环读串口响应信息字节,每次一个

while(true){

$data = dio_read($fd, 1);

$datastr .= $data;

//用串口助手调试发现每次响应包含两个换行(chr(10))

if($data == chr(10))

{

if($num % 2 == 0){

//输出响应

//echo '---'.$datastr.'---
';

$datastr = '';

}

//AT+HTTPACTION=1有两个回复,指令接收回OK,完成请求以后会返回主机状态。601/302/200,一般200为正常响应

if($num >= $at_command[$key][1]*2) break;

$num ++;

}

//可以加入适当延时

usleep(1000);

}

}

dio_close($fd);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值