Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Matlab + С#, Подключение dll библиотеки C# к Matlab 
:(
    Опции темы
VerLinG
Дата 30.11.2009, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 19.12.2007

Репутация: нет
Всего: нет



Здравствуйте! ПОдскажите пожалуйста, как можно подключить dll библиотеку, в который содержится класс, написанный на C# к Matlab и вызвать после этого метод этого класса ?
PM MAIL   Вверх
smoke_man
Дата 30.11.2009, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 25.1.2007
Где: Рязань

Репутация: 2
Всего: 17



Посмотри тут.


--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
VerLinG
Дата 1.12.2009, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 19.12.2007

Репутация: нет
Всего: нет



Посмотрел ссылку, много полезного.

Вообщем то вычитал , что взаимодействие идет через Com объекты, а чтобы Matlab видел методы, необходимо создавать интерфейс. Получается мой код dll принимает вид

Код

namespace ComMatLab
{

    public interface ComMatlabSignature
    {
       
        int Summ(int x, int y);
    }

    [ClassInterface(ClassInterfaceType.AutoDual)]
    [ComVisible(true)]

    public class ComClass : ComMatlabSignature
    {
        private int a;

        public int A
        {
            get { return a; }
            set { a = value; }
        }
        private int b;

        public int B
        {
            get { return b; }
            set { b = value; }
        }
        public int Summ(int a, int b) { return a + b; }
    }
}



А в Matlab я должен создать объект так:
Код

net = actxserver('ComMatLab.ComClass');


Только вот не работает...Поправьте, что не так...

З.Ы. Я в Матлабе полный чайник
PM MAIL   Вверх
smoke_man
Дата 1.12.2009, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 25.1.2007
Где: Рязань

Репутация: 2
Всего: 17



Посмотри пример. 

Присоединённый файл ( Кол-во скачиваний: 99 )
Присоединённый файл  MatSharp.rar 13,40 Kb


--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
VerLinG
Дата 1.12.2009, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 19.12.2007

Репутация: нет
Всего: нет



Огромное спасибо! Выручили!!! Думаю, тему можно считать закрытой!
PM MAIL   Вверх
smoke_man
Дата 1.12.2009, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 25.1.2007
Где: Рязань

Репутация: 2
Всего: 17



Не за что!


--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
VerLinG
Дата 2.12.2009, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 19.12.2007

Репутация: нет
Всего: нет



Возник еще один маленький вопрос...
В том примере вызываются статические методы в матлабе. А как создать класс, описанный в dll, передать в него параметры и вызвать метод этого класса в среде m?

Это сообщение отредактировал(а) VerLinG - 2.12.2009, 12:50
PM MAIL   Вверх
smoke_man
Дата 2.12.2009, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 25.1.2007
Где: Рязань

Репутация: 2
Всего: 17



Создаешь класс:
Код

using System;

namespace CreateClass
{
    public class Class1
    {
        private double a;
        public Class1(double num)
        {
            a = num;
        }
        public double Add(double b)
        {
            return a+b;
        }
    }
}

Затем вызываешь из Matlab:
Код

NET.addAssembly('D:\C#\CreateClass\CreateClass.dll');
obj = CreateClass.Class1(6);
a = obj.Add(4);


Присоединённый файл ( Кол-во скачиваний: 47 )
Присоединённый файл  CreateClass.zip 13,87 Kb


--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
VerLinG
Дата 2.12.2009, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 19.12.2007

Репутация: нет
Всего: нет



Огромнейшее спасибо!!!
PM MAIL   Вверх
smoke_man
Дата 2.12.2009, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 25.1.2007
Где: Рязань

Репутация: 2
Всего: 17



Не за что!


--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
oksana2106
Дата 10.1.2010, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 10.1.2010

Репутация: нет
Всего: нет



Здравствуйте. пожскажите плз, как класс написаный на си откомпилировать в dll? никогда знать не знала что такое dll а тут начальник в строгом порядке повелел "сделать dll на основе Си и использовать их в матлабе", "чтоб быстрее работало".. прям руки опускаются, и с чего начать не знаю(((
PM MAIL   Вверх
oksana2106
Дата 10.1.2010, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 10.1.2010

Репутация: нет
Всего: нет



Забыла уточнить, у меня С++ builder 6
PM MAIL   Вверх
oksana2106
Дата 10.1.2010, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 10.1.2010

Репутация: нет
Всего: нет



Вопрос отпал. кажется с этим сама разобралась))) 
PM MAIL   Вверх
smoke_man
Дата 11.1.2010, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 25.1.2007
Где: Рязань

Репутация: 2
Всего: 17



Все примеры использования можно найти на официальном сайте Matlab.


--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
oksana2106
Дата 11.1.2010, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 10.1.2010

Репутация: нет
Всего: нет



Здравствуйте. пыталась запустить присоединенные выше примеры, мой матлаб ругается что не знает что такое NET.addAssembly. может кто знает откуда такая ошибка м.б? 
(путь к dll я поменяла)

*спасибо за ссылку, попробую почитать
PM MAIL   Вверх
smoke_man
Дата 11.1.2010, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 25.1.2007
Где: Рязань

Репутация: 2
Всего: 17



Dll - C#? Потому что для использования С/С++ функций в Matlab  необходимо делать mex-файлы.


--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
oay18
  Дата 3.3.2010, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 3.3.2010

Репутация: нет
Всего: нет



Здравствуйте, у меня противоположный вопрос! Как использовать библиотеки MATLAB в Visual C# 2005? Нужно использовать в программе на С# матлабовские функции работы с матрицами. В матлабе я нуб. Заранее спасибо!)
PM MAIL   Вверх
jorikdima
Дата 5.3.2010, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 18.1.2008
Где: Там, где Зенит

Репутация: нет
Всего: нет



Посмотрите хелп матлабав разделе deployment
PM MAIL   Вверх
lumenxp
Дата 11.4.2010, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 7.4.2010

Репутация: нет
Всего: нет



В Visual Studio 2008 проект - библиотека классов.
Проект имеет ссылку на COM объект «S7PROSIM».
Далее я полученную dll-ку использую в Matlabe
    Команды matlab:
            
Код

NET.addAssembly('D:\S7Simulyator_dll.dll');  
db1 = S7Simulyator_dll.Class1.Connect();  

Листинг рабочего проекта.
Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using S7PROSIMLib;

namespace S7Simulyator_dll
{
    public class Class1
    {
         public static int Connect()
        {
            S7ProSimClass ps = new S7ProSimClass();
            ps.Connect();
            ps.SetState("RUN_P");
            return 2;
         }
        
    }
}

Как видно – пришлось немного извратиться, для того что бы Matlab увидел метод.
Как сделать так что бы Matlab видел и “private void WriteBit”
т.е. следующая конструкция
Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using S7PROSIMLib;

namespace S7Simulyator_dll
{
    public class Class1
    private object vData;
    {
         private void Connect()
        {
            S7ProSimClass ps = new S7ProSimClass();
            ps.Connect();
            ps.SetState("RUN_P");
            
         }
      private void WriteBit()
        {
bool m_bBoolIn = true;
vData = m_bBoolIn;
ps.WriteInputPoint(0, 1, ref vData);
         }
    }
}



Это сообщение отредактировал(а) lumenxp - 11.4.2010, 20:42
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Добро пожаловать в раздел "Другие языки" форума Vingrad!

Void
Void

Раздел посвящён различным языкам программирования, для которых (в силу невысокой популярности) нет отдельного раздела (GPSS, Lua, MATLAB, Ada, Forth, Smalltalk, Tcl, REXX, AWK и др.)

  • Обязательно следуйте правилам Форума.
  • Пожалуйста, прочитайте и следуйте рекомендациям по работе в разделе и навигации по Форуму.
  • Для вставки текстов исходных кодов используйте подсветку синтаксиса из выплывающего списка Код в форме ответа. Если Ваш язык в списке не представлен, то используйте тег: [code=ваш_язык]код[/code], например, [code=ada]код[/code]. Если в будущем подсветка синтаксиса для указанного языка будет реализована, исходный код преобразится.
  • Помните, один вопрос - одна тема.

Приятного времяпрепровождения! С уважением, Void, kemiisto .

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Другие языки | Следующая тема »


 




[ Время генерации скрипта: 0.0680 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.