Форум программистов, компьютерный форум, киберфорум
АСУ ТП, промэлектроника
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.81/246: Рейтинг темы: голосов - 246, средняя оценка - 4.81
2 / 2 / 0
Регистрация: 01.05.2012
Сообщений: 33

Управление купольной антивандальной камерой по RS-485

01.05.2012, 18:05. Показов 54396. Ответов 111

Студворк — интернет-сервис помощи студентам
Суть проблемы.

Есть антивандальная камера. У нее есть интрефейс управления RS485. Необходимо написать программу управления данной камерой на C#.

Для подключения камеры к ПК используется переходник UCON-485-USB.
Команды камере описаны в протоколе D-protocol.pdf.

Архив с программой С#.rar


Сам код

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
using System.Threading;
using System.IO;
 
 
 
namespace Terminal
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            string temp;
            serialPort1.PortName = ((string)comboBox1.SelectedItem);          
            serialPort1.Parity = (Parity)Enum.Parse(typeof(Parity),(string)comboBox3.SelectedItem);
            temp = ((string)comboBox2.SelectedItem);
            temp = temp.ToString();
            serialPort1.BaudRate = (int.Parse(temp));        
            serialPort1.StopBits = ((StopBits)Enum.Parse(typeof(StopBits),(string)comboBox4.SelectedItem));
            try
            {
                serialPort1.Open();
                button1.Enabled = false;
                button2.Enabled = true;
                button3.Enabled = true;
            }
            catch (InvalidOperationException)
            {                
            }
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            serialPort1.Close();
            button1.Enabled = true;
            button2.Enabled = false;
            button3.Enabled = false;
        }
 
        public string SetPortName(string defaultPortName)
        {
            string portName="";
            foreach (string portname in SerialPort.GetPortNames())
            {
                comboBox1.Items.Add(portname); //добавить порт в список  
            }
            comboBox1.SelectedIndex = 0;
            if (portName == "")
            {
                portName = defaultPortName;
            }
            return portName; //возвращает порт по умолчанию
        }
 
        public int SetPortBaudRate(int defaultPortBaudRate)
        {
            string baudRate = "";
            if (baudRate == "")
            {
                baudRate = defaultPortBaudRate.ToString();
            }
            return int.Parse(baudRate);
        }
 
        public Parity SetPortParity(Parity defaultPortParity)
        {
            string parity = "";
            foreach (string paritybit in Enum.GetNames(typeof(Parity)))
            {
                parity = paritybit.ToString();
                comboBox3.Items.Add(parity);
            }
            comboBox3.SelectedIndex = 0;
            if (parity == "")
            {
                parity = defaultPortParity.ToString();
            }
            return (Parity)Enum.Parse(typeof(Parity), parity);
        }
 
        public int SetPortDataBits(int defaultPortDataBits)
        {
            string dataBits = "9600";
            if (dataBits == "")
            {
                dataBits = defaultPortDataBits.ToString();
            }
            return int.Parse(dataBits);
        }
 
        public StopBits SetPortStopBits(StopBits defaultPortStopBits)
        {
            string stopBits = "";
            foreach (string stopbits in Enum.GetNames(typeof(StopBits)))
            {
                stopBits = stopbits.ToString();
                comboBox4.Items.Add(stopbits);
            }
            comboBox4.SelectedIndex = 1;
            if (stopBits == "")
            {
                stopBits = defaultPortStopBits.ToString();
            }
            return (StopBits)Enum.Parse(typeof(StopBits), stopBits);
        }
 
        public  Handshake SetPortHandshake(Handshake defaultPortHandshake)
        {
            string handshake = "";
            foreach (string handshakes in Enum.GetNames(typeof(Handshake)))
            {
                handshake = handshakes;
            }
            if (handshake == "")
            {
                handshake = defaultPortHandshake.ToString();
            }
            return (Handshake)Enum.Parse(typeof(Handshake), handshake);
        }
 
        public void BaudRateget()
        {
            string[] listbaudrate = new string[15];
            listbaudrate[0] = "110";
            listbaudrate[1] = "300";
            listbaudrate[2] = "600";
            listbaudrate[3] = "1200";
            listbaudrate[4] = "2400";
            listbaudrate[5] = "4800";
            listbaudrate[6] = "9600";
            listbaudrate[7] = "14400";
            listbaudrate[8] = "19200";
            listbaudrate[9] = "38400";
            listbaudrate[10] = "56000";
            listbaudrate[11] = "57600";
            listbaudrate[12] = "115200";
            listbaudrate[13] = "128000";
            listbaudrate[14] = "256000";
            comboBox2.Items.AddRange(listbaudrate);
            comboBox2.SelectedIndex = 6;
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {           
            serialPort1.PortName = SetPortName(serialPort1.PortName);
            serialPort1.Parity = SetPortParity(serialPort1.Parity);
            serialPort1.BaudRate = SetPortBaudRate(serialPort1.BaudRate);
            serialPort1.StopBits = SetPortStopBits(serialPort1.StopBits);
            serialPort1.Handshake = SetPortHandshake(serialPort1.Handshake);
            BaudRateget();
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            string writestring;
            writestring = textBox2.Text;
            try
            {
                serialPort1.WriteLine(String.Format("{0}", writestring));
                textBox2.Clear();
            }
            catch (TimeoutException)
            {
            }
        }
 
        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            string readstring;        
            try
            {
                readstring = serialPort1.ReadLine();
                                                                
            }
            catch (TimeoutException)
            {
            }                      
        }
    }    
}

