近期,在服務器上運行matlab程序,由於數據比較多,程序比較復雜,運行時間不固定,而且需要經常改變參數,重復運行幾次,所以不清楚程序何時結束,以便於修改參數,繼續運行。開始有時間就看看程序是否運行結束,次數多了后,就感覺分心,很不方便。
為了在第一時間知道程序運行結束,就想到了讓matlab在運行結束后,立刻通知我,這樣就方便我立刻修改參數,繼續運行。經過思考,百度或者google,嘗試,這里介紹兩種可行的方法:發送短信和發送有郵件。
1. 發送短信
由於以前有過在電腦上向手機發送短信的編程實現,所以在回顧自己的文章《 C#簡單實現發送手機短信 》,再結合matlab中web的使用,實現了用中國網建提供的SMS短信平台發送短信,就像我在自己文章提到的一樣,用完幾條免費的后,就要收費了。(順便提一句,網上找到用開放飛信平台的API發送的,但是現在好像不能用了,不知道Why。)
用基於SMS平台發送短信,非常簡單,一句命令的事,可以直接加在代碼的最后:
web http://utf8.sms.webchinese.cn/?Uid=本站用戶名&Key=接口安全密碼&smsMob=手機號碼&smsText=短信內容
得先注冊網建,然后按上面的修改就可以了。
2. 發送郵件
如果感覺發送短信,太麻煩,需要注冊之類的,可以選擇發送郵件。像網易郵件,gmail郵件等,都可以。
在使用郵件之前,首先要設置郵箱,開啟stmp和pop3服務器。例如下列圖片:
然后,在matlab命令窗口(command window),輸入: doc sendmail,函數介紹如下:
MailAddress = 'XXXXXXXX@126.com';%手機郵箱地址 password = 'XXXX'; %密碼 setpref('Internet','E_mail',MailAddress);%照抄吧 setpref('Internet','SMTP_Server','smtp.126.com');%SMTP服務器 setpref('Internet','SMTP_Username',MailAddress);%照抄 setpref('Internet','SMTP_Password',password);%照抄 props = java.lang.System.getProperties;%照抄 props.setProperty('mail.smtp.auth','true');%照抄 sendmail(MailAddress,subject,content);%提醒的是自己,直接用自己的手機郵箱 subject和content就是郵件的主題和內容,發過E-mail的都知道吧。
為了以后方便使用,可以包裝成一個函數:
function mailTome(subject,content) MailAddress = 'XXXXXX@126.com'; password = 'X'; setpref('Internet','E_mail',MailAddress); setpref('Internet','SMTP_Server','smtp.126.com'); setpref('Internet','SMTP_Username',MailAddress); setpref('Internet','SMTP_Password',password); props = java.lang.System.getProperties; props.setProperty('mail.smtp.auth','true'); sendmail('X',subject,content);
end
得到mail2me這個函數之后,只要在程序后面加上一句類似的:
mailTome('Program Over','**** Program has finished');
真的沒有問題了么?程序員的思想總是接近完備的。
函數中存在個人隱私(手機號碼和密碼),如果被人看到然后用來捉弄你就不好了。 MATLAB也是完備的,她提供了一種很好的內容保護機制: protected-code。
Command Window 鍵入:
pcode mailTome
然后刪除mail2me.m。在此之后,再次輸入:
mailTome('Is OK?','見證奇跡的時刻到了');
從此,再也不會有第二個人知道你這個函數里面的內容了.
第二種方法來自於網上的查找。