首先,使用deploytool工具或者命令行将matlab的m文件编译成类,结果产生动态链接库.dll文件和一些c#代码的类.
第二步,将这些dll文件导入进去,并使用一些win32api函数,因为此m文件会产生figure窗口,这些api函数将此figure窗口嵌入到vb程序窗体里面.
代码:
Imports System
Imports System.Runtime.InteropServices
Imports MathWorks.MATLAB.NET.Arrays
Imports MathWorks.MATLAB.NET.Utility
Imports SinImage.SinImage
Public Class SinForm
Dim img As New SinImage.SinImage
Dim FigureHwnd As IntPtr = IntPtr.Zero
Public Declare Function SetParent Lib "user32" Alias "SetParent" _
(ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As Integer
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
Public Declare Function GetWindowLong Lib "User32.Dll" Alias "GetWindowLongA" _
(ByVal hWnd As System.IntPtr, ByVal nIndex As Integer) As Integer
Public Declare Function SetWindowLong Lib "User32.Dll" Alias "SetWindowLongA" _
(ByVal hWnd As IntPtr, ByVal nIndex As Integer, ByVal dwNewLong As Integer) As Integer
Public Declare Function MoveWindow Lib "user32" Alias "MoveWindow" _
(ByVal hwnd As IntPtr, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal Flags As Boolean) As Boolean
Private Sub number_NUD_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles number_NUD.Click
img.sx(number_NUD.Value)
Move_Window()
End Sub
Private Sub SinForm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
img.sx(number_NUD.Value)
Threading.Thread.Sleep(300)
Do While FigureHwnd = IntPtr.Zero
FigureHwnd = FindWindow(Nothing, "Figure 1")
Threading.Thread.Sleep(100)
Loop
SetWindowLong(FigureHwnd, -16, GetWindowLong(FigureHwnd, -16) And (Not &HC00000))
SetParent(FigureHwnd, Me.image_GBX.Handle)
Move_Window()
End Sub
Private Sub Move_Window() Handles Me.Resize
MoveWindow(FigureHwnd, -3, -20, Me.image_GBX.Width + 8, Me.image_GBX.Height + 54, True)
Me.Refresh()
End Sub
End Class
其实可以将m文件的c#代码,直接使用csc.exe编译成.netmodule文件,然后将应用此m文件包含的函数的.vb文件也使用vbc.exe编译成exe文件,这里面要将csc.exe编译的.netmodule文件引用到vbc.exe编译中.
若m文件不产生figure窗口,程序就更简单,直接导入.dll文件,并使用其中的函数即可.
分享到:
相关推荐
MATLAB与VB.NET混合编程方法在伺服机构动态测试中的应用.pdf
Imports MathWorks.MATLAB.NET.Arrays Imports MathWorks.MATLAB.NET.Utility Imports SinImage.SinImage Public Class SinForm Dim img As New SinImage.SinImage Dim FigureHwnd As IntPtr = IntPtr.Zero ...
Matlab与VB.NET混合编程中数据存储方式的研究.pdf
基于COM技术的Matlab和VB.Net混合编程.pdf
介绍了一种基于组件对象模型(componeniobjectModel,c0M)的Matlab与vB混合编程方法。它以Matlab6.5中 的MatlabCOMBullder模块为转换工具,将Matlab的M函数文件转换为COM组件后应用在vB程序中.集成后的软件不 仅能够...
基于Matlab与VB.Net混合编程的信号建模预测系统.pdf
基于VB与MATLAB混合编程在钻井泵故障诊断中的应用.pdf
Matlab、Access和VB.NET混合编程方法的研究和应用
Matlab、Access和VB.NET混合编程方法的研究和应用.pdf
基于_NET的MATLAB与VisualBasic混合编程的研究
混合编程,包含m文件和vb.net工程文件,matlab中运算结果保存到文本文件,vb.net引用matlab dll文件输出结果与文本文件一致
基于BP神经网络的电火花线切割(WEDM)工艺仿真系统...综合两种开发环境各自的优势,可采用VB与Matlab混合编程的方法实现工艺仿真软件的编程开发。 在VB开发环境下制定前台用户界面,利用Matlab强大的计算功能实现后台