Форум: "Начинающим";
Текущий архив: 2010.01.24;
Скачать: [xml.tar.bz2];
ВнизСОМ-порт Найти похожие ветки
← →
andrewtitoff © (2009-11-30 22:59) [0]Здравствуйте!, подскажите как отслеживать состояние СОМ-порта, передача данных не нужна, нужны только статусы, а если быть точнее - то нужны только состояния 1-ого и 8-ого пина?
← →
andrewtitoff © (2009-11-30 23:04) [1]Это мне нужно для отслеживания состояния старенького ИБП, там просто перемыкаются пины 7+8= AC Fail, 7+8+1=Shutdown, покрайне мере так работают стандартные виндовые дрова(подбирал почти методом тыка)
7-пин = +11В, 1,8=0В в свободном состоянии, при замыкании упсом напряжение подается на 8-ой и 1-ый пин
← →
Вариант (2009-12-01 07:07) [2]Почитай о CreateFile +GetCommModemStatus (по хорошему SetCommState тоже надо для инициализации порта) - это просто для чтения состояния пинов порта. Если нужно оперативное оповещение об изменении состояния, то смотри еще SetCommMask и WaitCommEvent.
И да не факт, что обязательно будет на 7-пин = +11В, об этом лучше позаботиться самому, смотри еще EscapeCommFunction.
Для получения более подробной информации рекомендую почитать статьи о работе с COM портом например на королевстве дельфи или где еще в интернете.
← →
Andrewtitoff © (2009-12-01 10:40) [3]
> Вариант (01.12.09 07:07) [2]
> Почитай о CreateFile +GetCommModemStatus (по хорошему SetCommState
> тоже надо для инициализации порта) - это просто для чтения
> состояния пинов порта. Если нужно оперативное оповещение
> об изменении состояния, то смотри еще SetCommMask и WaitCommEvent.
> И да не факт, что обязательно будет на 7-пин = +11В, об
> этом лучше позаботиться самому, смотри еще EscapeCommFunction.
> Для получения более подробной информации рекомендую почитать
> статьи о работе с COM портом например на королевстве дельфи
> или где еще в интернете.
Да, на счет седьмого пина верно!, т.к. возможно +11 стандартные виндовые дрова дают...
А просто как нибудь через порты нельзя?
← →
Andy BitOff © (2009-12-01 10:45) [4]Сорри, я не в теме, но видел недавно на исходниках исходники (каламбур =) ) Класс для работы с COM-портом - http://forum.sources.ru/index.php?s=b540cf0cf183c76791c8e96012715f55&showtopic=173025
Может поможет.
← →
Вариант (2009-12-01 11:33) [5]
> Andrewtitoff © (01.12.09 10:40) [3]
> Да, на счет седьмого пина верно!, т.к. возможно +11 стандартные
> виндовые дрова дают...
Это я насчет того, что мало ли какая прога до твоей пользовалась портом и неизвестно как она его настроила, в каком состоянии бросила. EscapeCommFunction позволяет установить + или - грубо говоря, на выходе управляющих пинов порта - очень проста - EscapeCommFunction(hPort,SETRTS) - где hPort -хэндл порта, полученный при успешном вызове CreateFile. Описание функций естьв MSDN. Ну или воспользуйся готовым компонентом для работы с портом (как правило упрощает написание программ), в интернете были хорошие компоненты. Можно и просто через порты, если использовать драйвер - какие-то тоже были в интернете, но мне кажется лучше использовать API или нормальный компонент - ибо вся функциональность там есть, чем использовать "лом" (это я о драйвере).
← →
andrewtitoff © (2009-12-01 20:06) [6]
> Можно и просто через порты, если использовать драйвер
Чет я непонял, а при чем тут драйвер?, я вообще-то про прямое обращение к порту...
как раньше было на паскале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 20:11) [7]
> но можно же извратиться встроеннвм асмом
Низзя.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.01.24;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c