Программирование протокола Pelco-D

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
alexxx033
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 18.07.2011 (Пн) 11:44

Программирование протокола Pelco-D

Сообщение alexxx033 » 18.07.2011 (Пн) 11:50

Дорогие прогаммисты, есть задача написать программу для управления купольной видеокамерой по протоколу Pelco-D, на VB6, прошу вашей помощи, нужны исходники с описанием, как открыть СОМ порт, как его прослушивать, как читать данные по протоколу Pelco-D и принимать их по RS-485

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

Re: Программирование протокола Pelco-D

Сообщение Хакер » 18.07.2011 (Пн) 12:03

alexxx033 писал(а):как открыть СОМ порт

Точно так же, как файл.

alexxx033 писал(а):как его прослушивать, как читать данные

Чтение и запись точно так же, как в файл.

Ну и есть ещё контрол MSComm, если файловая абстракция не устраивает.

alexxx033 писал(а):как читать данные по протоколу Pelco-D и принимать их по RS-485

Читай документацию по соотв. протоколам.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

alexxx033
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 18.07.2011 (Пн) 11:44

Re: Программирование протокола Pelco-D

Сообщение alexxx033 » 19.07.2011 (Вт) 9:40

Спасибо за ответ, но можно как-то по подробнее, я начинающий программист, и многое мне еще не понятно. Сейчас занимаюсь программой с привязкой купольной видеокамеры, программа уже готова, осталось разобраться как управлять камерой через мою программу, а знаний не хватает, прошу помочь кто может, желательно с примерами кодов. Заранее всем спасибо!

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

Re: Программирование протокола Pelco-D

Сообщение Хакер » 19.07.2011 (Вт) 10:15

У нас тут не приветствуется нытьё про «по подробнее» и примеры. Конкретный чёткий вопрос → конкретный чёткий ответ. Вот как должно быть организовано общение.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

alexxx033
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 18.07.2011 (Пн) 11:44

Re: Программирование протокола Pelco-D

Сообщение alexxx033 » 19.07.2011 (Вт) 10:39

Могу подробнее. Нужен код открытия сом порта, чтения его и передача сигнала по протоколу Pelco-D

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: Программирование протокола Pelco-D

Сообщение ark » 19.07.2011 (Вт) 12:25

alexxx033 писал(а):Могу подробнее. Нужен код открытия сом порта, чтения его и передача сигнала по протоколу Pelco-D


Код: Выделить всё
    Dim Data As String
    MSComm1.CommPort = 1
    MSComm1.PortOpen = True '/*открытие*/
    MSComm1.Settings = "9600,n,8,1" 'скорость 9600 бит/сек, без паритета, 8 бит в симв/, 1 стоп.
    Data = MSComm1.Input '/*чтение*/
    MSComm1.Output = ConvertToPelcoProtoco("Hello") ' /*передача*/
    MSComm1.DTREnable = True 
    MSComm1.PortOpen = False

Подробно

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Программирование протокола Pelco-D

Сообщение ger_kar » 19.07.2011 (Вт) 13:52

ark писал(а):Подробно
Прочитал с интересом, раньше этим никогда не интересовался (не надо было). А тут просто прочитал с интересом. Изложено обстоятельно и подробно, кроме всего прочего понятно и самое главное - на русском :) .
Бороться и искать, найти и перепрятать

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

Re: Программирование протокола Pelco-D

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

ger_kar писал(а):Изложено обстоятельно

Интересно, те, кто это писал, в курсе, что в VB вместо CreateFile можно использовать обыкновенное VB-шное Open ... For ... As .... И в курсе ли они, что за магические константы их надо бить поганой метлой?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Программирование протокола Pelco-D

Сообщение ger_kar » 19.07.2011 (Вт) 16:18

Хакер писал(а):Интересно, те, кто это писал, в курсе, что в VB вместо CreateFile можно использовать обыкновенное VB-шное Open ... For ... As ....
Ну я обычно для работы с файлами пользуюсь либо встроенными VB шными средствами, либо FSO, WinAPI не использовал ни разу, а тут посмотрел и на такую реализации, так сказать до кучи :) .
Хакер писал(а):И в курсе ли они, что за магические константы их надо бить поганой метлой?
Ну ты очень суров :) Но, а вообще то статья хорошая, я так подробно про COM порт до этого еще нигде не читал.
Последний раз редактировалось ger_kar 19.07.2011 (Вт) 16:45, всего редактировалось 2 раз(а).
Бороться и искать, найти и перепрятать

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