команду записываю в строку и отправляю.
ну устройстве UCON-485 отображается, что передача осуществилась, но активности камеры ноль, как была мертвой так и остается.

Камера рабочая, при включении питания, камера калибруется.

Подскажите в чем может быть проблема.

возможно я не правильно формирую посылку или проблемы в скоростях камеры и устройства передачи, но я пробежал по всей гребенке скоростей устройства UCON-485, изменений не было.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.05.2012, 18:05
Ответы с готовыми решениями:

Управление нагрузкой с компьютера по RS-485
Всем драсьте! Работаю простым электриком и в свободное от работы время занимаюсь саморазвитием и хочу научиться управлять нагрузкой 220\380...

Управление 3D-камерой
Доброго времени суток, уважаемые знатоки. Есть два куска кода, которые должны по идее совершенно одинаково управлять вращением 3D-камеры....

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

111
0 / 0 / 0
Регистрация: 05.04.2013
Сообщений: 22
09.04.2013, 13:29
Студворк — интернет-сервис помощи студентам
Такс, я вообще запутался)))
Можно я с начала начну!
Итак, имеем камеру VCC-9400P б/у, При простом подключении к программе geovision 8,5 видео показывает, но камера, постоянно работает по своей траектории.
Был куплен RS485 вот такой.

так как у камеры
12. Разъем управления камерой (5 контактов, черный).
К этому разъему подключается витая пара в случае управления по интерфейсу RS-485. Подключите к это-му разъему кабель из принадлежностей, к кабелю под-ключите требуемые устройства (например, системный контроллер).
Я подключил Оранжевый+ желтый -

В программе, все дела как показано на рисунках

Но ничего не выходит.
Миниатюры
Управление купольной антивандальной камерой по RS-485  
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
09.04.2013, 13:40
...вы модуль расширения в ПК приобрели? Название у него имеется или гладиолусом зовется? Его тоже настроили, мож там перемычки какие есть, где документация на модуль?

Оранж+ желт- - это от камеры, сверились с документацией?
0
0 / 0 / 0
Регистрация: 05.04.2013
Сообщений: 22
09.04.2013, 13:52
Цитата Сообщение от raxp Посмотреть сообщение
...вы модуль расширения в ПК приобрели? Название у него имеется или гладиолусом зовется? Его тоже настроили, мож там перемычки какие есть, где документация на модуль?
Модуль называется GV-Net card. В программе его настроил, перемычек никаких нет.

