Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1246912210
Юрий
2009-07-07 00:30
2009.09.06
С днем рождения ! 7 июля 2009 вторник


15-1246616362
hinst
2009-07-03 14:19
2009.09.06
преобразование assembler в pascal


15-1247085005
Юрий
2009-07-09 00:30
2009.09.06
С днем рождения ! 9 июля 2009 четверг


4-1216237260
batya-x
2008-07-16 23:41
2009.09.06
буфер обмена


15-1246640964
Тимохов_
2009-07-03 21:09
2009.09.06
Как узнать позицию каретки в TEdit?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский