Форум: "Прочее";
Текущий архив: 2009.09.06;
Скачать: [xml.tar.bz2];
ВнизОпределить замыкание 2х ножек com порта Найти похожие ветки
← →
DelphiN! (2009-07-02 13:53) [0]Доброго времени суток!
Подскажите как определить замкнуты ли скажем 1ая и 5ая ножки com порта или нет?
← →
matt © (2009-07-02 14:10) [1]тестером?
← →
DelphiN! (2009-07-02 14:14) [2]
> matt © (02.07.09 14:10) [1]
из программы?
В порт воткнута кнопка, которая замыкает 2 ножки. Как определить из моей программы, нажата кнопка или нет?
← →
Юрий Зотов © (2009-07-02 14:15) [3]Читать порт?
← →
tesseract © (2009-07-02 14:15) [4]Програмно можно определить только замыкание DTR/CTS . И вроде Ring.
← →
orinoko (2009-07-02 14:21) [5]программно ещё можно определить замыкание RxD/TxD. послать чтото в порт. если приняли это "чтото" - значит кнопка замкнута
← →
DelphiN! (2009-07-02 14:23) [6]
> orinoko (02.07.09 14:21) [5]
> программно ещё можно определить замыкание RxD/TxD. послать
> чтото в порт. если приняли это "чтото" - значит кнопка замкнута
Не поможете простейшим примером?
← →
Вариант (2009-07-02 14:23) [7]
> DelphiN! (02.07.09 14:14) [2]
Только не 1 и 5.
для 9 - pin можно использовать пары CTS <->RTS (7 и 8) или DTR <-> DSR (4 и 6) или другие комбинации вход выход.
Открыть COM порт (см. CreateFile), установить сигнал на выходном контакте в выскоий уровень (см. EscapeCommFunction), читаем состояние входного контакта (см. GetCommModemStatus).
> orinoko (02.07.09 14:21) [5]
Это сложней реализовать программно..
← →
orinoko (2009-07-02 14:48) [8]
> Не поможете простейшим примером?
Да возьмите любой компонент, если лень разбираться с CreateFile/Write/Read. Послать набор символов. И по событию получить строку и сравнить с посланной. Если ничего нет в течение некоторого времени, то кнопка разомкнута.
← →
DelphiN! (2009-07-02 14:54) [9]
> Вариант (02.07.09 14:23) [7]
Замкнул 4ый и 8ой контакты(CTS/DTR), сделал следующее :
Var
FHandle: Thandle;
st: DWord;
begin
{Открыть COM порт (см. CreateFile)}
FHandle := CreateFile(PChar("com1"),
GENERIC_READ + GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
if FHandle = INVALID_HANDLE_VALUE then
ShowMessage("Can not open " + "Com1" + ": " + IntToStr(GetLastError));
{установить сигнал на выходном контакте в выскоий уровень (см. EscapeCommFunction)}
EscapeCommFunction(FHandle,SETDTR);
{читаем состояние входного контакта (см. GetCommModemStatus)}
if GetCommModemStatus(FHandle,st) then
begin
if st and MS_CTS_ON <> 0 then
ShowMessage("CTS - включен")
else
ShowMessage("CTS - выключен");
end;
ShowMessage("Значение в ST: "+IntToStr(st));//inttostr(dcb.BaudRate));
CloseHandle(FHandle);
Однако функция GetCommModemStatus возвращает в st 0 если контакты замкнуты или не замкнуты. Где я ошибся?
← →
Вариант (2009-07-02 15:23) [10]
> DelphiN! (02.07.09 14:54) [9]
не проверил на ошибку EscapeCommFunction, и не проверил на ошибку GetCommModemStatus(есть только успешный ее вариант). в случае ошибки ее st не определен. Я сделал то же самое, единственно с RTS сигналом (7-8) - все нормально. Но, я просто замыкал перемычкой (разъем заглушка). При работе с кнопкой надо учитывать дребезг контактов. Например давать Sleep(100) перед чтением состояния модема. Сперва отладь программу на перемычке без кнопки.
← →
Вариант (2009-07-02 15:24) [11]
> Вариант (02.07.09 15:23) [10]
> Например давать Sleep(100) перед чтением состояния модема.
>
Надо читать несколько раз и перед повторным чтением делать паузу.
← →
DelphiN! (2009-07-02 15:35) [12]
> Вариант (02.07.09 15:23) [10]
Спасибо, заработало, перепутал контакты ... )
← →
KilkennyCat © (2009-07-05 19:41) [13]Вообще-то, кнопки есть на порту джойстика. причем, они там именно кнопки. изначально. с рождения. минимум две.
← →
Германн © (2009-07-06 00:55) [14]
> KilkennyCat © (05.07.09 19:41) [13]
>
> Вообще-то, кнопки есть на порту джойстика. причем, они там
> именно кнопки. изначально. с рождения. минимум две.
>
Не у всех нынче есть порт джойстика.
(Это во-первых :).
← →
KilkennyCat © (2009-07-06 01:59) [15]
> Германн © (06.07.09 00:55) [14]
Тогда, во-вторых, надо паять контроллер, который нажатия кнопок передаст как данные, а не вешать опять лампочки на лпт. Тем более, что на какой-нить аврке это в пять сек и затрат, если не считать труда и корпус - рублей 60-100.
← →
Германн © (2009-07-06 02:12) [16]
> KilkennyCat © (06.07.09 01:59) [15]
>
>
> > Германн © (06.07.09 00:55) [14]
>
Это ты не мне. Это ты автору скажи.
:)
← →
KilkennyCat © (2009-07-06 02:15) [17]а зря джойстиковый порт убрали. готовый девайс для кнопок и переменных резисторов.
← →
Anatoly Podgoretsky © (2009-07-06 09:24) [18]> KilkennyCat (06.07.2009 02:15:17) [17]
Народ им не пользовался.
← →
Fredy314 © (2009-07-09 14:49) [19]А лампочки на ЛПТ это прикольно, надо попробовать пока ЛПТ не отменили, а-то гейм порт уже не ставят на материнках, видеокарты тоже интекрированые через раз, скоро и КОМ с ЛПТ перестанут выпускать
← →
Anatoly Podgoretsky © (2009-07-09 15:27) [20]> Fredy314 (09.07.2009 14:49:19) [19]
Так в современных компьютерах, по спецификации PC99 в компьютрере не должно быть COM и LPT портов, и такие компьютеры есть.
← →
brother © (2009-07-10 04:35) [21]> в компьютрере не должно быть COM и LPT портов, и такие компьютеры
> есть.
причем не мало уже...
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2009.09.06;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.005 c