Цитата Сообщение от raxp Посмотреть сообщение
Оранж+ желт- - это от камеры, сверились с документацией?
Как я понял из мануала
1A (+) Orange
2 B (–) Yellow
3 A (+) Green
4 B (–) Gray
5 GND White
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
09.04.2013, 14:06
...так, теперь вопрос - сброс настроек на дефолт (заводские установки) искали? ...насчет кнопки переключения режимов, russo turisto писал -в камере-, а не на камере, если правильно понял.
0
0 / 0 / 0
Регистрация: 05.04.2013
Сообщений: 22
09.04.2013, 14:11
Цитата Сообщение от raxp Посмотреть сообщение
...так, теперь вопрос - сброс настроек на дефолт (заводские установки) искали? ...насчет кнопки переключения режимов, russo turisto писал -в камере-, а не на камере, если правильно понял.
Да искал, кроме как dip- переключателей и маленькой кнопки, больше ничего нет. кнопку нажимал, эффекта никакого, так как питание туда не приходит при снятой крышке.
Миниатюры
Управление купольной антивандальной камерой по RS-485   Управление купольной антивандальной камерой по RS-485  
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
09.04.2013, 14:40
...а зачем нажимали, если питание не подается? Подайте питание.
0
0 / 0 / 0
Регистрация: 05.04.2013
Сообщений: 22
09.04.2013, 14:44
Заметил, что при нажатии на виртуальный пульт в программе, зелёный диод мигает а красный нет.
0
97 / 92 / 0
Регистрация: 24.04.2010
Сообщений: 275
09.04.2013, 14:44
Судя по переключателям адрес 0, оконечное сопротивл включено, скорость 19200, управление по 485 интерф,и....
протокол SSP.
Вам этот секретный переключатель (переключения в пелко-д) нужно пальцем ткнуть?
0
0 / 0 / 0
Регистрация: 05.04.2013
Сообщений: 22
09.04.2013, 14:47
Цитата Сообщение от raxp Посмотреть сообщение
...а зачем нажимали, если питание не подается? Подайте питание.
Что бы нажать эту кнопку при включенном питании, надо разобрать камеру полностью.

Добавлено через 1 минуту
Цитата Сообщение от russo turisto Посмотреть сообщение
Вам этот секретный переключатель (переключения в пелко-д) нужно пальцем ткнуть?
Если можно!

Добавлено через 1 минуту
Цитата Сообщение от russo turisto Посмотреть сообщение
Судя по переключателям адрес 0, оконечное сопротивл включено, скорость 19200, управление по 485 интерф,и....
протокол SSP.
переключатели выставил в ноль, до этого пробовал по разному.
0
97 / 92 / 0
Регистрация: 24.04.2010
Сообщений: 275
09.04.2013, 15:23
Вот здесь что непонятно?

Какие настройки скорости и адреса нужно выставить для вашей программы?
Миниатюры
Управление купольной антивандальной камерой по RS-485  
1
0 / 0 / 0
Регистрация: 05.04.2013
Сообщений: 22
09.04.2013, 16:07
Цитата Сообщение от russo turisto Посмотреть сообщение
Вот здесь что непонятно?
Теперь понятно, №4 был в офф.
Цитата Сообщение от russo turisto Посмотреть сообщение
Какие настройки скорости и адреса нужно выставить для вашей программы?
Если честно, любые.

Добавлено через 37 минут
Цитата Сообщение от Second Посмотреть сообщение
Схема подключения, может окажет содействие.
Pelco-D Compatibility
Pelco-D compatibility allows the VCC-9400P to be controlled from a Pelco con-troller via the RS-485 port for half-duplex communications. (Duplex control not pos-sible. Some Pelco-D controller functions not supported.)
Насколько я понял из написанного, эта схема не подойдет!
0
118 / 80 / 1
Регистрация: 10.08.2011
Сообщений: 664
09.04.2013, 16:55
Цитата Сообщение от zuich Посмотреть сообщение
Насколько я понял из написанного, эта схема не подойдет!
Почему же, это протокол передачи.