Re: Программирование протокола Pelco-D

Сообщение Хакер » 19.07.2011 (Вт) 16:19

ger_kar писал(а):Ну ты очень суров :)

Жизнь сурова. Она не прощает плохой код.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: Программирование протокола Pelco-D

Сообщение ark » 20.07.2011 (Ср) 1:27

ger_kar писал(а):Изложено обстоятельно

Вот именно что обстоятельно. Это как раз ликбез, а не готовый код на все случаи жизни, как требует alexxx033. ИМХО написано просто и понятно.
Хакер писал(а):Интересно, те, кто это писал, в курсе, что в VB вместо CreateFile можно использовать обыкновенное VB-шное Open ... For ... As ....
Думаю, в курсе. Думаю, они даже в курсе, что можно также пользовать Set com = fso.OpenTextFile("COM1:9600,N,8,1", ForReading), а досовские команды можно обернуть в Shell или wsh.Run. Статья не исключительно под ВБ заточена.
Хакер писал(а):И в курсе ли они, что за магические константы их надо бить поганой метлой?

dwDesiredAccess- режим доступа к файлу.Это четырехбайтовое число, которое задает различные режимы доступа к файлу. Нас интересует только режим чтение и запись, этот режим задаётся числом: С0000000hex в СИ можно вместо числа записать константу с именем "GENERIC_READ|GENERIC_WRITE".
dwShareMode- режим совместного доступа. СОМ-порты ПК не поддерживают совместный доступ, только одна программа может открыть порт. Поэтому этот параметр должен быть равен 0(режим запрещен).
lpSecurityAttributes- атрибуты защиты файла. Для СОМ-портов не используется поэтому всегда равны 0 ("NULL").
dwCreationDistribution- управление режимом автосоздания файла. Это четырехбайтовое число, которое для СОМ портов всегда должно быть 00000003hex ("OPEN_EXISTING")
Чего ж тут магического? Ну не было у авторов задачи весь Enum от CreateFile копипастить.

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

Re: Программирование протокола Pelco-D

Сообщение Хакер » 20.07.2011 (Ср) 3:10

ark писал(а):Чего ж тут магического?

Код: Выделить всё
  Retval = CreateFile("COM1:", &HC0000000, 0, 0, 3, 0, 0)

На месте всех этих чисел должны быть константы.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: Программирование протокола Pelco-D

Сообщение ark » 20.07.2011 (Ср) 3:51

Хакер писал(а):На месте всех этих чисел должны быть константы.

Да они ж все описаны НА ЭТОЙ ЖЕ странице, а не где-то еще - я ж цитату привел. Согласен, в конечном модуле должны быть константы, но это ж куски, а не сборка. Там нету также Option Explicit, и SecurityAttributes жестко по ссылке передаются, и dwCreationDistribution, при внимательном прочтении можно грамматические/синтаксические ошибки найти.

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

Re: Программирование протокола Pelco-D

Сообщение Хакер » 20.07.2011 (Ср) 4:27

ark писал(а):Да они ж все описаны НА ЭТОЙ ЖЕ странице, а не где-то еще - я ж цитату привел. Согласен, в конечном модуле должны быть константы, но это ж куски, а не сборка.


Константы должны быть везде. Особенно в учебном примере.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: Программирование протокола Pelco-D

Сообщение ark » 20.07.2011 (Ср) 5:39

Хакер писал(а):Константы должны быть везде. Особенно в учебном примере.

ИМХО не факт. Вы в примере по СОМу (не этому), или нативному НТ, или по реестру (причем конкретному примеру, а не общему обзору), где HRESULT возвращается, будете с ERROR_SUCCESS или с 0 сравнивать?
Там при внимательном рассмотрении и покруче ляпы на ВБ есть - Read/WriteFile lpOverlapped As Long по ссылке, однако ИМХо это частности, соринки, на которые можно заметить автору, но не хаять огульно.

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

