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

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

01.05.2012, 18:05. Показов 54229. Ответов 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
2 / 2 / 0
Регистрация: 01.05.2012
Сообщений: 33
02.05.2012, 15:05  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от raxp Посмотреть сообщение
поясните эти фразы, так есть или нет?
такой нет.
есть обычная клавиатура которая за 150 р Гениус.


Цитата Сообщение от raxp Посмотреть сообщение
т.е. вы не проверяли лично работоспособность?
я проверял по видео. при включении в VirtualDube сразу идет поток видео.
я решил что она рабочая.



Цитата Сообщение от raxp Посмотреть сообщение
операция калибровки не показатель целостности 485 интерфейса.
как его проверить?


пойду сейчас в лабораторию-видео, у них я видел такой пульт.
попрошу проверить.
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
02.05.2012, 15:42
я проверял по видео. при включении в VirtualDube сразу идет поток видео.
я решил что она рабочая.
это разные интерфейсы физически.

пойду сейчас в лабораторию-видео, у них я видел такой пульт.
попрошу проверить.
то что доктор прописал ...еще лучше, если вам ее одолжат на время или вы на месте отследите и залоггируете запросы, формируемые их клавиатурой к камере. Тогда можно будет однозначно сказать, что не так.
0
2 / 2 / 0
Регистрация: 01.05.2012
Сообщений: 33
02.05.2012, 16:07  [ТС]
Люди которые смогут мне помочь будут только в пятницу.
Сейчас сижу рядом с камерой.
какие пошаговые действия я должен сделать?

давайте сейчас будем отталкиваться от того, что работать будем не с клавы, а по клику мыши на батон.


только что прислал Смартек программу.

там нужно прописывать IP итд...что-то я подвисна этом.

вот программа StartPTZ.zip
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
02.05.2012, 16:14
...давайте будем отталкиваться от того, что полная работоспособность камеры не подтверждена.

Поэтому:
1- берете с собой сниффер COM порта: СOMport-Toolkit или Portmon
2- берете с собой конвертор USB/RS-485
3- в лаборатории вам подключают вашу камеру к клавиатуре-джойстику
4- вешаете ваш конвертор параллельно на сеть 485
5- убеждаетесь, что пульт управляет камерой, параллельно отслеживаете все запросы клавиатуры-джойстика и логгируете их
6- сравниваете запросы ее и ваши-наши

только что прислал Смартек программу.
там нужно прописывать IP итд...что-то я подвисна этом.
вот программа StartPTZ.zip
кто прислал, зачем прислал, что за программа? Запускать неофициальную стремно. Где официальная ссылка?

p.s.: запустил ее в виртуальной песочнице, вижу что клиент-самопал ...насчет сервера, где он? Обмен по сети Ethernet нас не волнует, нам нужен обмен по RS-485.
0
2 / 2 / 0
Регистрация: 01.05.2012
Сообщений: 33
02.05.2012, 16:19  [ТС]
Цитата Сообщение от raxp Посмотреть сообщение
кто прислал, зачем прислал, что за программа? Запускать неофициальную стремно. Где официальная ссылка?
Я 3 дня назад у производителя камеры просил драйвера или программу для управления камерой.

вот сегодня они прислали 2 файла в разное время правда

vdrs_dome_protocols.rar

и 2й файл в посте выше.

p.s.: с лабораторией-видео, ждать до пятницы. Сейчас сижу перед камерой UCON-485 , включил Portmon( первый раз сталкиваюсь с такими программами, если не сложно как ей пользоваться, загуглю, эт не страшно). запустил вашу программу для теста посылок, которую вы присылали и свою. Какие мои действия теперь?
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
02.05.2012, 16:24
...а вы можете сразу все данные выложить в теме, так чтоб клещами из вас не тащить? Обнаруживаются все новые и новые факторы

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

Какие мои действия теперь?
1- берете с собой сниффер COM порта: СOMport-Toolkit или Portmon
2- берете с собой конвертор USB/RS-485
3- в лаборатории вам подключают вашу камеру к клавиатуре-джойстику
4- вешаете ваш конвертор параллельно на сеть 485
5- убеждаетесь, что пульт управляет камерой, параллельно отслеживаете все запросы клавиатуры-джойстика и логгируете их
6- сравниваете запросы ее и ваши-наши

Либо тут, на месте:
1- отслеживаете, что делает присланная вам программа
2- если она может работать локально и она управляет камерой, то отслеживаете с нее запросы
3- если она - всего лишь сетевой клиент, то ищите сервер.
0
2 / 2 / 0
Регистрация: 01.05.2012
Сообщений: 33
02.05.2012, 16:29  [ТС]
Вот все файлы

все файлы.rar
0
2 / 2 / 0
Регистрация: 01.05.2012
Сообщений: 33
02.05.2012, 16:59  [ТС]
использовал Portmon не знаю верно или нет. в настройках выбрал нужный мне COM порт и вот что получилось С вашей программы.LOG с моей прогрммы на С#.LOG