Я вообще по двум проводам управлял камерой, правда я подключал по протоколу Samsung оборудование STechwin.
Я думаю, что во всех протоколах схемы подключения одинаковые(Duplex / Half-Duplex), а вот подбор протокола имеет важнейшую роль, там адрес указывается, скорость передачи и тип управления(Duplex / Half-Duplex).
0
97 / 92 / 0
Регистрация: 24.04.2010
Сообщений: 275
09.04.2013, 18:28
Эта камера управляется по двухпроводному RS485.
0
0 / 0 / 0
Регистрация: 05.04.2013
Сообщений: 22
09.04.2013, 20:21
Цитата Сообщение от russo turisto Посмотреть сообщение
Эта камера управляется по двухпроводному RS485.
Это я понял.
Сейчас, поменял местами провода, вместо Оранжевого Который был А+ поставил Белый ( GND) на плате 485, постоянно горит красный диод. Но ничего не изменилась..
0
118 / 80 / 1
Регистрация: 10.08.2011
Сообщений: 664
09.04.2013, 22:59
Я думаю Вы путаете питательные провода и те, по которым идет управление.
Если Вы запитаете некорректно, понесете оборудование в СЦ и заявленным дефектом : " не включается / не работает"
0
0 / 0 / 0
Регистрация: 05.04.2013
Сообщений: 22
11.04.2013, 11:25
Цитата Сообщение от Second Посмотреть сообщение
Я думаю Вы путаете питательные провода и те, по которым идет управление.
Если Вы запитаете некорректно, понесете оборудование в СЦ и заявленным дефектом : " не включается / не работает"
А как понять, по каким проводам идет управление? Даже на регистратор идет два провода.
Я уже весь мозг поломал(
Миниатюры
Управление купольной антивандальной камерой по RS-485   Управление купольной антивандальной камерой по RS-485  
0
118 / 80 / 1
Регистрация: 10.08.2011
Сообщений: 664
11.04.2013, 11:30
Цитата Сообщение от zuich Посмотреть сообщение
А как понять, по каким проводам идет управление? Даже на регистратор идет два провода.
Я уже весь мозг поломал(

ооуууу, предложением о проводах и регистраторе Вы меня ваншотнули +_+
Разумеется есть гибридные провода, когда несколько типов сигналов идет по одной жиле, но я не встречал такого у нас в СЦ. Оно будет создавать помехи, что для видеопотока крайне пагубно.


Сейчас обрисую примерную смеху подключения
1
0 / 0 / 0
Регистрация: 05.04.2013
Сообщений: 22
11.04.2013, 11:49
Цитата Сообщение от Second Посмотреть сообщение

Сейчас обрисую примерную смеху подключения
Спасибо.
0
118 / 80 / 1
Регистрация: 10.08.2011
Сообщений: 664
11.04.2013, 12:01
пример основных типов подключения, с чем я сталкивался лично.

Видеосигнал идет по коаксиальному обычно, видимо стандарты такие.
По такому принципу группируются провода.
Возникнут вопросы, спрашивайте.
Миниатюры
Управление купольной антивандальной камерой по RS-485   Управление купольной антивандальной камерой по RS-485  
0
0 / 0 / 0
Регистрация: 05.04.2013
Сообщений: 22
11.04.2013, 12:13
Цитата Сообщение от Second Посмотреть сообщение
пример основных типов подключения, с чем я сталкивался лично.

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

Мне хотелось бы узнать, какие два провода из 5 в черном конекторе, нужно подцепить к RS-485.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.04.2013, 12:13

OpenGL Управление камерой
Здравствуйте уважаемые форумчане! Очень нужен ваш совет. Ситуация заключается в следюющем. Я начал изучение opengl, сейчас разбираюсь с...

Управление камерой в opengl
Здравствуйте, я на си пишу программу на opengl, создал простенький 3д мир, состоящий из 4 кубиков. Хочу сделать, чтобы можно было при...

Управление камерой в OpenGl
Не первый день интересуюсь программированием на OpenGL, но до сих пор не смог организовать такую простую вещь как управление камерой, как...

Управление камерой на андроид
Объясните, плиз, как сделать управление FreeLookCamera от третьего лица в андроид перемещая пальцем по экрану:help::help::help: Я...

Управление камерой на OS Android
Ребята всем привет! Хочу разработать похожую инсталляцию: https://vimeo.com/123304375 Программирую давно не с разработкой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru