Розробка програмного забезпечення для збору даних по РСІ-платі з використанням драйверів
Синтаксиси, властивості класів, структур та змінних, що надаються драйвером та приклади їх використання. Запуск утиліти для встановлення та тестування карт розширення Device Manager. Меню для вибору та налаштування карти розширення, обробки інформації.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | украинский |
Дата добавления | 28.01.2016 |
Размер файла | 576,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru//
Размещено на http://www.allbest.ru//
Звіт
з лабораторної роботи
«Розробка програмного забезпечення для збору даних по РСІ-
платі з використанням драйверів»
Мета: Ознайомитися із основними принципами роботи з РСІ- платами збору та обробки інформації для ПК. Отримати навички розробки прикладного програмного забезпечення для обміну даними між зовнішніми пристроями та ПК з використанням драйверів.
Порядок виконання роботи:
Для работи над завданням потрібно:
Ознайомитися із документацією що додається до драйвера пристрою. Розглянути синтаксиси, властивості класів, структур та змінних, що надаються драйвером та приклади їх використання. За замовчуванням до неї можна отримати доступ через меню «Пуск», далі програми, Advantech Automation\Device Manager, або ж C:\Program Files (x86)\Advantech\Adsapi\Manual. програмний плата дані драйвер
Запустити утиліту для встановлення та тестування карт розширення Device Manager (меню «Пуск», програми, Advantech Automation\Device Manager) та ознайомитися з її інтерфейсом та функціями.
Відкрити середовище розробки програмного забезпечення та створити новий проект. Зберегти проект в окрему папку. Для роботи із драйвером пристрою необхідно підключити заголовний файл дравера, котрий доцільно зкопіювати до папки із проектом (знаходиться C:\Program Files (x86)\Advantech\Adsapi\Include ) а також під'єднати бібліотеку драйвера adsapi32bcb.lib (знаходиться C:\Program Files (x86)\Advantech\Adsapi\Lib) для цього у головному меню середовища натиснути Project->Add to project… Програмне забезпечення складатиметься із двох частин. Перша - меню для вибору та налаштування карти розширення, друга - для безпосереднього зчитування аналогового входу та обробки інформації.
Для першої форми необхідно створити наступні об'єкти та події:
TLabel *Label1;
TLabel *Label3;
TLabel *Label4;
TListBox *Dev;
TListBox *Inp;
TListBox *Vol;
TButton *btStart;
TButton *Button2;
void __fastcall FormCreate(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
void __fastcall DevClick(TObject *Sender);
void __fastcall btStartClick(TObject *Sender);
Списки міститимуть назви переліки пристроїв, конфігурацію входів (в залежності від модифікації) та поле для вибору одного із типів уніфікованих синалів, що підтримується конкретним пристроєм. Кнопки керування призначені для ініціалізаації обраного апаратного забезпечення та переходу до другої форми або для виходу з програми. Для реалізації програмного коду нам знадобляться наступні змінні:
const MaxEntries = 255;
long DeviceHandle; // пристрій
DEVLIST DeviceList[MaxEntries + 1]; // *
DEVFEATURES DevFeatures; // **
PT_DeviceGetFeatures ptDevGetFeatures; // *** змінні для
роботи з
PT_AIConfig ptAIConfig; // *** пристроєм через
драйвер
PT_AIGetConfig ptAIGetConfig; // **
DEVCONFIG_AI Devconfig_AI; // *
long ErrCde; // змінні обробкки
char szErrMsg[80]; // помилок
При ініціалізації форми потрібно зчитати список встановлених пристроїв, що підтримуються драйвером:
int i;
short gnNumOfDevices; //кількість пристроїв
short nOutEntries; //список пристроїв
// отримання списку встановлених пристроїв
ErrCde = DRV_DeviceGetList(&DeviceList[0], MaxEntries,
&nOutEntries);
if (ErrCde != 0)
{
DRV_GetErrorMessage(ErrCde, szErrMsg);
Application->MessageBox(szErrMsg, "1_Error!!", MB_OK);
return;
}
// отримання кількості встановлених пристроїв
ErrCde = DRV_DeviceGetNumOfList(&gnNumOfDevices);
if (ErrCde != 0)
{
DRV_GetErrorMessage(ErrCde, szErrMsg);
Application->MessageBox(szErrMsg, "2_Error!!", MB_OK);
return;
}
//заповнюємо таблицю списку пристроїв
for (i = 0; i < gnNumOfDevices; i++)
{
Dev->Items->Add(DeviceList[i].szDeviceName);
}
// деактивуємо списки портів, вхідних сигналів, кнопку
ініціалізації
Inp->Enabled = False;
Vol->Enabled = False;
btStart->Enabled = False;
При виборі пристрою із списку потрібно додати його властивості до інших полів:
int i;
int tempNum;
char tempStr[30];
short nOutEntries;
long dwDeviceNum;
int iMaxSingleChannel;
int iMaxDiffChannel;
Inp->Clear();
Vol->Clear();
//визначення номера пристрою для відкриття із списку
dwDeviceNum
=
DeviceList[Dev-
>ItemIndex].dwDeviceNum;
//відкриття відповідного пристрою
ErrCde
=
DRV_DeviceOpen(dwDeviceNum,
&DeviceHandle);
if (ErrCde != 0)
{
DRV_GetErrorMessage(ErrCde, szErrMsg);
Application->MessageBox(szErrMsg,
"5_Error!!",
MB_OK);
return;
}
// отримання інформації про порти вводу-виводу
ptDevGetFeatures.buffer
=
(LPDEVFEATURES)&DevFeatures;
ptDevGetFeatures.size = sizeof(DEVFEATURES);
ErrCde
=
DRV_DeviceGetFeatures(DeviceHandle,
&ptDevGetFeatures);
if (ErrCde != 0)
{
DRV_GetErrorMessage(ErrCde, szErrMsg);
DRV_DeviceClose((LONG far *)&DeviceHandle);
Application->MessageBox(szErrMsg,
"6_Error!!",
21
MB_OK);
return;
}
ptAIGetConfig.size = sizeof(DEVCONFIG_AI);
ptAIGetConfig.buffer = &Devconfig_AI;
ErrCde
=
DRV_AIGetConfig(DeviceHandle,
&ptAIGetConfig);
if (ErrCde != 0)
{
DRV_GetErrorMessage(ErrCde, szErrMsg);
DRV_DeviceClose((LONG far *)&DeviceHandle);
Application->MessageBox(szErrMsg,
"7_Error!!",
MB_OK);
return;
}
iMaxSingleChannel = DevFeatures.usMaxAISiglChl;
iMaxDiffChannel = DevFeatures.usMaxAIDiffChl;
if ( iMaxSingleChannel > iMaxDiffChannel )
{
tempNum = iMaxSingleChannel;
}
else
{
tempNum = iMaxDiffChannel;
}
if (tempNum > 0)
{
for (i = 0; i < tempNum; i++)
{
strcpy(tempStr, "Chan#");
strcat(tempStr, IntToStr(i).c_str());
Inp->Items->Add(tempStr);
}
Inp->ItemIndex = 0;
Inp->Enabled = True;
}
// додавання інформації про по налаштування вхідного
сигналу
tempNum = DevFeatures.usNumGain;
if (DevFeatures.usNumGain > 0)
{
for (i = 0; i < DevFeatures.usNumGain; i++)
{
Vol->Items->Add(DevFeatures.glGainList[i].szGainStr);
}
Vol->ItemIndex = 0;
Vol->Enabled = True;
}
//активуємо кнопку старт
btStart->Enabled = True;
Натискання кнопки ініціалізація призводитиме до встановлення відповідного порта для зчитування, закриття поточної форми та відкриття вікна зчитування та обробки сигналу.
//активуємо порт для зчитування
ptAIConfig.DasChan = Inp->ItemIndex;
ErrCde = DRV_AIConfig(DeviceHandle, &ptAIConfig);
if (ErrCde != 0)
{
DRV_GetErrorMessage(ErrCde, szErrMsg);
Application->MessageBox(szErrMsg, "8_Error!!", MB_OK);
return;
}
// переходимо до вікна читання та обробки інформації
Form2->Series1->Clear();
Form1->Hide();
Form2->Show();
При виході із програми потрібно передбачити закриття сеансу
23
роботи з пристроєм та:
//закриваємо пристрій
DRV_DeviceClose(&DeviceHandle);
//закриваємо програму
Application->Terminate();
Форма №2 повинна містити наступні елементи та події:
TButton *Menu;
TTimer *tmrRead;
TScrollBar *Freq;
TEdit *edFreq;
TButton *Start;
TEdit *edVolt;
TButton *Stop;
TChart *Chart1;
TLineSeries *Series1;
TLabel *Label1;
TLabel *Label2;
TLabel *Label3;
void __fastcall MenuClick(TObject *Sender);
void __fastcall FormCreate(TObject *Sender);
void __fastcall FreqChange(TObject *Sender);
void __fastcall StartClick(TObject *Sender);
void __fastcall tmrReadTimer(TObject *Sender);
void __fastcall StopClick(TObject *Sender);
void __fastcall FormClose(TObject *Sender, TCloseAction
&Action);
Тут, таймер використовуватиметься для циклічного опитування аналогового порту пристрою з заданим проміжком часу (повзунок), а кожне нове значення наноситиметься на графік.
Для реалізації функції читання введемо наступні змінні:
PT_AIVoltageIn ptAIVolIn;
extern PT_AIConfig ptAIConfig;
extern long DeviceHandle;
extern long ErrCde;
extern char szErrMsg[80];
float press=0; //тиск
При створенні форми встановимо наступні початкові умови:
//встановлення початкової частоти опитування
Freq->Position = 10;
//одразу розпочати зчитування сигналу (за бажанням)
// tmrRead->Enabled = True;
FreqChange(Sender);
При зміні положення повзунка потрібно уникнути ділення на 0, а також правильно встановити частоту опитування та її відображення:
if (Freq->Position == 0)
tmrRead->Interval = 0;
else
tmrRead->Interval = 10000 / Freq->Position;
edFreq->Text = FloatToStrF((Freq->Position/10.0), ffFixed, 5, 2);
Кнопки «Старт» та «Стоп» повинні включати та виключати таймер циклічного опитування стану аналогового входу. При досягненні таймером заданого проміжку часу потрібно зчитати значення напруги на аналоговому вході, відобразити його та розрахувати значення тиску (за статичною характеристикою перетворення давача). Значення тиску нанести на графік.
Приблизний програмний код реалізації функцій у таймері наступний:
Single voltage; //значення напруги на вході
ptAIVolIn.chan = ptAIConfig.DasChan;
ptAIVolIn.gain = ptAIConfig.DasGain;
ptAIVolIn.voltage = &voltage;
DRV_AIVoltageIn(DeviceHandle, &ptAIVolIn);
if (ErrCde != 0)
{
DRV_GetErrorMessage(ErrCde, szErrMsg);
Application->MessageBox(szErrMsg, "10_Error!!", MB_OK);
tmrRead->Enabled = False;
return;
}
// виведення значення напруги
edVolt->Text = FloatToStrF(voltage, ffFixed, 5, 2);
//розрахунок значення тиску
press=;
Series1->Add(press);
Відлагодити створене програмне забезпечення використовуючи програмну емуляцію плати розширення Advantech DEMO. Перевірити роботу програмного забезпечення підключивши до клемно-блочного з'єднувача давач тиску.
Результат виконання:
Рис.1. Перша форма
Рис. 2. Друга форма та результат виконання роботи
Висновок: під час виконання лабораторної роботи я ознайомився із основними принципами роботи з РСІ- платами збору та обробки інформації для ПК, отримав навички розробки прикладного програмного забезпечення для обміну даними між зовнішніми пристроями та ПК з використанням драйверів.
Размещено на Allbest.ru
Подобные документы
Структура інформаційної системи веб-сайту. Узагальнена архітектура кластерної структури. Вимоги до хостингу. Встановлення та налаштування програмного забезпечення. Функція перенаправлення посилань. Система керування базою даних основного кластера.
дипломная работа [871,3 K], добавлен 02.07.2015Розробка компонентів програмного забезпечення системи збору даних про хід технологічного процесу. Опис програмного забезпечення: сервера, що приймає дані про хід технологічного процесу, КОМ для його імітування, робочої станції для відображення даних.
курсовая работа [1,3 M], добавлен 20.11.2010Тестування програмного забезпечення як процес його дослідження для отримання інформації про якість. Автоматизація тестування програми Join It - Jigsaw Puzzle. Методика тестування, структура пакету та його модулів. Вимоги до програмного забезпечення.
дипломная работа [2,4 M], добавлен 24.07.2013Характеристика об’єкта автоматизації, вимоги до системи, склад та зміст системи. Розробка функціональної схеми програмного продукту. Тестування підпрограми програмного продукту. Розробка бази даних та налаштування ECO компонент в Borland Developer Studio.
практическая работа [1,8 M], добавлен 05.06.2014Розробка програми для збору, збереження та обробки інформації про хід технологічного процесу і передачі її в локальну обчислювальну мережу. Структура та функції системи: алгоритми функціонування і програмне забезпечення КОМ, сервера і робочих станцій.
курсовая работа [225,2 K], добавлен 28.08.2012Вибір методів та засобів створення інформаційної системи для обліку і перегляду продукції на складі. Розробка моделі даних для реляційної бази даних, прикладного програмного забезпечення. Тестування програмного додатку, виявлення можливих проблем.
курсовая работа [1,1 M], добавлен 22.09.2015Аналіз системи збору первинної інформації та розробка структури керуючої ЕОМ АСУ ТП. Розробка апаратного забезпечення інформаційних каналів, структури програмного забезпечення. Алгоритми системного програмного забезпечення. Опис програмних модулів.
дипломная работа [1,9 M], добавлен 19.08.2012Дослідження технології com та принципи створення контролерів автоматизації Ms Office і Ms Excel. Розробка програмного забезпечення для збору статистичного ряду показників в умовах неврологічного відділення Криворізького інституту професійних захворювань.
дипломная работа [2,8 M], добавлен 22.10.2012Концепції об'єктно-орієнтованого програмування. Методи створення класів. Доступ до методів базового класу. Структура даних, функції. Розробка додатку на основі діалогових вікон, програми меню. Засоби розробки програмного забезпечення мовами Java та С++.
курсовая работа [502,5 K], добавлен 01.04.2016Розробка програми для автоматизованого розрахунку продажів у крамниці спорттоварів. Розробка концептуальної та логічної моделей бази даних. Автоматизація обробки інформації. Ядро програмного прикладного забезпечення. Розробка візуального інтерфейсу.
курсовая работа [2,3 M], добавлен 26.12.2014