• 微博关机的MATLAB实现


    差不多半个月前,在网上看到一篇文章,介绍了如何用MATLAB实现发一条微博来关机的功能。仔细一点说来,就是要实现这样一个功能:只要我的MATLAB的这个M文件正在运行,那么当我在自己微博上发布“关机”命令的时候,电脑便会关机。看了人家的思路之后,不由得赞叹他人的创意。下面我先把这段代码贴出来:

    cmd="关机";
    counter=0;
    r=[];
    %登入微博后,在 http://app.weibo.com/tool/weiboshow 页面最下方找到src链接
    src='http://widget.weibo.com/weiboshow/index.php?language=&width=0&height=550&fansRow=2&ptype=1&speed=0&skin=1&isTitle=1&noborder=1&isWeibo=1&isFans=1&uid=2022255405&verifier=f0469716&dpc=1';
    while 1
    	try
    		s=urlread(src);
    		r=regexp(s,cmd,'match');
    	catch
    		disp('网络连接问题');
    end
    if ~isempty(r)
    	disp('呵呵!!!!!收到待机指令');
     
    	%%关机
    
    	 !shutdown -s -t 0 
    
    	break;
    else
    	clc
    	counter=counter+1;
    	disp(['没有收到关闭指令+' num2str(counter)]);
    end
    pause(5);
    end

    分析这段代码,我们可以很容易地知道作者的思路:

    在运行M文件之后,程序便不断查询src这个字符串所代表的页面,将其上的HTML作为字符串传到s变量里面,然后我们利用regexp函数查看这段HTML代码里面有没有我们预定好的“关机指令”,也就是cmd所代表的字符串。如果有的话,调用DOS命令进行关机,如果没有就返回继续读取页面内容。可以说,思路是很简单的。

    但是如果真的使用的时候,问题不可避免的来了。那就是如果我先前发送过“关机”指令,那么“关机”这两个字就会存在src页面HTML中,所以这段程序“只能用一次”。。。为了解决这个问题,我们只好在运行程序前,先删除自己微博中原来所有带有“关机”字眼的微博,这显然是不好的,所以我想到是不是可以给它加上关机时间的限制呢?

    就像下面这样来实现关机:

    这样做我们只需要给代码很小的改动,只需要添加判别“关机指令”是否为合法的格式,关机指令后的“时间”是否为未来的某一时间即可。到了这个时间,我们再调用DOS命令进行关机操作。所以,我补充了下面的代码:

    cmd='关机';
    counter=0;
    r=[];
    %登入微博后,在 http://app.weibo.com/tool/weiboshow 页面最下方找到src链接
    %src='http://widget.weibo.com/weiboshow/index.php?language=&width=0&height=550&
    %fansRow=2&ptype=1&speed=0&skin=1&isTitle=1&noborder=1&isWeibo=1&isFans=1&uid=2022255405&verifier=f0469716&dpc=1';
    src='http://widget.weibo.com/weiboshow/index.php?language=&width=0&height=550&fansRow=2&ptype=1&speed=0&skin=1&isTitle=1&noborder=1&isWeibo=1&isFans=1&uid=2629935075&verifier=5970ebca&dpc=1';
    while 1
        try
        s=urlread(src);
        s
        r=regexp(s,cmd,'match');
        catch
            disp('网络连接问题');
        end
        if ~isempty(r)
                [startIndex,endIndex]=regexp(s,cmd);
                nowdate=datestr(now,26);
                nowhourmin=datestr(now,15);
                time=s(endIndex+1:endIndex+16);
                
                time
                nowhourmin
                date=time(1:10);
                hourmin=time(12:16);
                if strcmp(date,nowdate)&&strcmp(hourmin,nowhourmin)
                    disp('呵呵!!!!!收到待机指令');
                    save;
                    !shutdown -s -t 0
                    break;
                else
                    counter=counter+1;
                    disp(['时间不对+' num2str(counter)]);
                end
        
        %%关机
    
            !shutdown -s -t 0 
           
        else
            counter=counter+1;
            disp(['没有收到关闭指令+' num2str(counter)]);
        end
        pause(0.5);
    end

    这样就可以在给定的时间关闭计算机了~~~不过使用时候要注意指令格式一定要正确:关机2013/09/12 09:34

  • 相关阅读:
    Oracle数据库不能使用索引的原因定位
    C语言中的strncmp
    C标准库函数
    C语言字符串函数大全
    Postgres性能检测
    test cert by python
    如何在C语言中巧用正则表达式
    北大软微一年ABCD
    C 语言字符数组的定义与初始化
    25个设计设计灵感的紫色网站案例
  • 原文地址:https://www.cnblogs.com/xmfbit/p/3872193.html
Copyright © 2020-2023  润新知