Помогите разобраться с CIN

ActiveX, .NET, DLL
Avant_Guard
beginner
beginner
Сообщения: 11
Зарегистрирован: 12 фев 2013, 09:46
Версия LabVIEW: 9.0
Контактная информация:

Re: Помогите разобраться с CIN

Сообщение Avant_Guard »

Спасибо за подробный мануал. Сижу делаю, только мало что понятно все равно, потому что с текстовыми языками программирования никогда дела не имел.
mzu2006 писал(а):Теперь по сути:
0. Не рассказано с какого проекта начать. Win32->DLL->Additional Settings->Empty project
1 Нужно осветить вопрос как туда включить код, сгенерированный LabVIEW по CIN->RMB->Generate C Code
0. Да действительно, долго искал какой проект создать.
1. Непонятно как туда включить код *.c сгенерированный в LabView.
Поясните пожалуйста по пункту 1...
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Помогите разобраться с CIN

Сообщение mzu2006 »

Будет удобнее если Вы выложите кусок Вашего LV кода и сгенерированный сишный файл.
Avant_Guard
beginner
beginner
Сообщения: 11
Зарегистрирован: 12 фев 2013, 09:46
Версия LabVIEW: 9.0
Контактная информация:

Re: Помогите разобраться с CIN

Сообщение Avant_Guard »

Похоже на то! Буду очень благодарен за помощь!
Вложения
ReadKadr.rar
(14.98 КБ) 182 скачивания
Avant_Guard
beginner
beginner
Сообщения: 11
Зарегистрирован: 12 фев 2013, 09:46
Версия LabVIEW: 9.0
Контактная информация:

Re: Помогите разобраться с CIN

Сообщение Avant_Guard »

Извиняюсь, там наверное некоторых файлов хватать не будет
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Помогите разобраться с CIN

Сообщение dadreamer »

Avant_Guard писал(а):1. Непонятно как туда включить код *.c сгенерированный в LabView.
Поясните пожалуйста по пункту 1...
После подключения всех необходимых входов/выходов щелкаете правой кнопкой мыши по CIN'у и выбираете пункт, отмеченный на рисунке ниже. Потом открываете получившийся файл и вставляете его содержимое в свой проект на Си. Приведу пример кода:

Код: Выделить всё

/* CIN source file */

#include "extcode.h"

/* lv_prolog.h and lv_epilog.h set up the correct alignment for LabVIEW data. */
#include "lv_prolog.h"

/* Typedefs */

typedef struct {
	LVBoolean status;
	int32 code;
	LStrHandle source;
	} TD1;

#include "lv_epilog.h"

MgErr CINRun(int32 *Num1, int32 *Num2, int32 *arg1, TD1 *errorIn);

MgErr CINRun(int32 *Num1, int32 *Num2, int32 *arg1, TD1 *errorIn)
	{

	/* Insert code here */

	return noErr;
	}
Там, где написано /* Insert code here */, пишете свой код, который должен выполняться при запуске. Можете добавить для многопоточности это:

Код: Выделить всё

CIN MgErr CINProperties(int32 query, void *data)
    {
    switch (query) {
        case kCINIsReentrant:
            *(Bool32 *)data = TRUE;
            return noErr;
        }
    return mgNotSupported;
    }
Вообще, в мануалах, которые уже здесь упоминались, всё это есть (правда, по-английски) и не только это.

update: Вижу, уже сами разобрались, судя по вложенному коду... Объявления функций лучше включить в блок extern "C" { ... }. Вместо return noErr; наверное надо возвращать ошибку, произошедшую в том или ином случае, а отсутствие ошибки возвращать в самом конце, при успешном выполнении всех функций. И зачем такие сложные кластеры с таким большим количеством элементов? Может, как-то упростить? В LabVIEW-то ими управлять просто, а в Си придётся помучаться. Ещё зря удалили #include "lv_prolog.h" и #include "lv_epilog.h", они обеспечивают правильное выравнивание структур, чтобы LabVIEW потом "понял", как следует распознавать данные.
Вложения
Без имени-3.jpg
Без имени-3.jpg (63.31 КБ) 5626 просмотров
Avant_Guard
beginner
beginner
Сообщения: 11
Зарегистрирован: 12 фев 2013, 09:46
Версия LabVIEW: 9.0
Контактная информация:

Re: Помогите разобраться с CIN

Сообщение Avant_Guard »

update: Вижу, уже сами разобрались, судя по вложенному коду...
Ну да, я писал что по образу и подобию некоторых примеров которые у меня были подготовил *.c файл для изготовления *.lsb . Пытался скомпилировать с помощью вашего мануала, настроил проект в VisualStudio 2005 . Я ожидал, что на выходе мною будет получен это lsb файл. НО к сожалению компилируется с ошибками, и ничего так пока и не вышло. Завтра буду пробовать еще , внесу изменения в мой код с учетом ваших замечаний.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Помогите разобраться с CIN

Сообщение dadreamer »

Avant_Guard

На какие именно строки ругается? Попробуйте построчно комментировать секции кода и таким образом найдете ошибку. Также полезно иногда начать с чего-то простого, например открытие устройства, создание файла, подключение к плате и т.п., то есть инициализация. А затем добавлять операторы и проверять, как работает программа.

Проект в :labview: ругается на отсутствие wrRtusbapi.dll, а скомпилировать файл ReadKadr.c у меня тоже не получается. Если пришлёте все файлы, то можно будет попробовать.

"extcode.h" самым последним подключайте.
Avant_Guard
beginner
beginner
Сообщения: 11
Зарегистрирован: 12 фев 2013, 09:46
Версия LabVIEW: 9.0
Контактная информация:

Re: Помогите разобраться с CIN

Сообщение Avant_Guard »

dadreamer писал(а):Avant_Guard
1. ...Также полезно иногда начать с чего-то простого, например открытие устройства, создание файла, подключение к плате и т.п., то есть инициализация. А затем добавлять операторы и проверять, как работает программа.
2. Проект в :labview: ругается на отсутствие wrRtusbapi.dll, а скомпилировать файл ReadKadr.c у меня тоже не получается. Если пришлёте все файлы, то можно будет попробовать.
"extcode.h" самым последним подключайте.
1. Я думал сначала что просто получится, ;-( не вдаваясь в подробности! Но не выходит...
2. Приложил недостающие файлы, вроде как все.
Вложения
DLL.rar
(70.17 КБ) 189 скачиваний
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Помогите разобраться с CIN

Сообщение dadreamer »

Avant_Guard писал(а):Приложил недостающие файлы, вроде как все.
На самом деле не всё, надо было ещё прилинковать к проекту wrRtusbapi.lib. Теперь компилируется, можете доделать остальное, обработку ошибок и т.д. Посмотрел ещё исходники CIN'ов и примеры программирования для USB3000 в C и LabVIEW, у них там везде такие большие кластеры, на мой взгляд громоздко и неудобно. Да и так, есть к чему придраться местами. Но раз работает, то пусть так и остаётся :)
Вложения
RK.rar
ReadKadr
(2.29 МБ) 201 скачивание
Avant_Guard
beginner
beginner
Сообщения: 11
Зарегистрирован: 12 фев 2013, 09:46
Версия LabVIEW: 9.0
Контактная информация:

Re: Помогите разобраться с CIN

Сообщение Avant_Guard »

Спасибо!
Не знаю как будет работать, буду пробовать на выходных...
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Коммуникация с приложениями»