Вторник, 26.11.2024
Мой сайт
Меню сайта
Статистика

Онлайн всего: 120
Гостей: 120
Пользователей: 0
Главная » 2016 » Август » 29 » Компьютерные драйвера
21:03
Компьютерные драйвера

Компьютерные драйвера

Начну я с DOS-овских. Во-первых, я их лучше знаю, потому, что 20 лет назад изучала именно их. Во-вторых, то что сейчас с технической точки зрения можно смело назвать надстройкой над тем, что было тогда, а с логической вообще ничего не поменялось.
Компьютер состоит из процессорного блока, к которому проводами подключены разнообразные устройства (монитор, клавиатура, мышь, принтер и т.д.)
Процессор получает информацию от каких-то устройств и передаёт информацию каким-то другим устройствам. В случае получения информации обычно есть какой-то кусок памяти, в который постоянно записывается то, что передало устройство. При записи – обратный процесс. Надо что-то писать по какому-то адресу в памяти и уже железо (т.е аппаратный уровень) всё это передаст подключенному устройству.
Причём многое там происходит на аппаратно уровне, т.е без участия операционной системы. Операционная система устанавливает некую надстройку, которая позволяет работать со всем этим чуть проще.
Эта надстройка по сути – набор функций, который может использовать программист, желающий чтобы всё оборудование делало то, что он хочет.
Функции – прерывания DOS:
http://www.codenet.ru/progr/dos/

Каждое прерывание обычно работает с каким-то конкретный устройством. Например №10h (“h” означает шестнадцатеричное число) специализируется на работе с экраном, т.е монитором:
http://www.codenet.ru/progr/dos/int_0009.php

Пусть я хочу чтобы на экране во второй строке в 10-й позиции появилась английская буква “a”. Пусть нет у меня даже DOS-а с его функциями – прерываниями. Я знаю, что всё содержимое оперативной память с адреса B800h передаётся на экран. Я знаю, что на одну букву используется два байта информации, а первом – код буквы, во втором – её оформление. Можно, например сделать букву белой на красном фоне. Код буквы «a»=97
http://unicode-table.com/ru/

Ширина экрана в текстовом режиме – 80 букв.
Т.е всё, что мне требуется чтобы получить желаемое записать цифру 97 по адресу B800h+80*2+10*2.
Но уже здесь есть небольшая проблема. Информация с адреса B800h передаётся на цветной монитор. Если же у меня монитор чёрно-белый, то мне надо использовать адрес B000h.
Если же я использую функции операционной системы, то мне не надо думать о таких вещах. Эти функции достаточно сложны и учитывают все эти тонкости.
Используя прерывание №10h я напишу так:
ax = 02h // Номер функции установки курсора в нужную позицию
dh=1 // Вторая строка, номера с 0
dl=9  // 10-я колонка

Int 10h // Вызов функции с заданными параметрами
ax=09h // Номер функции записи символа в текущей позиции
al=97 // Код буквы ‘a’
Int 10h // Вызов функции

Но не все устройства имеют стандартные обработчики в DOS-е, которые позволяют с ними работать. Для работы с мышью, например, использовались программы – драйверы производителей этих мышей. Использовать их конечно тоже не обязательно. Подключенная мышь и без них передаёт и пишет по какому-то адресу свои нули и единицы, показывающие в какую строну и на какое расстояние она переместилась. Но с ними проще. Дело в том, что мышь – простое электро-механическое устройство. Единственное, что может комбинация катающегося по поверхности шарика и проводочков – определить сторону и величину смещения. Мышь не умеет анализировать эту информацию. Этим должен заниматься компьютер. Обычно этим занимался драйвер мыши, который писал свои функции для прерывания №33h. Когда драйвер установлен можно было записать:
ax = 03h // Получить информацию мыши
int 33h // Вызвать функцию
После этого в регистре CX можно было взять X координату мыши, а в регистре DX – Y координату.
Чтобы эта информация была драйвер делает очень много. Он считывает всю информацию, поступающую от мыши и уже по ней (суммируя и вычитая) определяет, положение курсора на экране. Он же, т.е драйвер рисует курсор мыши в нужном месте, не забывая стирать его там, где мышь бала только что. Он же обычно контролирует попытку вывести курсор мыши за пределы экрана и не меняет координаты при такой попытке.
Кроме аппаратного уровня и уровня функций операционной системы – прерываний уже в DOS-е появился третий уровень – пользовательские функции в библиотеках программ.
Вот например:
http://www.codenet.ru/progr/other/mouse.php

