Компот и его контакты

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Компот и его контакты

Сообщение TiG » 07.04.2009 (Вт) 11:49

Подскажите пожалуйста можно ли программно определить замкнуты ли определённые контакты компорта или нет. ОС XP, стандартный ком.
Все мои игрушки мама разметало ураганом...

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Компорт и его контакты

Сообщение Хакер » 07.04.2009 (Вт) 14:20

COM-порт, это не RAW-порт с какими-то контактами, это интерфейс RS-232. Это интерфейс последовательной передачи данных.

Какие контакты тебя интересуют? Их там всего-то 9 и все имею своё специальное предназначение. И как понять замкнуты? Если ты замкнёшь каких-нибудь два выхода ком-порта, то ты просто его сожжешь.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Re: Компорт и его контакты

Сообщение TiG » 07.04.2009 (Вт) 14:32

RTS(7)+CTS(8)
DTR(4)+DSR(6),DCD(1)
Все мои игрушки мама разметало ураганом...

HAWK
Википедик
Википедик
 
Сообщения: 74
Зарегистрирован: 02.04.2009 (Чт) 19:28

Re: Компорт и его контакты

Сообщение HAWK » 07.04.2009 (Вт) 18:58

Вот DLLка для работы с COM портом.
Там есть описание функций.
В общем, сначала с помощью функции OpenCom открываешь порт и получаешь его хендл.
Далее с помошью функций GetComCTS, GetComDSR, GetComDCD определяешь логические уровни на соответствующих входах порта.
А с помощью функций SetComDTR и SetComRTS илменяешь логические уровни на выходах порта.

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Re: Компорт и его контакты

Сообщение TiG » 07.04.2009 (Вт) 21:44

жуть, я половину тока понял, можно на пальцах или с кодом там примером)?

HAWK
Википедик
Википедик
 
Сообщения: 74
Зарегистрирован: 02.04.2009 (Чт) 19:28

Re: Компорт и его контакты

Сообщение HAWK » 08.04.2009 (Ср) 10:12

