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


пользовательская программа под L791

Вы не вошли.

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

pups
06.03.2013 14:51:16
#1

Гость

пользовательская программа под L791

вот текст программы:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <objbase.h>
#include <fstream.h>
#include <iomanip.h>

#include <math.h>
#include <Math.hpp>
#include <stdlib.h>

#include "include//ioctl.h"
#include "include//ifc_ldev.h"
#include "include//create.h"
#include "include//791cmd.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

int i, kta=0, ktsa=0, kp, n, PointCount;
double *adc_data_2, *adc_data=NULL, *dac_data=NULL, Chastota_global;
ULONG   *fdata, *fdata1;

long fsize,k;
ULONG *data, *data1;
ULONG *sync, *sync1;
ULONG status;
USHORT complete;
HANDLE hThread;
ULONG Tid;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void trace(const char* msg)
{
        Form1->Memo1->Lines->Append(msg);
}
void __fastcall TForm1::Button5Click(TObject *Sender)
{
        Series1->Clear();
        Form1->Memo1->Clear();
        Form1->Memo2->Clear();

        ADC_PAR ap;     
        PLATA_DESCR_L791 pd;   
        SLOT_PAR sl;     
        ULONG tm;             
        ULONG slot = 0;   
        CallCreateInstance("lcomp.dll");         
        LUnknown* pIUnknown = CreateInstance(slot);
        if(pIUnknown == NULL) { Form1->Memo1->Lines->Append("CallCreateInstance failed");}
        trace("Get IDaqLDevice interface");
        IDaqLDevice* pI;
        HRESULT hr = pIUnknown->QueryInterface(IID_ILDEV,(void**)&pI);
        if(!SUCCEEDED(hr)) { trace("Get IDaqLDevice failed");}
        trace("IDaqLDevice get success");
        trace("Free IUnknown");
        pIUnknown->Release();

        printf("/n handle %x",pI->OpenLDevice());
        printf("/n plata test %d",pI->PlataTest());

        pI->ReadPlataDescr(&pd);
        float B=pd.KoefADC[0];
        float A=pd.KoefADC[8];
        pI->GetSlotParam(&sl);

        ap.t2.s_Type = L_ADC_PARAM;
        ap.t2.AutoInit = 1;       
        ap.t2.dRate = 0.1;       
        ap.t2.dKadr = 0.0;   

        ap.t2.SynchroType = 0;   
        ap.t2.SynchroSrc = 0;
        float k;
        ap.t2.NCh = 1;

        if (RadioGroup1->ItemIndex==0){
                ap.t2.Chn[0] = 0x00;
                k=8191/10;
        }
        if (RadioGroup1->ItemIndex==1){
                ap.t2.Chn[0] = 0x40;
                k=8191/5;
        }
        if (RadioGroup1->ItemIndex==2){
                ap.t2.Chn[0] = 0x80;
                k=8191/2.5;
        }
        if (RadioGroup1->ItemIndex==3){
                ap.t2.Chn[0] = 0xC0;
                k=8191/1.25;
        }
        if (RadioGroup1->ItemIndex==4){
                ap.t2.Chn[0] = 0x100;
                k=8191/0.625;
        }
        if (RadioGroup1->ItemIndex==5){
                ap.t2.Chn[0] = 0x140;
                k=8191/0.312;
        }
        if (RadioGroup1->ItemIndex==6){
                ap.t2.Chn[0] = 0x180;
                k=8191/0.156;
        }
        if (RadioGroup1->ItemIndex==7){
                ap.t2.Chn[0] = 0x140;
                k=8191/0.078;
        }

        ap.t2.FIFO = 1;
        int ktsa=100;   
        ap.t2.IrqStep = ktsa; 
        int   kp = 200;   
        ap.t2.Pages = kp;
        kta=ktsa*kp;
        ap.t2.IrqEna =  0x8000000B;
        ap.t2.AdcEna = 1;
        pI->FillDAQparameters(&ap.t2);
        tm = 12000;
        pI->RequestBufferStream(&tm,L_STREAM_ADC);
        pI->SetParametersStream(&ap.t2, &tm, (void**)&data, (void**)&sync,L_STREAM_ADC);

        Form1->Memo1->Lines->Append(FloatToStr(A));
        Form1->Memo1->Lines->Append(FloatToStr(B));
        ////////////////////////////////////////////////////////////////

        pI->InitStartLDevice();
        complete=0;
        status=pI->StartLDevice();
        if(adc_data!=NULL)
        delete[] adc_data;
        adc_data= new double[kta];
        Sleep(kta*1+100);
        for(i=0;i<kta;i++)
        {
                USHORT Buf_short;
                Buf_short = (data[i]&0x3FFF)<<2;
                adc_data[i] = *((float*)(&Buf_short))/4;
                adc_data[i] = ((adc_data[i])/k);
                Form1->Memo2->Lines->Append(FloatToStr(ceil(adc_data[i]*1000)/1000)+" / "+IntToStr(i));
                Series1->AddXY(i,(adc_data[i]),"", clBlue);             
        }
        pI->StopLDevice();
        pI->CloseLDevice();
        pI->Release();
        CloseHandle(hThread);
        k=0;
        trace("Exit");
}

