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


Проблемы с LC-101

Вы не вошли.

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

Serj
23.06.2004 15:50:31
#1

Гость

Проблемы с LC-101

Я пытаюсь запрограммировать ввод данных с модуля LC-101 системы LTC. Программа пишется под Win98, компилятор - Visual C++ 6.0.
Данный кусок программы:
int        Slot301=6;
int        Slot101=5;
int        iChannels;   
unsigned short    *Channels=new unsigned short[32];
int        iPoints=1000;
unsigned short    *iData=new unsigned short[16000];
//
iChannels=2;
Channels[0]=Slot101;   
Channels[2]=Slot301;
Channels[1]=CREATE_CHANNEL_LC101(0,2,0);
Channels[3]=CREATE_CHANNEL_LC101(1,1,0);
//
SOFT_START_CC();
SOFT_CC(Slot301, iChannels, Channels,  iPoints, 100, iData);
SOFT_STOP_CC();

возвращает мне данные два раза считанные с 0-го канала при 0-м коэффициенте. Как вроде Channels[1]=0 и Channels[3]=0. Но я это проверял в режиме трассировки-там все нормально. Не подскажите, где может сидеть ошибка?

bkl
23.06.2004 15:53:08
#2

Гость

Re: Проблемы с LC-101

Ошибка здесь: Channels[2]=Slot301;
должно быть: Channels[2]=Slot101;

Да, и усиления разные (2 и 1)

Serj
23.06.2004 16:04:49
#3

Гость

Re: Проблемы с LC-101

Да, там опечаточка возникла. А усиления разве на всех каналах одинаковые должны быть?
Я сделал одинаковыми коэффициенты и попробовал еще таким способом почитать:
int        l_iRes1;
int        l_iRes2;
l_iRes1=SAMPLE_LC301(Slot301, Slot101, CREATE_CHANNEL_LC101(0,1,0));
l_iRes2=SAMPLE_LC301(Slot301, Slot101, CREATE_CHANNEL_LC101(1,1,0));
Результат и в том и в другом случае одинаков: читается только с 0-го канала при 0-м коэффициенте.

bkl
23.06.2004 16:48:53
#4

Гость

Re: Проблемы с LC-101

А READ_CALIBR_CC, SET_CALIBR_MODE вызваны?

Serj
23.06.2004 17:26:58
#5

Гость

Re: Проблемы с LC-101

Нет не вызваны. У меня LC-301 без функции каллибровки.

Serj
24.06.2004 09:51:19
#6

Гость

Re: Проблемы с LC-101

Обнаружил интересное явление. После запуска тестовой программки с компакт-диска мой кусок программы то же работает корректно.
Чем это можно объяснить?

bkl
24.06.2004 10:28:28
#7

Гость

Re: Проблемы с LC-101

Вызывайте READ_CALIBR_CC, SET_CALIBR_MODE_CC! Без этого никуда. Тестовая программа сделала это за вас ;-))  Это и есть /'интересное/' явление.

LC-301C (LC-301 c функцией каллибровки) или LC-301 (LC-301 без функции калибровки) - это совсем иное. /'C/' означает, что на плате есть прецезион. АЦП и ЦАП, которые некот. пользователи используют для продвинутых целей (нештатных)

Serj
24.06.2004 15:43:41
#8

Гость

Re: Проблемы с LC-101

Использование функций READ_CALIBR_CC и SET_CALIBR_MODE_CC не решило проблему.
Обнаружилось еще одно "интересное" явление. Если систему после запуска тестовой программы выключить на некоторое время, а затем включить - то моя программка на ней работает, а если она простоит выключенная больше часа - то нет.
Как выдумаете, чем это вызвано?

bkl
24.06.2004 17:09:27
#9

Гость

Re: Проблемы с LC-101

Пришлите текст на support@lcard.ru

Вот пример работающей программы:

#include "lcard_ad.h"
#include <stdio.h>
#include <conio.h>

static short Buffer[8192];
static int Slot, Slot301;
static int LFifo= 4096;  // or 4096, 4096*2= 8192

//  BIOS Auto-Loading supposed in this example

void main(void) {
          int    Nch= 4, j;
          WORD   Channels[32], mcode;
          int    xRate;

          xRate= 100*Nch;
         
           READ_CALIBR_CC();
           SET_CALIBR_MODE_CC(-1);

  Slot=-1;
  Slot301= -1;
  for(j=0; j<16; j++) {
     mcode= READ_FLASH_CC(j, 0);
     if(mcode==101) Slot= j;
     if(mcode==301) Slot301= j;
  };

  if(Slot==-1 || Slot301==-1) {
    printf("LC-101 or LC-301 not found//n");
    return;
  }
  printf("Found LC-101 at %d slot, LC-301 at %d slot//n", Slot, Slot301);

          for (j=0; j<Nch; j++) {
            Channels[j*2]=Slot;
            Channels[j*2+1]=CREATE_CHANNEL_LC101(j, 0, 0);
           };

           CONFIG_FIFO_CC(2, 2);
           SET_FIFO_SIZE_CC(2*LFifo);
           SOFT_CONFIG_CC(Slot301, Nch, Channels, xRate);
           FAST_SOFT_START_CC();

            while(!kbhit()) {
              GET_FAST_SOFT_DATA((WORD *)Buffer, LFifo);
              printf("%d %d %d %d %d %d %d %d//n",
                Buffer[0], Buffer[1], Buffer[2], Buffer[3],
                Buffer[4], Buffer[5], Buffer[6], Buffer[7]);
            };
            SOFT_STOP_CC();
}

Serj
25.06.2004 13:31:52
#10

Гость

Re: Проблемы с LC-101

bkl, вы получили мою почту?

bkl
25.06.2004 13:41:42
#11

Гость

Re: Проблемы с LC-101

Да.
Но файлы .txt ни о чем не говорят.
Пробуйте пример выше.

Serj
26.06.2004 22:38:51
#12

Гость

Re: Проблемы с LC-101

bkl, огромное вам спасибо за помощь! Все заработало. Прошу прощения, что беспокоил вас из-за такой ерунды.
Сообщите адрес, куда выслать пиво!

bkl
28.06.2004 10:51:17
#13

Гость

Re: Проблемы с LC-101

Не за что. Успехов!