Re: Программирование протокола Pelco-D

Сообщение Хакер » 20.07.2011 (Ср) 5:42

ark писал(а):HRESULT

HRESULT буду сравнивать макросом SUCCEED. Это битфиелд, и неудачей считается не конкретный код, а сброшенный сбойный бит.

NTSTATUS буду сравнивать с STATUS_SUCCESS.

ark писал(а):покруче ляпы на ВБ есть - Read/WriteFile lpOverlapped As Long по ссылке, однако ИМХо это частности, соринки, на которые можно заметить автору,

Это досадные ошибки, который каждый делает. А вот неиспользование констант — это принципиальная позиция. Куда серьёзнее.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: Программирование протокола Pelco-D

Сообщение ark » 20.07.2011 (Ср) 6:33

Хакер писал(а):NTSTATUS буду сравнивать с STATUS_SUCCESS.

Я имею в виду именно ВБ. Неуж-то будете объявлять
Код: Выделить всё
Public Const STATUS_SUCCESS As Long=0
Public Const NT_SUCCESS As Long=0
Public Const ERROR_SUCCESS As Long=0
Public Const NO_ERROR As Long=0
:o

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

Re: Программирование протокола Pelco-D

Сообщение Хакер » 20.07.2011 (Ср) 6:34

ark писал(а): Неуж-то будете объявлять

Никак не иначе.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

alexxx033
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 18.07.2011 (Пн) 11:44

Re: Программирование протокола Pelco-D

Сообщение alexxx033 » 20.07.2011 (Ср) 6:40

Меня интересует, вобще кто-то знает, можно ли по протоколу Pelco-D принимать данные о позиционировании камеры, или по этому протоколу можно только управлять

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: Программирование протокола Pelco-D

Сообщение ark » 20.07.2011 (Ср) 6:58

alexxx033 писал(а):Меня интересует, вобще кто-то знает, можно ли по протоколу Pelco-D принимать данные о позиционировании камеры, или по этому протоколу можно только управлять

Разработчики наверняка знают http://cvs.ru/files/pelco-d.pdf
Devices that receive the “D” protocol may generate a response.

Если с буржуинским языком туго - смысл такой - на команду ответит, сама молчит как партизан. В третьем байте будет алярм, ежли чего не так. Вы конкретные вопросы по названию форума задавать будете? :P

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: Программирование протокола Pelco-D

Сообщение ark » 20.07.2011 (Ср) 7:19

Хакер писал(а):Никак не иначе.

Не верю
(с) не моё :)

alexxx033
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 18.07.2011 (Пн) 11:44

Re: Программирование протокола Pelco-D

Сообщение alexxx033 » 20.07.2011 (Ср) 7:21

Нужен код , под конкретную задачу. При перемещении камеры на некоторый угол, она по протоколу Pelco-D, передает свои данные о позиционировании, а именно угла поворота относительно горизонтальной и вертикальной оси. затем эти данные обрабатываются в программе. Мне необходимо каким-то образом получить эти данные. Я не знаю как этого добиться. Поэтому и спрашиваю у специалистов.

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: Программирование протокола Pelco-D

Сообщение ark » 20.07.2011 (Ср) 7:45

alexxx033 писал(а):Нужен код , под конкретную задачу.

Тогда Вам, скорее всего, надо искать форум по соответствующему протоколу. Здесь Вам дадут совет по ВБ, и, если повезет и кто-то уже занимался с этим протоколом, примеры кода. По видимому, этот протокол всё-таки уступает в популярности, скажем, NMEA, поэтому готового кода ни у кого нет. Согласно протоколу (см ссылку), есть команда Query. Чего она делает - ХЗ, видимо отдана на откуп разработчикам. См. доки по камере.
Вот пример http://www.codeproject.com/KB/cs/PelcoPDinC.aspx

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Программирование протокола Pelco-D

Сообщение ger_kar » 20.07.2011 (Ср) 8:27

