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


Чего не хватает в программе?

Вы не вошли.

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

Юрий
06.05.2011 14:43:56
#1

Гость

Чего не хватает в программе?

Набросал такую программку в C++ Builder. lguids.cpp и create.cpp добавил в проект. Однако напряжения не выводятся. Пожалуста, подскажите, что еще нужно добавить, чтобы можно было получать на выходе напряжения 1,2,3,4 вольт?

#include <vcl.h>
#include <windows.h>
#include <stdio.h>
#include <stdint.h>
#include <conio.h>
#include <clocale>
#include <iostream>
#include <objbase.h>
#include <math.h>

#include <assert.h>

#pragma hdrstop

#include "C://DIP//include//ioctl.h"
#include "C://DIP//include//ifc_ldev.h"
#include "C://DIP//include//create.h"
#include "C://DIP//include//pcicmd.h"
#include "C://DIP//include//791cmd.h"

#include "Unit1.h"
IDaqLDevice* pI;
//-- -------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//-------------------------------------------------------
bool DacAsyncOutCode(int16_t u1Code, int16_t u2Code)
{
ASYNC_PAR pp;

pp.s_Type = L_ASYNC_DAC_OUT;
pp.Chn[0] = 1;
pp.Chn[1] = 1;
pp.Data[0] = u1Code;
pp.Data[1] = u2Code;
return true;
};
//------------------------------------------------------
bool DacAsyncOutV(double u1V, double u2V)
{

USHORT u1 = u1V / 5.0 * 0x7ff;
USHORT u2 = u2V / 5.0 * 0x7ff;
DacAsyncOutCode(u1, u2);
return true;
};
//-- -------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
ULONG slot = 0;
PLATA_DESCR_L791 pd;
// Загрузка библиотеки и инициализация интерфейса
Label1->Caption="Load library"  ;
CallCreateInstance("lcomp.dll");
Label1->Caption="Call CreateInstance";
LUnknown* pIUnknown = CreateInstance(slot);
if(pIUnknown == NULL) { Label1->Caption="Call CreateInstance FAILED"; }
Label1->Caption="Get IDaqLDevice interface";

HRESULT hr = pIUnknown->QueryInterface(IID_ILDEV,(void**)&pI);
if(!SUCCEEDED(hr)) { Label1->Caption="Get IDaqLDevice interface FAILED"; }
pIUnknown->Release();
Label1->Caption="IDaqLDevice get success";
// Начало работы с платой
pI->OpenLDevice();

pI->LoadBios("l791");
pI->ReadPlataDescr(&pd);
}
//-- -------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
DacAsyncOutV(1,1);       
}
//-- -------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
DacAsyncOutV(2,2);       
}
//-- -------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)
{
DacAsyncOutV(3,3);       
}
//-- -------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)
{
DacAsyncOutV(4,4);
}
//-- -------------------------------------------------------------------------

void __fastcall TForm1::Button5Click(TObject *Sender)
{
   // Завершение работы
pI->CloseLDevice();
// Закрытие интерфейса
pI->Release();     
}
//-- -------------------------------------------------------------------------

06.05.2011 15:12:47
#2

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,495

Re: Чего не хватает в программе?

У Вас пропущен вызов функции IoAsync:

//-----------------------------------------------
bool DacAsyncOutCode(int16_t u1Code, int16_t u2Code)
{
ASYNC_PAR pp;

pp.s_Type = L_ASYNC_DAC_OUT;
pp.Chn[0] = 1;
pp.Chn[1] = 1;
pp.Data[0] = u1Code;
pp.Data[1] = u2Code;

if(pI->IoAsync(&pp) == L_SUCCESS) return true;
else return false;
};