vb调用matlab文件路径,关于VC与VB调用matlab的exe文件.

前些天帮同学调试关于matlab的毕业设计,图像处理的。具体的实现倒没什么,开始需要我帮忙的是在VC里显示MATLAB的处理结果。

我非常偷懒的想法是,直接用一个按钮响应点击事件,然后处理函数里调exe.这样有一个坏处是,其实跟VC没什么关系,之间也没有交互。

下面是生成exe的参考

一、生成独立可执行的程序(exe文件)步骤 1、安装编译器。可有多种选择,matlab自带了一个LCC,推荐使用VC++6.0。 2、设置编译器。在matlab命令行输入mbuild –setup以及mex –setup,选择安装的c编译器。 3、调用编译器。此处使用MATLAB下的一个GUI平台deploytool下完全实现。当然,也可以输入mcc -m filaname, filaname为要转成exe的m文件;

PS:我使用的就是mcc命令。这里关于deploy使用都是说请看帮助,其实也没什么,就是新建一个deploy工程,在右边会有让引入主文件,和资源的窗口,把要生成EXE的.m文件引入,把要处理的图片之类的资源引入,使用mcc命令即可。 注:在以前的版本中,用编译命令mcc -B sglcpp filaname;自2006的版本后,替换为mcc -mfilaname; 4、安装\toolbox\compiler\deploy\win32目录下的MCRInstaller。

第四步的MCR是为了在没有matlab的电脑环境下运行,这一步我没有细看。

生成EXE后在VC的按钮响应函数里调用

WinExec("xxx.exe",1)//参数是文件路径名,与显示方式。

后来同学的老师不满意,并且要求VB,虽然我没有用过VB而且这个要求很XX,可还是能帮就帮了。

具体如下:

单击“工程”菜单——>部件——>部件对话框——>在“控件”选项卡中选择“Microsoft Windows Common Control6.0”点击“确定”按钮,如图4.5。之后可以看到工具栏中增加了项目,将它从工具栏拖拽到设计界面中。 然后添加并设置所需要的功能的按钮,进行工具栏的设计,如图4.6。

0818b9ca8b590ca3270a3433284dd417.png

图4.5添加“Microsoft Windows Common Control6.0”控件

Fig. 4.5 Add “Microsoft Windows Common Control6.0”control

对了,这里可能会出现无法注册的问题,使用管理员模式打开工程,使用浏览(B)去添加部件。

或者把.ocx文件拷贝到c:\windows\System32 然后运行cmd

使用命令

Regsvr32 C:\windows\system32\Mscomm32.ocx

0818b9ca8b590ca3270a3433284dd417.png

图4.6制作工具栏

Fig. 4.6 Make the toolbar

设计图形显示界面:

完成菜单栏,工具栏的创建以后,可以在窗体中创建两个picture图片框,在窗体上建立一大一小两个水平排列的图片框,左边的图片框(名称:picture1)小一点,用来显示待处理图片,右边的图片框(名称:picture2)大一点,用来显示处理后的效果图片。整个电弧图像处理系统的界面完成图如图4.7所示。

0818b9ca8b590ca3270a3433284dd417.png

图4.7界面完成图

Fig. 4.7 The completed interface diagram 请输入文件名后面是控件Text1

打开按键的点击响应函数是

picname = Me.Text1.Text

Picture1.Picture = LoadPicture(App.Path & "\" & picname)

如果路径不对,可以使用绝对路径,类似

Picture1.Picture = LoadPicture("F:\java\" & picname)

特别提醒一下,使用24位真彩以上的图片读不出来,VB只支持jpg,bmp格式,像png可以用图画打开后另存修改后缀。

为工具栏上的各种实现电弧图像处理的功能按钮添加相应功能的代码,实现VB对MATLAB图像处理程序的调用,对于选则某种功能按钮实现相应功能

Private Sub Command1_Click()

Set matlab = CreateObject("matlab.application")

Dim matlab As Object

Clipboard.Clear

matlab.execute ("x=[1 2 4],y=[4 6 7];plot(x,y)") '此处输入matlab中命令

matlab.execute ("print -dbitmap;close") '把所作图以位图形式保存在剪贴板中,并关闭

Me.Picture2.Picture = Clipboard.GetData() '将剪贴板中图像在image控件中显示出来

End Sub

因为同学电脑超慢,一点儿也不想改matlab生成EXE部分。这里我用了一个笨方法,把处理的语句都放到

matlab.execute ()

时间与能力有限,有个问题没解决,我想直接掉用

Shell "nouse1.exe "并且能在VB里截取matlab中图像并关闭matlab.exe。如何处理,有想法的请指教。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值