利用MATLAB的Timer实现网络图片的定时下载

这个约每小时更新的GIF格式遥感图片为例:

MATLAB当前目录下新建一个.m脚本,本例里起名为wvgifdownload.m:

%图片存储目录设定:
folderpath=['d:\temp\'];

if length(dir([folderpath,'*.gif']))==0  %判断目录是否已有GIF文件
    urlwrite('http://www.goes.noaa.gov/dimg/jma/fd/wvblue/10.gif',[folderpath,'1.gif'],'timeout',15); %空目录则将下载的图片命名为1.gif
else %文件夹已有GIF文件
    localinfo=imfinfo([folderpath,num2str(length(dir([folderpath,'*.gif']))),'.gif']); %获取目录里最新GIF的文件信息
    webinfo=imfinfo('http://www.goes.noaa.gov/dimg/jma/fd/wvblue/10.gif');%获取目标网络图片的文件信息
    if localinfo.FileSize~=webinfo.FileSize %比较两者文件大小,若不一样,则表示网络图片已更新,可以下载
        urlwrite('http://www.goes.noaa.gov/dimg/jma/fd/wvblue/10.gif',['f:\CloudGIF\wv\',num2str(length(dir([folderpath,'*.gif']))+1),'.gif'],'timeout',15);
    end
end

设定Timer对象,这里起名为down:

down = timer                                 ...
(   'Name'          , 'my_timer'        ...
,   'TimerFcn'      , @(varargin)evalin('base','wvgifdownload')  ...
,   'BusyMode'      , 'drop'            ...
,   'ExecutionMode' , 'fixedRate'      ...
,   'Period'        ,  1800               ...
,   'StartDelay'    ,  0                ...
);

注意TimerFcn这里是调用当前目录脚本的写法,如果是函数则按函数调用去写。本例Period这里设定的是半小时执行一次,即每半小时检查网络图片是否更新,如有更新即可下载。

执行Timer:

start(down)

发表评论

电子邮件地址不会被公开。

*