Форум TRACE MODE: техническая поддержка   
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 5 » Драйверы / Device Drivers » Написание драйвера DOS

   
Автор / Author Тема / Topic: Написание драйвера DOS
angel
Junior Member / Новичок
Участник № / Member № 596


Icon 1 отправлено / posted      Профиль для / Profile for angel           Редактировать/удалить сообщение / Edit/Delete Post 
Можно увидеть пример рабочего драйвера для работы с платами УСО????
Сообщения / Posts 14 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 5 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
1) Какой именно тип: через прерывание или через точку вызова?
2) Исходники реальных драйверов показать вряд ли возможно. Лучше поясните в чем конкретно проблема?

Сообщения / Posts 17314 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
angel
Junior Member / Новичок
Участник № / Member № 596


Icon 1 отправлено / posted      Профиль для / Profile for angel           Редактировать/удалить сообщение / Edit/Delete Post 
Проблема написания драйвера модуля D48i контроллера TKM52! Работаем через точку вызова.
Сообщения / Posts 14 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 5 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Так в чем собственно проблема? [Улыбка / Smile]
Сообщения / Posts 17314 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
angel
Junior Member / Новичок
Участник № / Member № 596


Icon 7 отправлено / posted      Профиль для / Profile for angel           Редактировать/удалить сообщение / Edit/Delete Post 
Исходник PLEASE
Сообщения / Posts 14 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 9 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Исходника нет - для D48i вообще нет поддержки (пока). Как мы можем его показать?
[Недоумение / Confused]
Если возникают какие-либо трудности по написанию драйвера - пожалуйста, спрашивайте, поможем. Однако я так и не получил от Вас никаких описаний конкретных проблем, которые у Вас возникаю в написании драйвера! [Недоумение / Confused]

Сообщения / Posts 17314 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
angel
Junior Member / Новичок
Участник № / Member № 596


Icon 9 отправлено / posted      Профиль для / Profile for angel           Редактировать/удалить сообщение / Edit/Delete Post 
Конкретно меня интересует, как обмениватся информацией через точку вызова посмотреть кусок кода или какую нибудь документацию по написанию драйвера [Недоумение / Confused] . Кроме Help'а ес-но. [Неодобрение / Frown]
Сообщения / Posts 14 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Вот например, если заменить код, который обрабатывает алгоритмы обращения к УСО коментариями, то исходный код можно представить как:
code:
 #include <dos.h>
#include <stdio.h>

long *ad;

typedef union
{
unsigned char c[6];
unsigned short int i[3];
}
IA;


int RWH(unsigned short type, IA &ia, unsigned short *v) //Прототип драйвера
{
switch (type){
case 0x8000: // Первый вызов драйвера
return 0;
case 0x1000: // Последний вызов драйвера
return 0;
case 0x2000: // AI RWH & AO RWH инициализация
// Можно оставить код пустым или реализовать какие-либо алгоритмы
// например, инициализации платы УСО
return 0;
case 0x3000: // DI RWH & DO RWH Инициализация
// Можно оставить код пустым или реализовать какие-либо алгоритмы
// например, инициализации платы УСО
return 0;
case 0x4000: // AO RWH Обработка Аналогов - Выходы
// Считали адрес ia - в соответсвии с настройками послали в устройство значение v
return 0;
case 0x5000: // AI RWH Обработка Аналогов - Входы
// Считали адрес ia - в соответсвии с настройками считали из устройства значение и присвоили его в v
return 0;
case 0x6000: // DO RWH Обработка Дискретов - Выходы
// Считали адрес ia - в соответсвии с настройками послали в устройство значение v
return 0;
case 0x7000: // DI RWH Обработка Дискретов - Входы
// Считали адрес ia - в соответсвии с настройками послали в устройство значение v
return 0;
case 0xa000: // INPUT VOID_RWH - посылка значений в базу каналов
// управляя адресом ia посылаем новые значения в атрибуты каналов
return 0;
case 0xb000: // OUPUT VOID_RWH - чтение атрибутов из базы каналов
// управляя адресом ia считываем значения атрибутов каналов
return 0;
}
return 0;
}

int main (void)
{
union REGS inr;
ad=(long*)MK_FP(0,0x04f0); // Set call address
*ad=(long)RWH; // Driver procedures
inr.x.ax=0x3100; // Exit to DOS
inr.x.dx=800; // Normal finishing
intdos(&inr,&inr); // of the resident code
return 0;
}

Смысл в том, что соответствующие каналы вызывают прототип драйвера с соответствующим кодом type. Это зависит от типа, подтипа и дополнения к подтипу канала, который его вызвал. В структуре ia - передаются настройки канала, а в переменной v - его значение. Вот и вся идеология.
Сообщения / Posts 17314 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
angel
Junior Member / Новичок
Участник № / Member № 596


Icon 1 отправлено / posted      Профиль для / Profile for angel           Редактировать/удалить сообщение / Edit/Delete Post 
Спасибо ! это то что я хотел [Улыбка / Smile] [Усмешка / Big Grin] [Пдмигивание / Wink]
Сообщения / Posts 14 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

   Закрыть тему / Close Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2