void  ShowMouseCursor () {
    asm {
    mov ax, 1 int 33h
    }
}
… Помнить все эти номера довольно сложно. Намного проще работать с человеческими названиями, по которым понятно, что делает эта функция. Функция в примере делает курсор мыши видимым. Достаточно написать ShowMouseCursor () и внутри всё само сделается, а на экране появится мышачий курсор.
Следующее устройство, у котором надо написать – принтер. Он интересен хотя бы тем, что не с него читают, а в него записывают. Ничего особо сложного тут нет. Единственное, что обычно требуется – послать вначале какую-то управляющую последовательность, означающую что сейчас начнётся передача информации. Мало ли что может быть? Программный сбой, замыкание проводов. Без точной информации о том, что это именно запись, принтер не начнёт печать.
Примерно так это выглядит для COM порта:
https://www.opennet.ru/docs/RUS/serial_guide/

Логичный вопрос: А что происходит со стороны принтера и что ему попадает? А вот этого я не знаю. Это уже даже не аппаратный уровень а электронный. Но могу предположить, что 0 или 1 в каком-то бите переданной информации это наличие или отсутствие напряжения на каком-то штырьке вилки.
Т.е происходит что-то типа того, что в этой простенькой электрической схеме:
https://drive.google.com/file/d/0B3i2SFYLER0HVTRnalNHMXdEalE/view?usp=sharing

Аналогия с замкнутыми и разомкнутыми ключами отчасти оправдана, ведь буква – это нарисованные точки в одних местах (1) и их отсутствие в других местах (0). Т.е принтер просто берёт очередной байт информации (8 битов, т.е нулей или единиц) и последовательно отрисовывает всё, что ему прислали (замыкая ключи только там, где переданы единицы).
Теперь про WINDOWS. В этой операционной системе уж нет доступа к аппаратным средствам и векторам прерывания. Точнее они конечно есть, но добраться туда намного сложнее чем из DOS-а. Если DOS в качестве функций, которые могут использовать программисты давал им набор тех самых прерываний, то WINDOWS даёт уже набор функций с удобными названиями. Эти функции и есть то, что рекомендуется использовать в WINDOWS.
Вот так, например, выглядит функция, вызвав которую можно получить положение курсора мыши:
https://msdn.microsoft.com/ru-ru

Имя функции MousePosition и хранится она в библиотеке System.Windows.Forms.dll. Конкретно эту библиотеку писали, конечно, авторы WINDOWS. Но и сторонние разработчики могут писать свои программы – драйвера, которые позволяют работать с любыми, подключенными к компьютеру устройствами.
GPS-ом программно никогда не пользовалась. Но видимо с ним работают через эту штуку:
https://msdn.microsoft.com/ru-ru

 Т.е если на компьютер как-то с какого-то устройства попадает информация о координатах, то инициализировав объект GeoCoordinateWatcher() можно постоянно получать координаты, вызывая свойство Position.
Следующая информация уже не относиться к компьютерным драйверам: GPS – не единственный инструмент, позволяющий определить координаты. Есть ещё и такое:
https://xakep.ru/2009/05/29/48378/

Но это так, для информации. 

