Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


не ясна функция SOFT_MEMORY_START

Вы не вошли.

 Поиск | Регистрация | Вход 

Fer
22.04.2005 13:00:56
#1

Гость

не ясна функция SOFT_MEMORY_START

Программирую E-330
Nch=32;
int Chan[32]={0,1,2... итд до 31}
int Data32[32];
SET_SOFT_PARM_E330(Nch,Chan);
SOFT_MEMORY_START(Nch*2,Chan,Nch,freq,0,0,1);
if(TEST_FOR_INPUT_END())
{
      GET_INPUT_DATA(Data32,Nch*2);
}
если Nch не умножать на 2 то заполняются только первые 16 каналов при запросе 32х, или 8 при запросе 16. Почему так? Почему я должен запрашивать 2 кадра? Чтобы получать заполннеыми все 32 элемента массива.
И ещё - загадочные слова из документа lcard_ad.doc
"Число вводимых отсчетов в формате четырехбайтного целого числа.  Внимание !!! Его необходимо передать преобразованным по формуле :  N=0x7fffffff-Otschet; где Otschet -> число вводимых отсчетов (т.е. число вводимых аналоговых каналов, умноженное на число вводимых кадров)."
В примерах там стоит просто умножение двух произвольных чисел без преобразования...
или нужно делать то самое преобразование? Типа: (С++)
(__int32)(0x7fffffff-(32*1))
И как вообще правильно?
Очень жду ответа

22.04.2005 14:33:19
#2

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: не ясна функция SOFT_MEMORY_START

если int -32 битный то будут глюки. Данные 16 битные. из  7fffffff вычитать не надо- оно само вычитается.
!!!! short Data32;
SET_SOFT_PARAM вызывать не надо - он внутри вызывается...
Ждать надо в цикле до готовности...

Fer
25.04.2005 10:50:20
#3

Гость

Re: не ясна функция SOFT_MEMORY_START

что все данные 16 битные?????
и массив интовый с номерами каналов?????
это visual C++ 6.0 - тут же всё по умолчанию 32х
Вообщем всё обозначить как __int16 ???

25.04.2005 11:29:41
#4

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: не ясна функция SOFT_MEMORY_START

да 16 битовый. данные и номера каналов. да как int16

Fer
25.04.2005 13:43:21
#5

Гость

Re: не ясна функция SOFT_MEMORY_START

а вот функция GET_INPUT_DATA хочет вот такой прототип:
typedef void (WINAPI *GET_INPUT_DATA) (__int16 *Data, int Npoint);
и ни как не typedef void (WINAPI *GET_INPUT_DATA) (__int16 *Data, __int16 Npoint);
если второй вариант то программа сомазакрывается.
Все каналы кроме первого дают -1 на выходе, а первый через такт -180 -1. Глюк канала? или неправильно запрограммирован?

25.04.2005 16:50:10
#6

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: не ясна функция SOFT_MEMORY_START

дык число точек оно 32 битное...

Fer
27.04.2005 12:03:52
#7

Гость

Re: не ясна функция SOFT_MEMORY_START

Вообщем проясняется...
железо в плате 16 битное. А софт компилировался на 32х битном компиляоре. В итоге - та часть что к железу - 16ти битная - остальное 32х..
Ладно - ковыряем дальше.
Спасибо.

Fer
19.05.2005 13:40:54
#8

Гость

Re: не ясна функция SOFT_MEMORY_START

Так...
что то я перестал понимать вообще что либо..
в файле e330.doc - Модуль  E-330 Техническое описание и инструкция по эксплуатации ДЛИЖ 411618.007 ТО 1996 г.
указано что:
0.0.0.1.Старт ввода во внутреннюю память (SOFT_MEMORY_START())
Формат вызова
void SOFT_MEMORY_START();
Назначение
Запускает функцию ввода в соответствии с параметрами, установленными при помощи функции SOFT_MEMORY_PREPARE().
Параметры
Отсутствуют
документ lcard_ad.doc - Пакет программного обеспечения L-Win для плат L-12XX, N-1250, L-1610,  L-305, L-154, L-164, L-264, E-330, LTC, L-1620, L-1211
Версия 1.31
1997 г.

