大家应该听过这样的江湖美谈:计算机在执行任务的过程中,通过使用matlab/python/vba等发送邮件的方式通知和其在空间存在一定距离的工程师。
却未必听说过,工程师通过手机向和其在空间存在一定距离的计算机发送指令的奇闻故事。(如果我说的有错,不要打我,这里专指matlab)
今天就来理一理,针对手机控制matlab,到底有哪些可用解决方案呢?
方案1:matlab mobile
这种方案特别省事。手机去下载一个app,名叫matlab(支持安卓)。她长这样:
![ffcdcf6e4e2701201e2a7c90fb500eb0.png](https://i-blog.csdnimg.cn/blog_migrate/ffe0ec2fdf063e5e8fcef5e6100eac70.jpeg)
具体的配置方式,见matlab mobile 设置/添加计算机/入门指南。
方案二:outlook + matlab
为了做这个方案,我特别地花钱从某网站上购买了一个outlook 激活。客服还非常用心地使用teamviewer帮我远程安装outlook完毕。teamviewer的强大,已经远远超越了本次讨论的范畴,故本文不再提及。
选择outlook的原因是,其和和 Excel/word 类似,同样支持vba编程。
具体思路:当outlook收到新邮件后,立即触发事件Application_NewMail,在此事件中写下提取邮件信息的代码,同时调用matlab执行这部分代码。
VBA代码如下:
Private Sub Application_NewMail()
Dim myNameSpace As NameSpace
Dim myibox As MAPIFolder
Set myNameSpace = Application.GetNamespace("MAPI")
Set myibox = myNameSpace.GetDefaultFolder(olFolderInbox)
itemnum = myibox.Items.Count
On Error Resume Next
Set wdApp = GetObject(, "Matlab.Application")
If Err.Number = 0 Then
wdApp.Execute (myibox.Items(itemnum).Subject)
Else
MsgBox "matlab is not open!"
End If
End Sub
执行上述内容前,最好在matlab窗口中,先执行一行代码。否则,可能达不到下图显示的效果。
enableservice('AutomationServer',true);
另外,由于发邮件存在延时,请大家等待半分钟的时间,才能看清动图效果。
![7e1cf1db992a8192bc8fd30d960357c1.gif](https://i-blog.csdnimg.cn/blog_migrate/24c923379f0d82f99c9a2c9d80b2f33f.gif)
方案三:onedrive+matlab+手机备忘录
先看动图效果。写这段代码时,脑袋里充满了命运交响曲的旋律,于是写下了dadadada,不对啊,好像是dangdangdangdang。。。
![52597cd1f7573de93b8c8c4e0dd6a583.gif](https://i-blog.csdnimg.cn/blog_migrate/4e27c88c5f22d0573fc8b9c01c361749.gif)
动图显示过程即为具体思路:在手机备忘录中输入一段代码,然后以文本格式分享到onedrive指定文件夹(手机端onedrive同步更新到计算机端onedrive),matlab通过定时器每隔5s查找onedrive指定文件夹下的txt文件,如果查到该文件,则执行其中代码并将其删除。
更新手机备忘录--文本格式分享到手机onedrive--计算机onedrive同步更新--matlab定时器查找onedrive文件夹下txt文件--读取并执行txt中命令-删除txt文件
![dffa4e6933582a0499c7a3cc6ab528e2.png](https://i-blog.csdnimg.cn/blog_migrate/54d2f3fb14d84e1bf503cd3e92614b93.jpeg)
并不一定非要用手机备忘录,能分享为文本格式的均可,使用手机短信也行。
代码实现如下:
![74cbc56c839ca2a624b2078426701379.png](https://i-blog.csdnimg.cn/blog_migrate/6beee35b170ba47aa10b9e975f398064.jpeg)
方案四:微信+python+matlab
该方案来源于文章如何让MATLAB在完成计算后通知你。本文方案三一定程度上也是参考了这篇文章,也是基于这篇文章的一条评论才开始了解onedrive。必须要标记鸣谢。
具体实现不再赘述。
方案五:更好的方案
以后如有更好的方案,会及时更新。感谢你们花时间看我画质蹩脚的动图。以上