Форум: "Система";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.08;
Скачать: [xml.tar.bz2];




Вниз

Порты в Win2000 


Pasha   (2001-09-21 15:44) [0]

Как можно считать из порта и записать в порт если ОС Win2000.
Желательно с примером.



Mihaliu   (2001-09-22 17:41) [1]

У меня не получяется и и в 98
Если можееш подскажи свой вариант с примером



UsBall   (2001-09-22 21:18) [2]

2 Mihaliu
Это кусочек из программы, работающей с устройством через LPT.
Реально работающей!
Под 98й он работает, а вот под 2000й не будет, по идее не должен.
function Port_Read( Addres_Port : word ) : byte;
{Эта функция читает порт Ввода - вывода. Прерывания запрещены! Адрес базовый порта LPT 888}
begin
asm
mov dx, Addres_Port
cli
in al, dx { Читает значение из порта}
sti
mov Result, al
end;
end;
{----------------------------------------------------------------------------------------------------}
procedure Port_Write( Addres_Port : word; Value : byte );
{ Эта функция пишет в порт Ввода - вывода. Прерывания запрещены!}
begin
asm
mov dx, Addres_Port
mov al, Value
cli
out dx, al { Пишет значение в порт }
sti
end;
end;
Под 2000й доступа к портам нет такого, он конечно возможен, но на вскидку сейчас не подскажу.



Tosov   (2001-09-23 06:07) [3]

попробуй CreateFile
hPort=CreateFile("COM2",Generic_read or Generic_write,0,nil,Open_existing,file_flag_overlapped,0);

потом ReadFile и WriteFile
Сам не пробовал - это из книги




Mihaliu   (2001-09-23 18:41) [4]

cli , sti что такое?



Mihaliu   (2001-09-24 00:21) [5]

UsBall © Большое СПАСИБО !!! Помогло. Под 98 Работает б/п.



unionsoft   (2001-09-24 13:44) [6]

Оно все и под Win2000 работать должно, при условии что:

Мой Компьютер -> Свойства -> Оборудование -> Диспетчер устройств -> Порт LPT1 -> Свойства
и вот тут выставить распознование старого Plug"n"Play.



UsBall   (2001-09-25 01:03) [7]

Чесно говоря не особо помню команды ассемблера, но по смыслу просто - это запрещение и разрешение прерываний - полагаю тебе же не нужно , что бы какая то подпрограмма в момент ТВОЕГО общения с портом что то там изменила?
Да, а то что ассемблерный код то использован заметил?
Код я не изобретал сам - пару лет назад надо было сделать приблуду на принтерный порт и опрограмить её - тогда и нашёл:) Приблуда заработала.
Насколько помню - под Вин2000 с портами надо работать, как с файлами - Tosov правильное направление мысли даёт:)



harisma   (2001-09-25 12:55) [8]

Самое интересное, что под вин98 конструкция CreateFile(), а потом Read/Write File работает нормально, а под вин2000 нет. У меня та же проблема. Необходимо работать с Сом портами под Вин2000. Кто работал и может подсказать? Компоненты - в крайнем случае. Надо через WinAPI



inferno123   (2001-09-25 14:06) [9]

Ребята. У меня такая-же проблема, только несколько хуже. Мне необходимо работать не с COM и LPT портами, а с совершенно левыми и именно под W2k, так что кто чего знает, подскажите. Позарез нужно. Ну а под 95/98 делается очень легко и без API:

Пишем:
asm
Mov DX,310H //Порт назначения
Mov AX,0 //Что надо засунуть в порт
Out DX,AX //Пихаем
end;

Читаем:
asm
Mov DX,300H // Порт назначения
In AX,DX //Читаем
end

Я пробовал работать через API (CreateFile, ReadFile, CloseHandle WriteFile) c произвольным портом, так его даже открыть не получается.

Так что кто точно знает как это делать, подскажите, ради бога, уже весь замучился.



seal   (2001-09-25 14:35) [10]

2harisma © (25.09.01 12:55)
У меня программа, сделанная на базе Async32, отлично работает под 2000. Компонент этот очень простой, если посмотреть исходники, то там ничего и нет, кроме CreateFile, ReadFile, CloseHandle, WriteFile.



Digitman   (2001-09-25 15:01) [11]

в W2k решение практически одно - писать SYS



Mihaliu   (2001-09-25 20:58) [12]

Под 9х подсказка UsBall © самая полноценная .
Навернека помогает cki ,sti

2 Mihaliu
Это кусочек из программы, работающей с устройством через LPT.
Реально работающей!
Под 98й он работает, а вот под 2000й не будет, по идее не должен.
function Port_Read( Addres_Port : word ) : byte;
{Эта функция читает порт Ввода - вывода. Прерывания запрещены! Адрес базовый порта LPT 888}
begin
asm
mov dx, Addres_Port
cli
in al, dx { Читает значение из порта}
sti
mov Result, al
end;
end;
{----------------------------------------------------------------------------------------------------}
procedure Port_Write( Addres_Port : word; Value : byte );
{ Эта функция пишет в порт Ввода - вывода. Прерывания запрещены!}
begin
asm
mov dx, Addres_Port
mov al, Value
cli
out dx, al { Пишет значение в порт }
sti
end;
end;
Под 2000й доступа к портам нет такого, он конечно возможен, но на вскидку сейчас не подскажу.



Michael   (2001-09-26 00:25) [13]

Точно sys писать надо, чем я сейчас и занимаюсь.
Может кто ответит на конкретный вопрос : как в обработчике запроса IRP_MJ_READ или IRP_MJ_WRITE получит адрес (указатель) буфера данных вызывающего прикладного приложения ?



AKV   (2001-09-26 05:37) [14]

Даю справку о TVicHW32 5.0 для D, BC, VB, MC:
TVicHW32 5.0

Описание применения

Copyright (C) 1997-2001 Виктор Ижикеев
mailto: tools@entechtaiwan.com
http://www.entechtaiwan.com/tools.htm

Содержание

0.Что нового в версии 5.0?
1. Общие сведения о TVicHW32
1.1. Что такое TVicHW32
1.2. Базовые функции TVicHW32
2. Доступ к заданным адресам физической памяти
3. Работа с портами ввода-вывода
3.1. Общие сведения о работе с портами.
3.2. Одиночные операции записи/чтения
3.3. Запись/чтение массивов данных
4. Обработка аппаратных прерываний
4.1. Стандартный способ обработки прерываний

4.2. Расширенные возможности при обработке прерываний

4.3. Проблемы времени отклика (быстродействия)

5. Специфические функции для работы с LPT-портами
5.1. Предварительные замечания
5.2. Общие функции для работы с LPT
5.3. Работа с отдельными контактами разъема LPT
5.4. Ввод/вывод сигналов LPT
6. Считывание информации о дисках IDE, включая серийный номер
7. Доступ к информации об устройствах PCI
8. Работа с клавиатурой
8.1. Посылка кодов в контроллер клавиатуры
8.2. Перехват нажатий клавиш клавиатуры
9. Выделение памяти под буферы DMA
10. Выполнение пользовательского кода в Ring 0 CPU
11. Лицензирование и регистрация (как и где купить)
12. Контактная информация
...
Тыры пыры три рубля
...

12. Контактная информация

Последнюю версию TVicHW32 всегда можно найти в сети на сайте фирмы EnTech Taiwan:

http://www.entechtaiwan.com/tools.htm

Вопросы, комментарии и пожелания присылайте по электронной почте на tools@entechtaiwan.com

С уважением,
Виктор Ижикеев
30 мая 2001 года

Возврат к оглавлению



Коляныч   (2001-09-26 10:48) [15]

У материнской платы ASUS P2B есть проблема в Win2000: COM-порты не открываются через CreateFile. Лечится прошивкой свежего BIOS



Batmen   (2001-09-26 11:30) [16]

%-0
Вот такое решение
а у меня P2B упс
и правда не работает
пошел прошивать
СПАСИБО Коляныч



unionsoft   (2001-09-26 19:28) [17]

Посмотри вот здесь:
http://www.webdoc.ru/text.phtml?level=&id=27&script_id=750



Mihaliu   (2001-10-15 19:05) [18]

i



dimkos   (2001-11-27 10:48) [19]

Интересно пробывал ли ктолибо писать даннные в LPT порт на удаленном компе. У меня пока не получилось, хотя через API порт открывается и в него что то пишется, хотя эффекта никакого....



Vasiatka   (2002-01-14 15:15) [20]

Народ, а кто-нибудь для USB на дельфях писал!
Если - да ! То пожалуста пришлите примеры!!!!!!!!




Форум: "Система";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.08;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.76 MB
Время: 0.069 c
14-22841          vajo                  2002-03-01 16:51  2002.04.08  
Win XP


1-22615           [HDD]John             2002-03-27 12:42  2002.04.08  
Имитация нажатия кнопки.


1-22614           Ig                    2002-03-17 22:16  2002.04.08  
Нужен многострочный DBGrid в стиле 1С


1-22665           ola                   2002-03-28 13:36  2002.04.08  
ApplicationEvents!!!!!


1-22730           Gayrus                2002-03-27 03:22  2002.04.08  
TComboBox