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

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

01.05.2012, 18:05. Показов 54222. Ответов 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
118 / 80 / 1
Регистрация: 10.08.2011
Сообщений: 664
11.04.2013, 12:24
Студворк — интернет-сервис помощи студентам
Camera control connector (5 pin, black)
Connect this line when controlling the camera by RS485.
Connect the supplied camera control expansion connector to
this connector and connect peripheral equipment such as a
system controller to the cable.

Colour Colour(accessory)

1 A (+) Orange Brown
2 B (–) Yellow Red

3 A (+) Green Orange
4 B (–) Gray Yellow

5 GND White Green

Вот что мне сразу попалось на глаза в мануале...
попарно подключайте : (Orange и Yellow) или (Green и Gray)
0
0 / 0 / 0
Регистрация: 05.04.2013
Сообщений: 22
11.04.2013, 12:33
Цитата Сообщение от Second Посмотреть сообщение
Вот что мне сразу попалось на глаза в мануале...
попарно подключайте : (Orange и Yellow) или (Green и Gray)
Пробовал все два варианта. не работает..
Ладно вечером ещё раз попробую..

Спасибо всем за ответы.
0
118 / 80 / 1
Регистрация: 10.08.2011
Сообщений: 664
11.04.2013, 12:43
Составьте в схеме попытки Ваших подключений, опишите оборудование.
Протоколы у оборудования могу быть несовместимые...
0
97 / 92 / 0
Регистрация: 24.04.2010
Сообщений: 275
11.04.2013, 13:59
Я так и не услышал, какую скорость выставили в камере и адрес, ну соответственно и программе.
0
0 / 0 / 0
Регистрация: 05.04.2013
Сообщений: 22
11.04.2013, 17:53
Цитата Сообщение от russo turisto Посмотреть сообщение
Я так и не услышал, какую скорость выставили в камере и адрес, ну соответственно и программе.
На данный момент выставлено вот так!
Миниатюры
Управление купольной антивандальной камерой по RS-485  
0
97 / 92 / 0
Регистрация: 24.04.2010
Сообщений: 275
11.04.2013, 18:12
А в программе какая скорость, адрес выставлен и протокол?
0
0 / 0 / 0
Регистрация: 05.04.2013
Сообщений: 22
11.04.2013, 18:28
Цитата Сообщение от russo turisto Посмотреть сообщение
А в программе какая скорость, адрес выставлен и протокол?
Вот так.
Миниатюры
Управление купольной антивандальной камерой по RS-485   Управление купольной антивандальной камерой по RS-485   Управление купольной антивандальной камерой по RS-485  

0
97 / 92 / 0
Регистрация: 24.04.2010
Сообщений: 275
11.04.2013, 21:20
Установки верные, только еще нужно оконечное сопротивление включить, это 8-ой включатель.

При подаче на камеру питание у нее высвечивается на мониторе адрес первые 5 секунд.
У вас так?

Камера вращается без остановки?
0
0 / 0 / 0
Регистрация: 05.04.2013
Сообщений: 22
11.04.2013, 21:26
Цитата Сообщение от russo turisto Посмотреть сообщение
Установки верные, только еще нужно оконечное сопротивление включить, это 8-ой включатель.

При подаче на камеру питание у нее высвечивается на мониторе адрес первые 5 секунд.
У вас так?

Камера вращается без остановки?
да высвечивается 001.

и камера вращается.
0
97 / 92 / 0
Регистрация: 24.04.2010
Сообщений: 275
11.04.2013, 21:34
Она не должна вращатся без остановки.
Вероятно неисправна.
0
0 / 0 / 0
Регистрация: 05.04.2013
Сообщений: 22
11.04.2013, 21:38
Цитата Сообщение от russo turisto Посмотреть сообщение
Она не должна вращатся без остановки.
Вероятно неисправна.
Не, она вращается, а потом останавливается. и все.
0
0 / 0 / 0
Регистрация: 05.04.2013
Сообщений: 22
22.03.2016, 21:45
Не прошло и трех лет!!!

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

пульт вот такой http://td-galaktika.ru/publish... 000-3A.jpg
После чего камера была подключена к регистратору crystal-7104 все работает отлично, картинка замечательная, камера крутится и т.п. С пульта она тоже управляется и крутится!

Параметры выставлены правильно, адрес камеры, скорость и RS-485.
Но!!! не могу войти в OSD-menu камеры что-бы настроить параметры.
Какие только команды не передавал, но так и не вошел в меню... Ни с регистратора ни с клавиатуры!

Так вот вопрос, как или какую команду ввести что-бы войти в меню? Я уже мозг себе сломал!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.03.2016, 21:45

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
112
Ответ Создать тему
Новые блоги и статьи
Программа опроса у.з. расходомера 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, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru