Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

СОМ-порт


andrewtitoff ©   (2009-11-30 22:59:00) 

Здравствуйте!, подскажите как отслеживать состояние СОМ-порта, передача данных не нужна, нужны только статусы, а если быть точнее - то нужны только состояния 1-ого и 8-ого пина?


Германн   (2009-12-01 20:11:00) [1]


> но можно же извратиться встроеннвм асмом

Низзя.


andrewtitoff   (2009-12-01 20:06:00) [2]


> Можно и просто через порты, если использовать драйвер

Чет я непонял, а при чем тут драйвер?, я вообще-то про прямое обращение к порту...
как раньше было на паскале
a:=port[3f8h]
на дельфе ща вроде так нельзя, но можно же извратиться встроеннвм асмом, что то вроде
function  Readpk(Addr : WORD) : byte;
var
value : byte;
begin
asm
 push eax
 push edx
 mov dx,Addr
 in al,dx
 mov value,al
 pop edx
 pop eax
end;
Readpk:=value;
end;


Вариант   (2009-12-01 11:33:00) [3]


> Andrewtitoff ©   (01.12.09 10:40) [3]


> Да, на счет седьмого пина верно!, т.к. возможно +11 стандартные
> виндовые дрова дают...


Это я насчет того, что мало ли какая прога до твоей пользовалась портом и неизвестно как она его настроила, в каком состоянии бросила. EscapeCommFunction позволяет установить +или -грубо говоря, на выходе управляющих пинов порта - очень проста - EscapeCommFunction(hPort,SETRTS) - где hPort -хэндл порта, полученный при успешном вызове CreateFile. Описание функций естьв MSDN. Ну или воспользуйся готовым компонентом для работы с портом (как правило упрощает написание программ), в интернете были хорошие компоненты. Можно и просто через порты, если использовать драйвер - какие-то тоже были в интернете, но мне кажется лучше использовать API или нормальный компонент - ибо вся функциональность там есть, чем использовать  "лом" (это я о драйвере).


Andy BitOff   (2009-12-01 10:45:00) [4]

Сорри, я не в теме, но видел недавно на исходниках исходники (каламбур =) ) Класс для работы с COM-портом - http://forum.sources.ru/index.php?s=b540cf0cf183c76791c8e96012715f55&showtopic=173025
Может поможет.


Andrewtitoff   (2009-12-01 10:40:00) [5]


> Вариант   (01.12.09 07:07) [2]
> Почитай о CreateFile +GetCommModemStatus (по хорошему SetCommState
> тоже надо для инициализации порта) - это просто для чтения
> состояния пинов порта. Если нужно оперативное оповещение
> об изменении состояния, то смотри еще SetCommMask и WaitCommEvent.
>  И да не факт, что обязательно будет на 7-пин = +11В, об
> этом лучше позаботиться самому, смотри еще  EscapeCommFunction.
>  Для  получения более подробной информации рекомендую почитать
> статьи о работе с COM портом например на королевстве дельфи
> или где еще в интернете.

Да, на счет седьмого пина верно!, т.к. возможно +11 стандартные виндовые дрова дают...

А просто как нибудь через порты нельзя?


Вариант   (2009-12-01 07:07:00) [6]

Почитай о CreateFile +GetCommModemStatus (по хорошему SetCommState тоже надо для инициализации порта) - это просто для чтения состояния пинов порта. Если нужно оперативное оповещение об изменении состояния, то смотри еще SetCommMask и WaitCommEvent.
И да не факт, что обязательно будет на 7-пин = +11В, об этом лучше позаботиться самому, смотри еще  EscapeCommFunction.
Для  получения более подробной информации рекомендую почитать статьи о работе с COM портом например на королевстве дельфи или где еще в интернете.


andrewtitoff   (2009-11-30 23:04:00) [7]

Это мне нужно для отслеживания состояния старенького ИБП, там просто перемыкаются пины 7+8= AC Fail, 7+8+1=Shutdown, покрайне мере так работают стандартные виндовые дрова(подбирал почти методом тыка)

7-пин = +11В, 1,8=0В в свободном состоянии, при замыкании упсом напряжение подается на 8-ой и 1-ый пин


Наверх

Титульная страница Поиск, карта сайта Написать письмо