Меню

+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Страницы 1
Тема закрыта
|
||||
|
PCI плата!Доброго времени суток, L-CARD! Приобрел плату L-780M. Очень доволен ей, попробовал съем информации с помощью L-Graph I и LGraph2, все работает отлично и АЦП и ЦАП! Теперь к основному! Начал писать свою программу для съема данных с платы (С++ Builder). Подключил файлы: "ioctl.h", "ifc_ldev.h", "create.h","791cmd.h", "pcicmd.h", как показало в примере l7xx.tst! Загрузил библиотеку, создал виртуальный слот,получил указатель на интерфейс! Все прошло успешно. Все параметры платы читаются! Теперь к основному: Почему-то не идут данные с платы, как мне кажется! *sync по нулям, а data выдает "безумные" значение! Листинг:
#include <vcl.h>
#include "Unit1.h" #include "L-780//ioctl.h"
//-------------------
IDaqLDevice* pI; //Указатель на интерфейс
USHORT IrqStep = 1024;//777-777%7; // половинка буфера кратная числу каналов
HANDLE hThread;
ULONG WINAPI ServiceThread(PVOID /*Context*/)
ULONG halfbuffer = IrqStep*pages/2; // Собираем половинками кольцевого буфера
//-------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
//Создание виртуального слота
//Получение указателя на интерфейс
if(SUCCEEDED(hr)) {
pI->OpenLDevice();
SLOT_PAR sl;
//Параметры платы
ADC_PAR adcPar;
pI->FillDAQparameters(&adcPar.t1); Memo2->Lines->Add(tm);
Memo2->Lines->Add(""); pI->SetParametersStream(&adcPar.t1, &tm, (void **)&data, (void **)&sync,L_STREAM_ADC); Memo2->Lines->Add(""); Memo2->Lines->Add(tm);
hFile=CreateFile("data.dat",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_WRITE,
if(hFile==INVALID_HANDLE_VALUE){ MessageBox(0,"File open error","Error",MB_OK|MB_ICONERROR);} hMap=CreateFileMapping(hFile,NULL,PAGE_READWRITE,0,fsize*2,NULL); if(hMap==NULL){MessageBox(0,"File open error","Error",MB_OK|MB_ICONERROR);} fdata=(WORD *)MapViewOfFile(hMap,FILE_MAP_WRITE,0,0,0); complete=0; pI->EnableCorrection();
// Запускаем сбор в драйвере
/*
Не подскажите, м.б. я где-то лоханулся и что-то не вызвал (или я идиот Поток запускается, а дальше все ... создается пустой *.dat файл! Или с параметрами нужно поиграться (частота сбора, интервал между кадрами, буфером и т.д.) Это по поводу АЦП Теперь по поводу ЦАП: Листинг:
#include <vcl.h>
#include "Unit1.h"
#include <vcl.h>
#include <assert.h>
ULONG *sync, *sync1; //-------------
pI->LoadBios("l780");
Label2->Caption = pd.t2.BrdName ;
DAC_PAR dacPar;
pI->FillDAQparameters(&dacPar.t2); ULONG *data, *data1;
}
// Запускаем сбор в драйвере
USHORT u1 = 2 / 5.0 * 0x7ff;
ASYNC_PAR pp; pp.s_Type = L_ASYNC_DAC_OUT;
pI->IoAsync(&pp);
//------------- Здесь то где я мог ошибиться? |
|||
|
||||
|
Re: PCI плата!я думаю loadbios не прошел...файла биоса наверное нет рядом с exe... |
|||
|
||||
|
Re: PCI плата!Блин, вот я <е****>!
|
|||
|
||||
|
Re: PCI плата!По поводу ЦАП
|
|||
|
||||
|
Re: PCI плата!для биоса путь нужноуказывать в LoadBios. класть куда угодно. Да, два раза вызывать... |
|||
|
||||
|
Re: PCI плата!Ув. Poul! Хотел бы уточнить некоторые нюансы с АЦП кодом и его переводом в Вольты В документации к плате написано, что пределы АЦП кодов от -8000 до +8000, а на плате L-780M пределы АЦП, как я понял от -5 В до +5 В. Значит, что бы перевести коды АЦП в Вольты нужно всего навсего КОД АЦП разделить на 1600? Насколько корректен данных подход при переводе кодов АЦП в Вольты? Практика показывает незначительные расхождения (подавалось переменное напряжение) или это связано с задержками ОС (имеется ввиду, задержка приема данных из кольцевого буфера)? |
|||
|
||||
|
Re: PCI плата!В дополнение хотелось прояснить еще один момент! В программе LGraph2 при подаче напряжения на ЦАП +5В сигнал инвертируется, становится равным отрицательным (в районе -1,2 : -1,7 В), а при подаче +4,99 Становится равным +4,99! Как это можно устранить или подавать просто максимальный код АЦП 4192 (по моему), что бы получить +5В
|
|||
|
||||
|
Re: PCI плата!корректен. там есть еще коррекция через функцию EbableCorrection. C практикой непонятно. Если данные собраны и просчитаны то совпадать должно. Большие числа это отрицательные значения. кольцевой буфер надо считать типом данных SHORT. |
Страницы 1
Тема закрыта