AfxMessageBox("Couldn't get an adress for IsDriverPresent function from library XDSPInter.dll", MB_ICONERROR | MB_OK);
success=false;
}
}
return(success);
}
Вызов метода ConnectToDriver целесообразно сделать в конструкторе класса. Там же надо реализовать и проверку, присутствует ли в системе драйвер. Тогда вся необходимая инициализация будет проведена еще при запуске приложения.
m_buff.SetWindowText(dt); //Выводим данные на экран
//Код, характерный для VC++.
CXDSPDoc *m_doc; //Подключаем документ, связанный с представлением
m_doc=GetDocument;
//копируем туда данные.
strcpy((char*)m_doc->m_buffer,dt);
//Примечание: оба буфера должны иметь достаточный объем – минимум
//256*4+1 байт.
}
Аналогично может выглядеть метод записи в память устройство:
void CXDSPView::OnWrite {
//Получили данные, введенный пользователем
m_buff.GetWindowText(dt,32767);
int res;
//Записываем его в память устройства. Заметим, что в качестве длины данных
//мы передаем не длину в байтах, а в 4-байтых словах.
res=(*WriteMem)(dt,strlen(dt)%4+1);
}
Метод, возвращающий длину памяти устройства, совсем прост и, думаю, в комментариях не нуждается.
int CXDSPView::GetTotalLen {
int res=(*GetMemSize);
return(res);
}
Также введем еще один метод, который может быть полезным. Он будет очищать память устройства.
void CXDSPView::OnClear {
//Получили документ
CXDSPDoc *m_doc;
m_doc=GetDocument;
//Забиваем буфер нулями
for (int i=0;i<1025;i++) dt[i]=0;
//Обнуляем буфер в классе документа
m_doc->m_buffer[0]=0;
int res;
//Записывем в память устройства нули
res=(*WriteMem)(dt,256);
//Обновляем данные в окне приложения.
m_buff.SetWindowText(dt);
}
Конечно, написанные нами приложение и dll-библиотека весьма несовершенны. Например, сбои будут происходить, если будут запущены несколько приложений. Тогда они будут одновременно обращаться к одной и той же dll и обновременно работать с устройством. Это может породить множество сбоев. В лучшем случае данные, получаемые каждым из них будут неадекватными. В худшем — система зависнет. Впрочем, этот недостаток можно устранить, модифицировав драйвер способом, описанным выше. Также в нашем приложении производится работа только с первыми 1024 байтами памяти устройства.