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


Работа через порты ввода/вывода с платой L783

Вы не вошли.

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

sergiyko
11.06.2004 11:29:23
#1

Гость

Работа через порты ввода/вывода с платой L783

Есть плата L783 установленная на машине с вин2к.
Использую стандартную библиотеку л-кард с их же драйвером ("lcomp", от 30.04.04).
Использую только функции библиотеки.
Инициализирую плату, загружаю биос
и далее пытаюсь посмотреть, что находится по адресам тестовых переменных, с помощью функций для работы с портами.
И тут возникает облом, возвращаемые значения тестовых значений 0xfff1, что не есть правильно.
В чем проблема может быть?
Неправильная передача адреса запрашиваемой переменной или что еще?
Такое впечатление, что вообще не работают порты ввода/вывода.

11.06.2004 12:14:35
#2

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

Re: Работа через порты ввода/вывода с платой L783

Код напишите. А вообще тестоваые переменные читаются через память и функциями Put/Get_DM_Word
У них можно и код посмотреть- библиотека с исходниками дается.

sergiyko
21.06.2004 14:57:31
#3

Гость

Re: Работа через порты ввода/вывода с платой L783

Код выглядит примерно так

CallCreateInstance("lcomp.dll");
ULONG slot = 0;
LUnknown* pIUnknown = CreateInstance(slot);
if(pIUnknown == NULL) MessageBox("CreateInstance ug");
else
{
  pIUnknown->QueryInterface(IID_ILDEV,(void**)    &pi);
  pIUnknown->Release();
  pi->OpenLDevice();
  pi->LoadBios("l783");
  pi->ReadPlataDescr(&(ptr_doc->pd));
  pi->GetSlotParam(&(ptr_doc->sp));
  enum {    PM, DM=0x4000};
  USHORT Address =  L_TMODE2_PLX ;
//Эта часть определения адреса была взята из
//библиотеки под дос.
  if(Address & 0x8000)
  {
    Address &= 0xFFF;
    Address |=  0x3000;
  }
  else
     Address &= 0x3FFF;
  Address |= DM;
  USHORT IDMA_Address_Access=USHORT(0x2);
  USHORT IDMA_Word_Access = USHORT(0x0);
  USHORT a  ;
  pi->outword(IDMA_Address_Access,&Address,sizeof(Address));
  ULONG test=pi->inword(IDMA_Word_Access,&a,sizeof(a));
  pi->GetWord_DM(L_TMODE2_PLX,&a);
  pi->CloseLDevice();
  pi->Release();
}

Функция GetWord_DM дает правильное значение в переменной а, а вот через порты ввода вывода получается только fff1.
Проблема наверняка в правильности задания адреса,
напишите как его правильно задавать.

22.06.2004 09:07:14
#4

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

Re: Работа через порты ввода/вывода с платой L783

Потому как не предусмотрено. Надо через памятьработать типа outmdword. А так Вы в область служебных регистров PLX попадаете.