| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Как узнать статус лампочки HDD_LED |
| Автор: _JB_ 16.6.2004, 23:26 |
| Привет! Подскажите как мне в моей программе узнать идет ли в данный момент чтение\запись с винта. Грубо говоря я просто хочу в проге продублировать лампочку винта на корпусе. Если можно, кусочки кода... |
| Автор: -=::BlackCat::=- 17.6.2004, 00:03 |
| разве такое реально? хотя что-то мне подсказывает, что даже если получится у-у-у-у-у-у-у-у-у-у-у-ужасно тормозить будет |
| Автор: Jey_k 17.6.2004, 00:35 |
| Через порты это делается. В разделе ASM задай этот вопрос |
| Автор: youri 17.6.2004, 06:32 |
| _JB_ Попробуй считать содержимое порта 1f0h (Secondary) или 170h (Primary). По-моему какой-то бит а это отвечает. -=::BlackCat::=- Почему-бы это оно отормозило. Через таймер это делается. Чтобы меньше тормозило, надо поставить больший интервал. |
| Автор: -=::BlackCat::=- 17.6.2004, 06:50 |
| я думал человек хочет синхронизировано, с лампочкои на корпусе |
| Автор: Albinos_x 17.6.2004, 11:58 |
| -=::BlackCat::=- скорей всего, так оно и есть |
| Автор: _JB_ 17.6.2004, 18:19 |
| youri Спасибо, попробую так.... -=::BlackCat::=- Действительно хочу, чтоб синхронно было. А тормозить оно по идее в натуре не должно, думаю, даже если в таймере 10мс поставить... |
| Автор: _JB_ 17.6.2004, 19:26 | ||
Написал вот такой код.... но глючит. Читайте комментарии походу....
БЛин... порты не сканятся.. Если это из-за ХР, то как от этого избавиться? |
| Автор: _hunter 17.6.2004, 19:43 |
| это действительно из-за XP ( точнее NT ) ( чтение / запись портов -- операция не доступная простым программам ) как избавится -- писать ядреный драйвер |
| Автор: Albinos_x 17.6.2004, 20:33 |
| _JB_ совершенно точно, NT версии не дают работать с портами делай как говорит _hunter |
| Автор: _JB_ 18.6.2004, 00:24 |
| _hunter Albinos_x А под 9х работать будет? _hunter А можно поподробнее, пожалуйста |
| Автор: Albinos_x 18.6.2004, 01:15 |
| _JB_ Под 9х должна работать драйверы Винды НТ делятся на 2 класса: драйверы уровня ядра и драйверы уровня пользователя, под вторым понимается драйвера, специфичные для защищеных подсистем .Например VDD, представляющюу 32 битную длл, созданную по правилам написания длл для винды, а её инициализация выполняется (если не ошибаюсь) функцией VDDInitialize, являющаяся аналогом функции DLLMain для обычных длл. под первым - драйверы физических и виртуальных устройств уровня ядра(например WDM-драйвер). здесь существуют 3 уровня дров: низкий, промежуточный и высокий. низкий - дрова работающие непосредственно с устройствами и не требующие прочих дров. промежуточный - фильтры, дрова работающие с дровами нижнего уровня высокий - дрова файловах систем и т. д. ......... |
| Автор: Girder 18.6.2004, 08:43 | ||
| OUT XX,X - где XX:базовый порт; X:номер устройства in S,XX+1 - где S-байт состояния устройства;XX+1:регистр команда/состояния Обычно так пишется: mov al,Dev mov dx,port out dx,al inc dx in al,dx К примеру определение типа НГМД/НМД
Твои порты и устройства: 1F0h,0 - PriMaster 1F0h,1 - PriSlave 170h,0 - SecMaster 170h,1 SecSlave 1E8h,0 - TerMaster 1E8h,1 - TerSlave 168h,0 - QuaMaster 168h,1 - QuaSlave Удачи. |
| Автор: youri 18.6.2004, 12:36 |
| По поводу доступа к портам через XP, поищи в инете компонент для Delphi: TSmallPort |
| Автор: _hunter 18.6.2004, 16:05 |
| если подробнее, то вот статья: http://rusdoc.ru/material/os/nt/ntdriver.zip |
| Автор: _JB_ 19.6.2004, 11:05 |
| Albinos_x Girder youri _hunter Всем спасибо, ща займусь сбором информации... Если получицца - сообщу |
| Автор: Girder 20.6.2004, 04:27 | ||||||
| 1)Загружаем http://www.wideman-one.com/gw/tech/Delphi/iopm/gwiopm.zip и читаем http://dars.com.ru/index.phtm?menu=6;14 http://www.wideman-one.com/gw/tech/Delphi/iopm/gwiopm_code.htm 2)Из архива копирум два файла в папку проекта: а)gwiopm.pas б)gwiopm.sys 3)Правим gwiopm.pas: а)в описании класс "TGWIOPM_Driver" заменяем function ErrorLookup(ErrorNum: DWORD): string на function ErrorLookup(ErrorNum: integer): string б)в реализации функции "function TGWIOPM_Driver.Install(newdriverpath: string): DWORD" заменяем:
на
4)Подключение драйвера "gwiopm" в программе
На счет индикации. Считываниe с диска информации: var b:byte; ... b:=PortIn($1F0); if b=$D0 then StatusBar1.Panels[0].Text:='Читаем'; На счет записи не знаю(последний раз лет 12 назад программировал HDD по портам). P.S. Не советую особо экспериментировать с записями команд в порт HDD. 10ms - мало... очень мало, делай не менее 100ms. Удачи. |
| Автор: Girder 21.6.2004, 19:32 | ||
Вроде работает, но 100%-ю гарантию не дам.
Удачи. |
| Автор: Girder 22.6.2004, 01:53 |
| Нет, что-то не так в коде. Точность 50/50. Посмотри лудше: 1) http://t13.org/ 2) Описание команд CMOS. Удачи. |
| Автор: Girder 22.6.2004, 09:57 |
| Нашел. См. http://www.oo-software.com/de/products/oodl/index.html Для скачивания: ftp: ftp://ftp.oo-software.com/pub/oodriveled/oodled_1_0_74_english.zip Http: http://www.oo-software.com/files/oodriveled/oodled_1_0_74_english.zip |
| Автор: _JB_ 24.6.2004, 23:43 |
| Girder Спасибо |
| Автор: -=::BlackCat::=- 25.6.2004, 00:10 |
| _JB_ заченить потом даш? |
| Автор: Georg4 25.6.2004, 09:46 | ||
Это как? |
| Автор: _hunter 25.6.2004, 15:47 |
| как, как: двоичная система + отображение на три лампы |
| Автор: _JB_ 27.6.2004, 22:59 |
| -=::BlackCat::=- Доведу до ума... и выкину тебе на мыло Georg4 Заговорился.... бегущая строка естественно там не получится... просто попеременный быстрый перебор лампочек, а затем возврат в исходное состояние. |