имеется термопара, запускаю программу, опускаю термопару в кипяток, программа выдает 20 тысяч одинаковых значений. то есть как я понял из ацп данные не передаются в ОП компа. подскажите пожалуйста какие ошибки в коде могут привести к этому. заранее спасибо!

06.03.2013 15:23:49
#2

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

Re: пользовательская программа под L791

а если источник сигнала не термопара? Какие значения с АЦП если просто  data[i]&0xFFFF смотреть?

pups
07.03.2013 11:22:43
#3

Гость

Re: пользовательская программа под L791

data[i]&0xFFFF не помогло. другой датчик подключить возможности нет. термопара рабочая, LGraph с нее адекватный сигнал выводит

07.03.2013 11:54:17
#4

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

Re: пользовательская программа под L791

тогда примеры пробуйте запускать. и смотреть что они в файл собирают..

pups
07.03.2013 12:07:00
#5

Гость

Re: пользовательская программа под L791

BuildL791.tst этот пример?

07.03.2013 12:15:52
#6

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

Re: пользовательская программа под L791

l791.tst в файл сохраняет l791.osc рисует на экран.

pups
07.03.2013 13:39:55
#7

Гость

Re: пользовательская программа под L791

client.exe запускаю из Release_x86, никакие данные не собирает. или надо скомпилить срр файл из L791.TST ?

07.03.2013 13:49:36
#8

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

Re: пользовательская программа под L791

а чего пишет? client 0 запускаете? а файл dat появляется?

pups
10.03.2013 21:59:45
#9

Гость

Re: пользовательская программа под L791

пишет

C:/>"Program Files/L-Card/LIBRARY/L791.TST/Release_x86/client.exe"
L-791 simple example.
(c) 2010 L-Card.
Usage:
client <slot number>
<slot number> - 0... (if one board installed - 0);

как запустить client 0 ? это надо понимать канал 0 ?
файл dat не появляется

11.03.2013 10:57:54
#10

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

Re: пользовательская программа под L791

в командной строке это вводить надо. 0 это параметр виртуальный слот. это если плата одна.

pups
11.03.2013 11:06:41
#11

Гость

Re: пользовательская программа под L791

то есть выполнить в командной строке запрос:
C:/>"Program Files/L-Card/LIBRARY/L791.TST/Release_x86/client.exe/client 0" ?

11.03.2013 11:35:11
#12

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

Re: пользовательская программа под L791

C:/>"Program Files/L-Card/LIBRARY/L791.TST/Release_x86/client.exe 0

pups
11.03.2013 11:40:02
#13

Гость

Re: пользовательская программа под L791

вот что выдал
""Program Files/L-Card/LIBRARY/L791.TST/Release_x86/client.exe 0"" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

11.03.2013 11:46:38
#14

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

Re: пользовательская программа под L791

Попробуйте тогда так...
В проводнике найдите файл и создайте ярлык для него.  откройте свойства ярлыка и добавте 0 к строке запуска...

pups
11.03.2013 11:57:12
#15

Гость

Re: пользовательская программа под L791

ошибка:
Имя конечного файла "C:/Program Files/L-Card/LIBRARY/L791.TST/Release_x86/client.exe 0" задано неправильно. Проверьте правильность указанного пути и имени файла.