Ну вот посмотрел я спор по поводу магических констант, что тут можно сказать, так сказать взгляд начинающего.
Ну во первых сам по себе код Retval = CreateFile("COM1:", &HC0000000, 0, 0, 3, 0, 0) мне например больше импонирует, чем длинющая запись с использованием именованных констант, что в этом плохого и непонятного? Все коротко и ясно. А для болшей ясности можно еще и комментарий добавить.
ark писал(а):Я имею в виду именно ВБ.
Неуж-то будете объявлятьКод:
Public Const STATUS_SUCCESS As Long=0
Public Const NT_SUCCESS As Long=0
Public Const ERROR_SUCCESS As Long=0
Public Const NO_ERROR As Long=0

Хакер писал(а):Никак не иначе.

Это видимо, кто как привык, кому как удобнее, мне например кажеться, что объявлять кучу констант, причем все равные нулю, а потом в передаваемых параметрах строчить длинющие имена, это извращение, расчитанное на любителя. Да и ясности это особо не добавляет. Лучше добавить комент, с описанием, что за параметры передаются, и понятнее и удобнее.
Бороться и искать, найти и перепрятать

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

Re: Программирование протокола Pelco-D

Сообщение Хакер » 20.07.2011 (Ср) 8:33

ger_kar писал(а):Это видимо, кто как привык, кому как удобнее, мне например кажеться, что объявлять кучу констант, причем все равные нулю, а потом в передаваемых параметрах строчить длинющие имена, это извращение, расчитанное на любителя.

Это не извращение, а правило. За его нарушение должны уволнять, а на лбу ставить клеймо «быдлокодер», чтобы никуда в другие места не приняли.

Очевидно, что в голове несведущих хорошие вещи и плохие поменялись местами.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: Программирование протокола Pelco-D

Сообщение ark » 20.07.2011 (Ср) 9:03

Хакер писал(а):Это не извращение, а правило. За его нарушение должны уволнять, а на лбу ставить клеймо «быдлокодер», чтобы никуда в другие места не приняли. Очевидно, что в голове несведущих хорошие вещи и плохие поменялись местами.

Хакер, это ВБ, который допускает некоторые вольности. Поверь, мне так же известны "правила хорошего тона", особенно если речь идет о групповых проектах, но неуж-то и все переменные в венгерских нотациях объявлять?
ЗЫ @ger_car: Константы объявлять НАДО. Но ИМХО, во всем должно быть чувство меры. Тут недалеко и до священных войн за то, кто какой стороной яйцо разбивает.

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

Re: Программирование протокола Pelco-D

Сообщение Хакер » 20.07.2011 (Ср) 9:07

ark писал(а):особенно если речь идет о групповых проектах, но неуж-то и все переменные в венгерских нотациях объявлять?

Выбор нотации — дело программиста. Но оставить магические константы нельзя никогда, если язык поддерживает константы. Исключения составляют случае, когда число обозначает просто число, а не какой-то режим, ключ и т.п.

Я не понимаю, к чему было сказано, что VB позволяет вольности. VB позволяет использовать вместо констант волшебные числа в той же степени, что и любые другие языки.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: Программирование протокола Pelco-D

Сообщение ark » 20.07.2011 (Ср) 9:24

Хакер писал(а):Я не понимаю, к чему было сказано, что VB позволяет вольности. VB позволяет использовать вместо констант волшебные числа в той же степени, что и любые другие языки.

Я про объявление переменных, кастование типов и т.п. Поэтому ИМХО и объявление одной константы S_OK, скажем, вместо десятка повторов укладывается в русло этих вольностей (с учетом отсутствия include) и клеймить за это не стоит.
ЗЫ, ради интереса, по вашим суровым правилам на DeviceIo константы напрямую объявлять кошерно или надо через CTL_CODE? :)

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

Re: Программирование протокола Pelco-D

Сообщение Хакер » 20.07.2011 (Ср) 9:28

ark писал(а):(с учетом отсутствия include)

С учётом наличия TLB, константы объявляются один раз и на всю жизнь.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: Программирование протокола Pelco-D

Сообщение ark » 20.07.2011 (Ср) 9:30

Хакер писал(а):С учётом наличия TLB, константы объявляются один раз и на всю жизнь.

TLB!=VB :P

След.

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 51

    TopList