> success=false;
> }
> GetMemSize=(MemSizeFun)::GetProcAddress(InterDll,"GetMemSize");
> if (GetMemSize==NULL) {
> //Не удалось импортировать функцию AfxMessageBox("Couldn't get an adress for GetMemSize function from library XDSPInter.dll", MB_ICONERROR | MB_OK);
> success=false;
> }
> IsDriverPresent=(IsDrivFun)::GetProcAddress(InterDll,"IsDriverPresent");
> if (IsDriverPresent==NULL) {
> //Не удалось импортировать функцию
> AfxMessageBox("Couldn't get an adress for IsDriverPresent function from library XDSPInter.dll", MB_ICONERROR | MB_OK);
> success=false;
> }
> }
> return(success);
>}
Вызов метода ConnectToDriver() целесообразно сделать в конструкторе класса. Там же надо реализовать и проверку, присутствует ли в системе драйвер. Тогда вся необходимая инициализация будет проведена еще при запуске приложения.
>CXDSPView::CXDSPView() : CFormView(CXDSPView::IDD) {
> //{{AFX_DATA_INIT(CXDSPView)
> //}}AFX_DATA_INIT
> //Здесь мы добавляем свой код. Success – переменная экземпляра. Если она
> //равна true – то ошибок нет, иначе произошла какая-то ошибка.
> success=true;
> //Пробуем подключить dll:
> if (ConnectToDriver()) {
> //Удалось подключить библиотеку. Теперь пытаемся установить связь с
> //драйвером – вызываем функцию в dll:
> if (!IsDrvPresent()) {
> //Неудача
> success=false;
> AfxMessageBox("Necessary driver isn't present in the system",MB_ICONERROR | MB_OK);
> }
> } else
> //Не удалось подключиться к dll.
> success=false;
>}
Метод, производящий чтение памяти устройства может выглядеть следующим образом:
>void CXDSPView::OnRead() {
> int res; //Количество слов, прочитанных из памяти
>res=(*ReadMem)(dt,256); //Пытаемся читать 256 слов.
> 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() {