Вот пример на языке PureBaisc
Код: Выделить всё
If OpenLibrary(0, "ComPort_Pb.dll")=0 ; Загружаем динамическую библиотеку ComPort_Pb.dll
MessageRequester("Ошибка", "Не удалось найти файл  ComPort_Pb.dll", #MB_OK|#MB_ICONERROR)
End ; Т. к. библиотека не найдёна, то завершаем работу программы.
EndIf

; Вызываем функцию "OpenCom" из "ComPort_Pb.dll",
; которая открывает порт COM1 (1), со скоростью обмена 9600 бод (9600),
; контроль чётности отключён (0), с восьмю битамии в посылке (8),
; длина стоп-бита равна 1 (1), управление потоком отсутствует (0)
; размер буфера приёма и передачи равен 255 байт (255).
; В переменную Handle будет помещён хендл порта или ноль если не удалось открыть порт.
Handle = CallFunction(0, "OpenCom", 1 ,9600, 0, 8, 1, 0, 255, 255)

If Handle=0 ; Порт занят либо отсутствует в системе
MessageRequester("", "Не удалось открыть порт", #MB_OK|#MB_ICONERROR)
End ; Т. к. порт не доступен, то завершаем работу программы.
EndIf


; Вызываем функции из "ComPort_Pb.dll".
; "SetComDTR" установит на выходе DTR отрицательное напряжение,
; а "SetComRTS" установит положительное напряжение на выходе RTS
CallFunction(0, "SetComDTR", Handle, 0)
CallFunction(0, "SetComRTS", Handle, 1)

; Вызываем функции из "ComPort_Pb.dll".
; Они возвращяют 0 или 1, в зависимости от напряжения на соответствующем входе
CTS = CallFunction(0, "GetComCTS", Handle)
DSR = CallFunction(0, "GetComDSR", Handle)
DCD = CallFunction(0, "GetComDCD", Handle)


CallFunction(0,"CloseCom", Handle) ; Закрываем порт


В начале проги с помощью функции OpenLibrary загружается DLLка.
Если её удалось загрузить, то с помощью CallFunction производится вызов функций DLLки.
Первой вызывается фунуция "OpenCom".
Она открывает порт COM1, со скоростью обмена 9600 бод.
Имя порта определяет первый аргумент функции.
Сейчас там число 1, значит будет открыт порт COM1, а если там, скажем, было бы число 4, то открывался бы порт COM4.
Функция возвращает хендл порта - его идентификатор в систме по которму мы будем дальше обращатся к порту.
Этот идентификатор не равен нулю.
В случае если функция вернёт 0, то это значит что порт не удалось открыть.

Далее, с помощью функции "SetComDTR" устанавливается отрицательное напряжение на выходе DTR порта.
А функция "SetComRTS" установит положительное напряжение на выходе RTS порта.
Напряжение задаёт аргумент функции если он равен 1, то напряжение положительное, а если 0, то отрицательное.

Делее находятся функции, которые определяют текущий логический уровень (0 или 1) на входах CTS, DSR и DCD и записываеют его значение в одноимённые переменные.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Компорт и его контакты

Сообщение alibek » 08.04.2009 (Ср) 10:40

HAWK, ты читать умеешь?
Lasciate ogni speranza, voi ch'entrate.

HAWK
Википедик
Википедик
 
Сообщения: 74
Зарегистрирован: 02.04.2009 (Чт) 19:28

Re: Компорт и его контакты

Сообщение HAWK » 08.04.2009 (Ср) 11:02

Умею.
Код привёл и обясник как он работает.
Что не так?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Компорт и его контакты

Сообщение alibek » 08.04.2009 (Ср) 11:14

Прочитай название подфорума.
Lasciate ogni speranza, voi ch'entrate.

HAWK
Википедик
Википедик
 
Сообщения: 74
Зарегистрирован: 02.04.2009 (Чт) 19:28

Re: Компорт и его контакты

Сообщение HAWK » 08.04.2009 (Ср) 11:55

Я знаю что здесь обсуждение VB, но я его не знаю.
Я выложил DLLку.
TiG попросил объяснить как с ней работать.
Ну и я написал программу на PureBasic и хорошо её откомментировал так, чтобы понятно было.

А что лучше было бы если бы написал что-то типа этого "Извини, я VB незнаю, так что разбирайся как хочешь" :shock:

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Компорт и его контакты

Сообщение alibek » 08.04.2009 (Ср) 12:05

Если на форуме по MSSQL будет вопрос про хранимые процедуры, ты будешь давать советы для MySQL потому что MySQL ты знаешь, а MSSQL нет?
Lasciate ogni speranza, voi ch'entrate.

HAWK
Википедик
Википедик
 
Сообщения: 74
Зарегистрирован: 02.04.2009 (Чт) 19:28

Re: Компот и его контакты

Сообщение HAWK » 08.04.2009 (Ср) 12:16

Повторяю ещё раз.
Я выложил DLLку написаную на PureBasic.
Она естественно будет работать и с VB.
Но TiG кое-что не понял из описания и попросил привести пример.
Я VB незнаю, поэтому привёл пример на том, что знаю.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Компот и его контакты

Сообщение jangle » 08.04.2009 (Ср) 12:21

HAWK писал(а):Повторяю ещё раз.
Я выложил DLLку написаную на PureBasic.


Надо выкладывать скомпилированную DLL, как топикстартер будет использовать твой исходник?

HAWK
Википедик
Википедик
 
Сообщения: 74
Зарегистрирован: 02.04.2009 (Чт) 19:28

Re: Компот и его контакты

Сообщение HAWK » 08.04.2009 (Ср) 12:28

Так там есть и скомпилированая DLLка "ComPort_Pb.dll" и её исходник

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Re: Компот и его контакты

Сообщение TiG » 09.04.2009 (Чт) 12:23

сравнивая свойства контрола мскомм rtsenbled и rtshandle тоже неплохо получилось

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Re: Компот и его контакты

Сообщение TiG » 09.04.2009 (Чт) 12:24

CTSHolding точней)))
Все мои игрушки мама разметало ураганом...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 60

    TopList  
cron