это с вашей программы которую вы присылали и с моей на С#

программу которую прислал смаретк запустить не получилось.

а что мне делать с файлом vdrs_dome_protocols.ini ?
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
02.05.2012, 18:07
программу которую прислал смаретк запустить не получилось.
а что мне делать с файлом vdrs_dome_protocols.ini ?
скорее это файл настроек для присланной вам программы.

и вот что получилось С вашей программы.LOG с моей прогрммы на С#.LOG
запустил сниффер у себя:
Code
1
32  0.00085792  Terminal.vshost IRP_MJ_WRITE    VCP1    SUCCESS Length 21: FF 02 00 04 00 20 26.
(по второму адресу, согласно примера ...однако точка какая-то)

...посылка с моей:
Code
1
219 0.00182090  Project1.exe    IRP_MJ_WRITE    Winachsf0   SUCCESS Length 7: FF 01 88 00 00 00 89
(по первому адресу)

Теперь остается отследить, какой пакет шлет клавиатура-джойстик лабораторный.
0
2 / 2 / 0
Регистрация: 01.05.2012
Сообщений: 33
07.05.2012, 18:22  [ТС]
Мда...из-за праздников людей в лаборатории не было.

Я подумал, а зачем нам ловить, что посылает клавиатура-манипулятор, если в камере настроен один протокол управления, а для клавиатуры-манипулятора, необходим совсем другой.
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
07.05.2012, 22:18
...это еще почему? Протоколы клавиатуры и камеры должны быть установлены идентичные.
1
2 / 2 / 0
Регистрация: 01.05.2012
Сообщений: 33
15.05.2012, 19:36  [ТС]
Здравствуйте!

И так) камера рабочая) все крутиться и вертится, правда не через спец клавиатуру, а через специальную программу PTZController

вот лог того что он посылает Лог из PTZController.LOG

а еще я вот о чем подумал.

моя программа не переводит ASCII

Команда передается так:

C#
1
serialPort1.WriteLine(String.Format("{0}", writestring));