Просмотров: 297 | Добавил: akostina76 | Рейтинг: 0.0/0
Всего комментариев: 3
3 ppu-prof_si  
0
Наша бригада профессиональных мастеров готова предложить вам передовые средства, которые не только подарят надежную защиту от зимы, но и подарят вашему зданию стильный вид.
Мы трудимся с новейшими составами, утверждая долгий запас эксплуатации и блестящие результаты. Изоляция наружных поверхностей – это не только экономия на отапливании, но и заботливость о экологии. Экологичные технологические решения, какие мы применяем, способствуют не только своему, но и поддержанию природных богатств.
Самое важное: <a href=https://ppu-prof.ru/>Заказать утепление фасада</a> у нас составляет всего от 1250 рублей за квадратный метр! Это доступное решение, которое переделает ваш хаус в настоящий тепличный уголок с небольшими затратами.
Наши достижения – это не всего лишь изоляция, это формирование пространства, в котором всякий элемент отражает ваш особенный образ действия. Мы примем во внимание все твои пожелания, чтобы осуществить ваш дом еще еще более теплым и привлекательным.
Подробнее на <a href=https://ppu-prof.ru/>http://www.ppu-prof.ru/</a>
Не откладывайте заботу о своем корпусе на потом! Обращайтесь к исполнителям, и мы сделаем ваш обиталище не только комфортнее, но и более элегантным. Заинтересовались? Подробнее о наших услугах вы можете узнать на нашем сайте. Добро пожаловать в обитель гармонии и стандартов.

2 ppu-prof_si  
0
Наша команда профессиональных мастеров приготовлена предложить вам современные системы, которые не только предоставят надежную защиту от заморозков, но и подарят вашему коттеджу модный вид.
Мы практикуем с современными средствами, обеспечивая долгосрочный срок работы и отличные решения. Изоляция внешней обшивки – это не только экономия на отапливании, но и ухаживание о экологии. Энергоспасающие методы, какие мы внедряем, способствуют не только своему, но и поддержанию природы.
Самое основное: <a href=https://ppu-prof.ru/>Утепление здания снаружи цена</a> у нас стартует всего от 1250 рублей за кв. м.! Это доступное решение, которое сделает ваш хаус в реальный теплый угол с скромными затратами.
Наши пособия – это не лишь изолирование, это формирование области, в где каждый элемент преломляет ваш уникальный манеру. Мы примем все ваши пожелания, чтобы осуществить ваш дом еще еще более теплым и привлекательным.
Подробнее на <a href=https://ppu-prof.ru/>http://ppu-prof.ru</a>
Не откладывайте дела о своем квартире на потом! Обращайтесь к профессионалам, и мы сделаем ваш домик не только комфортнее, но и моднее. Заинтересовались? Подробнее о наших трудах вы можете узнать на портале. Добро пожаловать в универсум комфорта и уровня.

1 ppu-prof_si  
0
Наша группа опытных мастеров предоставлена предоставлять вам новаторские подходы, которые не только гарантируют надежную протекцию от холодных воздействий, но и дарят вашему жилью изысканный вид.
Мы практикуем с современными строительными материалами, утверждая долгосрочный срок службы службы и выдающиеся выходы. Изолирование наружных стен – это не только экономия тепла на огреве, но и забота о экосистеме. Энергоспасающие методы, которые мы используем, способствуют не только зданию, но и сохранению природных ресурсов.
Самое основное: <a href=https://ppu-prof.ru/>Стоимость работ по утеплению фасада</a> у нас открывается всего от 1250 рублей за кв. м.! Это доступное решение, которое изменит ваш домашний уголок в фактический комфортный уголок с минимальными затратами.
Наши примеры – это не только теплоизоляция, это созидание помещения, в где каждый член отражает ваш личный модель. Мы примем во внимание все все ваши запросы, чтобы преобразить ваш дом еще более приятным и привлекательным.
Подробнее на <a href=https://ppu-prof.ru/>официальном сайте</a>
Не откладывайте труды о своем помещении на потом! Обращайтесь к специалистам, и мы сделаем ваш обиталище не только согретым, но и стильнее. Заинтересовались? Подробнее о наших предложениях вы можете узнать на нашем сайте. Добро пожаловать в сферу удобства и высоких стандартов.

Имя *:
Email *:
Код *:
Форма входа
Поиск
Календарь
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2024
    Бесплатный конструктор сайтов - uCoz