3,13,1 .Базовая функция ввода во внутреннюю память (SOFT_MEMORY_START())
Применимость
Функция реализована для плат серии L-12XX и для E330.
Формат вызова
void SOFT_MEMORY_START(unsigned long Npoint, int *Channels, int Nch, int Rate, int PageNumber, int OffsetNumber, int RestartMode);

и это, кроме того, что кто-то из них 16 битный а кто 32х.
Будьте добры, дайте разъяснения как правильно программировать под E330. Нужен ввод с частотой 256Гц по 32м каналам под win 2000 на Visual C++ 6.0

Вот взял пример:
WORD Data[2000];
WORD Channels[16]={0, 1, 2, 3};
#define MyN  8
#define MyX  10
#define Rate 1000

SOFT_MEMORY_START(MyX*MyN, Channels, MyN, Rate, 0, 0, 0);
    while (!TEST_FOR_INPUT_END());
    GET_INPUT_DATA(Data, MyX*MyN);

Что здесь означают MyX MyN ???
Если в списке каналов их всего 4
А массив для ввода вообще на 2000 значений типа word

19.05.2005 14:01:25
#9

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: не ясна функция SOFT_MEMORY_START

Просто считали 80 точек и все. Если открыть lc_procs.h то размеры однозначно определяются
в 32 битных компиляторах и long и int 32 бита
в 16 битных long -32 int -16
word -16 всегда

Fer
19.05.2005 20:45:02
#10

Гость

Re: не ясна функция SOFT_MEMORY_START

Просто 80..... ну 8 на 10 я могу умножить.
Но не понимаю смысла в этом действе написанном:
4 канала - но массив объявлен на 16
второе - что есть точка?
unsigned long Npoint -
Это число отсчётов на число каналов? Тогда 4канала*1такт = каждый отсчёт с нужной мне частотой я хочу писать в файл... А в примере 8 (каналов то 4...вроде...) умножают на 10 - почему на 10? далее на месте где пишут число каналов стоит MyN=8 - когда в массиве указано 4 канала....
И зачем массив Data делать на 2000 - когда там всего то - то ли 80 то ли 4 канала по word.
Числа расставляют в программу по какому принципу?
В случае 32х каналов мне что - указать MyN=64, MyX=10 И вести запись в файл с частотой меньшей частоты оцифровки в 10 раз, через массив для ввода Data[16000] ?

20.05.2005 09:28:28
#11

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: не ясна функция SOFT_MEMORY_START

Просто так получилось когда то давно лет 7-8 назад... Из одного примера сделали другой и не все поменяли...

Fer
20.05.2005 09:57:00
#12

Гость

Re: не ясна функция SOFT_MEMORY_START

Это я понял..... что тот пример вряд ли после компиляции работать будет..
А правильно то как?
если каналов 32 то MyN=32 и если частота 256 то Rate= 3906 и MyX=1 чтобы оцифрованное сохранять по готовности каждый такт на винт?
И массив Data[32] как я понимаю?
У меня правда и в таком варинате не работает....
на выходе прёт всякая ерунда со значениями явно превышающими 2048 в хаотичном порядке по первым 7 каналам. Может это ещё и из-за выделения функции оцифровки в отдельный поток?

20.05.2005 11:06:57
#13

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: не ясна функция SOFT_MEMORY_START

Можетпротсо отрицательные числа идут, а смтрите как word?

Fer
20.05.2005 11:21:05
#14

Гость

Re: не ясна функция SOFT_MEMORY_START

по каналам:
76
65280
41727
57853
11260
37115
11258
51449
248
248
248
и так далее 248 до 32 канала.....
Если читать 32канала*10 отсчёов то картина аналогичная - первые 8 заполнены числами примерно таких порядоков, а остальные каналы 248 - так все 10 кусков... (((
И кстати массив обозначен как WORD Data[320];
Значит массив не как в примере WORD а __int16 ???

Fer
20.05.2005 11:37:30
#15

Гость

Re: не ясна функция SOFT_MEMORY_START

Одна фигня... с __int16 появляются отрицательные числа на некоторых из первых 8. Дальше те же 248

Fer
20.05.2005 11:52:04
#16

Гость

Re: не ясна функция SOFT_MEMORY_START

А один из нескольких циклов по всем каналам 2048..
Вот красота то....

20.05.2005 12:24:43
#17

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: не ясна функция SOFT_MEMORY_START

Так отрицательные можно. Диапазон то +-. Главное их величина. А в начале при старте переходны процесс а потом некотрый установившийся уровень наверное.... Сигналы то подключены? Лучше все же параметры под себя поставить 4 канала так и задайте 4 канала ну и данных возьмите 4*X точек. и смотрите потом.

Fer
23.05.2005 13:13:29
#18

Гость

Re: не ясна функция SOFT_MEMORY_START

Итак что я выяснил:
всё работает на раз два три:
POWER_AND_PRINTER_E330
SOFT_MEMORY_START
GET_INPUT_DATA
STOP_FUNC_E330
А вся проблема в том, что при выделении трёх нижних функций в отдельный поток они выдают совсем не то, что должны.
Если делать их вне потока, то значения на выходе при не подключённых внешних сигналах и без заземления колебляться: -1 или 248
Теперь вот думаю как управлять процессом оцифровки без потоков...

23.05.2005 14:22:00
#19

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: не ясна функция SOFT_MEMORY_START

Это странно...тк все собирается в память платы... хотя и возмжно тк библиотек очень монстровидная и древняя...

Fer
23.05.2005 14:52:35
#20

Гость

Re: не ясна функция SOFT_MEMORY_START

Посидел ещё немного и узнал вот что:
Всё перестаёт пахать и вне потока, если в функцию
SOFT_MEMORY_START подставить массив с номерами каналов где каналы УКАЗАНЫ.
А вот елси туда подставлять массив не инициализированный, то на выходе или -1 или -257
Я снова ничего не понимаю.

23.05.2005 15:37:58
#21

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: не ясна функция SOFT_MEMORY_START

Код полный пришлите, может опять что-то в размерности напутали int16 и int32?
В примере teste330.cpp все типы данных правильные.

Fer
07.06.2005 11:36:47
#22

Гость

Re: не ясна функция SOFT_MEMORY_START

Итак - спасибо Полу!!!
Секрет этой функции для модуля E330 (???) разгадан.
последний параметр в функции SOFT_MEMORY_START должен быть 0 (однократный запуск)
Затем после готовности и сбора данных требуется перезапуск функцией SOFT_MEMORY_RESTART

Fer
15.06.2005 12:24:55
#23

Гость

Re: не ясна функция SOFT_MEMORY_START

Здравствуйте Пол. по-видимому остался ещё один секрет функции soft_memory_start
В документации сказано: Базовая функция ввода во внутреннюю память (SOFT_MEMORY_START())
Применимость
Функция реализована для плат серии L-12XX и для E330.

Рестарт, и TEST_FOR_INPUT_END GET_INPUT_DATA
так же реализоавны для плат 12хх

И как я понял, елис програма работает с E330 этими же функицями она должна и работать с 1250.
Нужно только загрузить другой биос.
А вот по факту не работает. Консольная программа из примеров с опросом 4х каналов просто виснет,
а то, что было модифицровано от платы E330 - виснет в зависимости от компьютера по-разному.
В чём исктаь ошибку?
Жду ответа.
Спасибо

15.06.2005 15:31:57
#24

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: не ясна функция SOFT_MEMORY_START

а должна... там внутри case по разным платам..ю

15.06.2005 15:32:28
#25

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: не ясна функция SOFT_MEMORY_START

в смысле работать