Думаю, это и не должно работать. Надо же передавать на порт последовательность байт, а передаётся просто строка. (Как я понял, ...Format("{0}}, ..., просто задаёт формат строки, но не переводит её в битовый вид).

Нужно как-то так попробовать так:
C#
1
2
byte[] command = new byte[7] {0xFF, 0x01, 0x00, 0x04, 0x00, 0x20, 0x26};
serialPort1.Write(command, 0, 7);
(Команду взял из примера - поворот налево с половинной скоростью для камеры по адресу 0x01)

вот еще описание протокола http://cvs.ru/tp/pelco-d.htm

скорость к этой камере 2400.

и теперь я не понимаю, как мне нужно написать код для передачи.

помогите пожалуйста допитить код.
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
15.05.2012, 20:53
Думаю, это и не должно работать. Надо же передавать на порт последовательность байт, а передаётся просто строка
об этом вам говорил еще в посту #4 и повторил в #16.

вот лог того что он посылает Лог из PTZController.LOG
это хорошо, только вы забыли в portmon поставить отображение в HEX, чтобы было по типу:
Code
1
1   219 0.00182090  Project1.exe    IRP_MJ_WRITE    Winachsf0   SUCCESS Length 7: FF 01 88 00 00 00 89
а так, видимо только
сие
32 0.00103000 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: .......
33 0.00042375 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: .... .#
34 0.00099837 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: .......
35 0.00060692 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: .... .#
36 0.00109553 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: .......
37 0.00019276 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: ..... )
38 0.00070333 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: .......
39 0.00019041 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: ..... 1
40 0.00095208 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: .......
41 0.00018778 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: .... .%%
42 0.00065440 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: .......
43 0.00062621 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: .... .#
44 0.00043896 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: .......
, что ни о чем не говорит по конкретным посылкам. Переснимите лог.

Команду взял из примера - поворот налево с половинной скоростью для камеры по адресу 0x01
0xFF, 0x01, 0x00, 0x04, 0x00, 0x20, 0x26
...
скорость к этой камере 2400.
учел, сменил команду на вышеуказанную и поставил у себя 2400, n, 8, 1 (согласно логу с PTZController). Только в описании протокола настройки следующие - 9600, n, 8, 1.

Пробуйте:

Project2.zip

p.s.: учитывая, что лог надо переснять, дабы увидеть чаво PTZController точно посылает, то не факт, что сработает. Жду.
0
2 / 2 / 0
Регистрация: 01.05.2012
Сообщений: 33
15.05.2012, 21:06  [ТС]
Вот переснятый лог
переснятый лог.LOG

так да 9600 в мануале, но в PTZController работает только на скорости 2400, и при включении камеры в момент калибровки на экране выходит сообщение мол адрес 01 и 2400BPS.

ваша программа результата не дала.
еще мне кажется, что там 7, а не 8


да и команды давал в такой последовательности : right,down,left,up

да, так и как мне код переделать чтоб переводил все правильно?
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
15.05.2012, 21:28
еще мне кажется, что там 7, а не 8
вот настройки COM порта от PTZController, снятые вами:
Code
1
2
3
11  0.00258907  PTZController.e IOCTL_SERIAL_SET_BAUD_RATE  VCP0    SUCCESS Rate: 2400
 
14  0.00297120  PTZController.e IOCTL_SERIAL_SET_LINE_CONTROL   VCP0    SUCCESS StopBits: 1 Parity: NONE WordLength: 8
скорость = 2400, паритет = ноне, стоп-бит =1, bits = 8.

Длина посылки из лога равна 7:
Code
1
0   0.00061777  PTZController.e IRP_MJ_WRITE    VCP0    SUCCESS Length 7: FF 01 00 02 20 00 23
Не совсем понятно о чем вы? Эта же длина посылок будет и в моей программе. Снимите с нее лог.

Вопрос: снятая последовательность
посылок
0 0.00061777 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: FF 01 00 02 20 00 23
1 0.00064822 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: FF 01 00 00 00 00 01
2 0.00061546 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: FF 01 00 10 00 20 31
3 0.00042865 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: FF 01 00 00 00 00 01
4 0.00056701 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: FF 01 00 04 20 00 25
5 0.00070120 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: FF 01 00 00 00 00 01
6 0.00062439 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: FF 01 00 08 00 20 29
7 0.00109257 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: FF 01 00 00 00 00 01
с PTZController, это при запуске такое выдает или это отображение уже вашего клацанья по кнопкам? Интересует только процесс после запуска и один пакет команд.

да и команды давал в такой последовательности : right,down,left,up

да, так и как мне код переделать чтоб переводил все правильно?
снимите чистый лог с PTZController без клацанья по кнопкам, меня интересует процесс инициализации. Те посылки, что вы привели, не совпадают с инициализацией по спецификации.

Клавиши конечно хорошо, но опять же, нужно знать какая посылка какому нажатию соответствует. Вам смысл ясен?
0
2 / 2 / 0
Регистрация: 01.05.2012
Сообщений: 33
16.05.2012, 15:59  [ТС]
Так, вот я сделал.
просто запустил..он в начале посылает нули.

без нажатия на кномпки.LOG
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
16.05.2012, 16:08
он в начале посылает нули.
без нажатия на кномпки.LOG
1- он вначале все время посылает эту посылку:
Code
1
FF 00 00 00 00 00 00
или только один раз?

2- камера до запуска PTZController выключена? После этой посылки от PTZController, камера включается?

3- что просходит после нажатия кнопки "Left", идет одна посылка:
Code
1
FF 01 00 02 20 00 23
?
0
2 / 2 / 0
Регистрация: 01.05.2012
Сообщений: 33
16.05.2012, 16:14  [ТС]
Code
1
FF 00 00 00 00 00 00
посылает только один раз.

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

3- после нажатия кнопки "Left", идут две посылки:
Code
1
FF 01 00 04 20 00 05
и

Code
1
FF 01 00 00 00 00 01



может мне просто сделать лог с подключение м и отправкой команд?
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
16.05.2012, 16:26
...вот я как раз и выясняю (систематизирую), что надо задать в своей программе, чтобы работало. Конечно, нужен лог с привязкой - когда что происходит.

Пока ясно, что:
FF 00 00 00 00 00 00 - первичный пакет при запуске
FF 01 00 04 20 00 05 - два пакета для "LEFT"
FF 01 00 00 00 00 01

По логике, команды Right, Top, Down тоже будут двумя своими пакетами (причем второй пакет должен совпадать со вторым из "LEFT", что
видно из раннего лога
0 0.00061777 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: FF 01 00 02 20 00 23
1 0.00064822 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: FF 01 00 00 00 00 01
2 0.00061546 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: FF 01 00 10 00 20 31
3 0.00042865 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: FF 01 00 00 00 00 01
4 0.00056701 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: FF 01 00 04 20 00 25
5 0.00070120 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: FF 01 00 00 00 00 01
6 0.00062439 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: FF 01 00 08 00 20 29
7 0.00109257 PTZController.e IRP_MJ_WRITE VCP0 SUCCESS Length 7: FF 01 00 00 00 00 01
). А вот если камера отключена изначально, первичный пакет ее включает, опробуйте?
0
2 / 2 / 0
Регистрация: 01.05.2012
Сообщений: 33
16.05.2012, 16:34  [ТС]
Отключена?
от питания? просто кнопки как выкл, нет в PTZController.
да Right, Top, Down тоже отправляются пакетами.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.05.2012, 16:34

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Программа опроса у.з. расходомера 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