faq обучение настройка
Текущее время: Сб июн 28, 2025 19:32

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Поиск камер DCS-910, DCS-2102,DCS-2121 в сети
СообщениеДобавлено: Вт июн 01, 2010 12:55 
Как широковещательным UDP запросом заставить камеры отозваться? Немного не понятно как камеры делают отзыв D-Link Setup Wizard...


Вернуться наверх
  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 02, 2010 14:38 
Не в сети
Сотрудник D-LINK
Сотрудник D-LINK

Зарегистрирован: Ср сен 01, 2004 16:00
Сообщений: 5814
Откуда: D-Link Moscow
это инженерная информация, предоставить её, к сожалению, не могу


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 04, 2010 06:31 
Понятно... будем снифить...

Думаю качество продуктов DLINK значительно возрасло если бы пошли по пути AXIS - разработка единого программного обеспечения для работы с камерами (у аксис это - Axis Media Control). Протокол передачи видео и звука должен быть единым.

Очень напрягает тот факт что если у меня разные камеры к ним надо писать разное ПО подключать глючные активиксы, разбирать не стандартные протоколы и прочее... ПО камер прорабатывается плохо... т.к. пока собираются отзывы, баги и прочее камеру снимают с производства...

Единственное неоспоримое преимущество камер ДЛИНК - цена, но за это надо платиить... извините за товтологию...

подобие SDK вот сам себе создаю...


Последний раз редактировалось artemds Пт июн 04, 2010 07:50, всего редактировалось 1 раз.

Вернуться наверх
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 04, 2010 07:46 
В поиске учавствует 2 UDP порта: 62976 для запроса камер в сеть (SEND) и 13579 для получения ответов от камеры (RECIVE)

Пока что камеры под рукой нет... чтобы протестить но код перехватывающий запрос от Setup Wizard (VB.NET):


Код:
        Dim udp As New Net.Sockets.UdpClient()
        udp.Client.Bind(New Net.IPEndPoint(Net.IPAddress.Any, 62976))
        Dim data(31) As Byte
        Dim cnt As Integer = udp.Client.Receive(data, 32, Net.Sockets.SocketFlags.None)
        ReDim Preserve data(cnt - 1)
        udp.Close()
        MsgBox("Кто-то ищет камеру :) и отправил запрос из " & cnt & " байт", MsgBoxStyle.Information)


Вернуться наверх
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн июн 07, 2010 13:45 
Не в сети
Сотрудник D-LINK
Сотрудник D-LINK

Зарегистрирован: Ср сен 01, 2004 16:00
Сообщений: 5814
Откуда: D-Link Moscow
artemds писал(а):
Понятно... будем снифить...

Думаю качество продуктов DLINK значительно возрасло если бы пошли по пути AXIS - разработка единого программного обеспечения для работы с камерами (у аксис это - Axis Media Control). Протокол передачи видео и звука должен быть единым.

Очень напрягает тот факт что если у меня разные камеры к ним надо писать разное ПО подключать глючные активиксы, разбирать не стандартные протоколы и прочее... ПО камер прорабатывается плохо... т.к. пока собираются отзывы, баги и прочее камеру снимают с производства...

Единственное неоспоримое преимущество камер ДЛИНК - цена, но за это надо платиить... извините за товтологию...

подобие SDK вот сам себе создаю...

viewtopic.php?t=124297


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Решение
СообщениеДобавлено: Вт июн 08, 2010 07:50 
Чтобы закрыть тему... готовый модуль поиска камер в сети (VB.NET):

Код:
Module DLINK
    Dim c_request_2() As Byte = {&HFD, &HFD, &H1, &H0, &HA1, 0, &HFF, &HFF, &HFF, &HFF, &HFF, &HFF, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}
    Public c_results As New Collection

    Public Class CamInfo
        Public Vendor As String
        Public Model As String
        Public Firmware As String
        Public NetworkName As String
        Public Hex As String
        Public MAC As String
        Public IP As String
    End Class

    Private Function ToHex(ByVal bytes() As Byte) As String
        Dim res As String = ""

        For Each b As Byte In bytes
            res &= If(res = "", "", " ") & Hex(b).PadLeft(2, "0")
        Next
        Return res
    End Function

    Private Sub ReciveThread(ByVal s As Object)
        Dim u As Net.Sockets.UdpClient = s
        While True
            Dim buff(512) As Byte
            Dim cnt As Integer
            Try
                cnt = u.Client.Receive(buff, 512, Net.Sockets.SocketFlags.None)
            Catch ex As Exception
                Exit While
            End Try
            ReDim Preserve buff(cnt - 1)
            Dim src As String = System.Text.Encoding.Default.GetString(buff)
            If cnt > c_request_2.Length Then
                Dim c As New CamInfo
                With c
                    .Vendor = Mid(src, 23, 16).Trim(Chr(0))
                    .Model = Mid(src, 87, 32).Trim(Chr(0))
                    .Firmware = Mid(src, 183, 8).Trim(Chr(0))
                    .NetworkName = Mid(src, 227, 32).Trim(Chr(0))
                    .Hex = ToHex(buff)
                    Dim mac(5) As Byte
                    Array.Copy(buff, 6, mac, 0, 6)
                    .MAC = ToHex(mac)
                    .IP = String.Format("{0}.{1}.{2}.{3}", CInt("&H" & Hex(buff(12))), CInt("&H" & Hex(buff(13))), CInt("&H" & Hex(buff(14))), CInt("&H" & Hex(buff(15))))
                End With
                c_results.Add(c)
            End If
        End While
    End Sub

    Public Function SearchCams(Optional ByVal Timeout As Integer = 1000) As Collection
        c_results.Clear()
        Dim udp As New Net.Sockets.UdpClient()
        udp.Client.Bind(New Net.IPEndPoint(Net.IPAddress.Any, 62976))
        Dim th As New Threading.Thread(AddressOf ReciveThread)
        th.Start(udp)
        udp.Send(c_request_2, c_request_2.Length, New Net.IPEndPoint(Net.IPAddress.Broadcast, 62976))
        Threading.Thread.Sleep(Timeout)
        udp.Close()
        Return c_results
    End Function
End Module


Пример использования:
Код:
ListView1.Items.Clear()
        For Each c As CamInfo In SearchCams(1000)
            With ListView1.Items.Add(c.Vendor)
                .SubItems.Add(c.Model)
                .SubItems.Add(c.Firmware)
                .SubItems.Add(c.NetworkName)
                .SubItems.Add(c.MAC)
                .SubItems.Add(c.IP)
                .SubItems.Add(c.Hex)
            End With
        Next


Вернуться наверх
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 08, 2010 07:53 
Изображение

Vendor - производитель
Model - модель камеры (не у всех оно корректно прописано), думаю правильнее определять модель по МАС адресу... хотя не уверен что получится... (Megapixel Internet Camera у меня это 2102)
Firmware - версия прошивки
NetworkName - имя в сети
MAC - MAC адрес камеры
IP - IP адрес камеры
HEX - оригинальный пакет с камеры (для разработки и тестирования)


Вернуться наверх
  
 
СообщениеДобавлено: Вт янв 18, 2011 07:04 
Продолжение темы: http://tugibaev.ru/#/?p=56 там будут все обновления кода


Вернуться наверх
  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB