EHouse система автоматизации зданий – Android программного обеспечения, чтобы получить статус контроллеров через UDP

Ethernet Home Automation EHouse позволяет автоматически отправлять статуса broadcastu UDP (User Datagram Protocol) , которая может принимать все устройства в вашей локальной сети или Wi-Fi и IP, удовлетворяющих условию – Найдено в местном маска 255 . 255 . 255 . 0 , , которая транслируется от статуса IP адреса контроллеров 192 . 168 . 0 . х . UDP Broadcast позволяет отключить загрузку состояния TCP / IP клиента , который требует подключения к контроллеру . UDP вещания является протоколом без установления соединения , для распространения данных и независимо от количества приемных устройств не загружается более процессора или сети связи .
Простые UDP приема радиовещания с функцией смартфона , панелями и Android таблетки показано ниже .
Поэтому бесконечный цикл на основе этой функции , Вам нужно создать поток (Thread) работает в фоновом режиме , придав ему самый низкий приоритет работы .
В противном случае , выполнение этой функции блокировать выполнение других мероприятий по программе .
Исходный код для получения UDP Broadcast Android платформы:
общественного недействительными UDP (порт Int) / / Параметр порт, чтобы забрать умолчанию транслироваться 6789 – Статус в двоичном контроллер
{
Byte [] = broadcastadr новых байт [4] ;
Byte [] = localadr новых байт [4] ;
WifiManager WiFi = (WifiManager) getSystemService (Context . WIFI_SERVICE) ; / / WiFi Manager
DhcpInfo DHCP = WiFi . getDhcpInfo () ; / / Получить информацию от DHCP-WiFi
если DHCP (== NULL) / / получить значение по умолчанию отключена, если DHCP сети EHouse
{/ / Нет DHCP или ошибку на устройство
broadcastadr [0] = (байт) 192 ;
broadcastadr [1] = (байт) 168 ;
broadcastadr [2] = (байт) 0 ;
broadcastadr [3] = (байт) 255 ;
}
другое / / DHCP
{
трансляцию = Int (DHCP . IP-адрес и ; ; DHCP . маска подсети) | ~ DHCP . Маска ; / / Для UDP Broadcast – Если вы хотите, чтобы передать данные о функции
Контроллер только получает статус
для (INT = 0 ; к < ; 4 ; К + +) broadcastadr [K] = (байт) ((трансляция> ; > ; к * 8) и ; 0xFF) ;
местные INT = (DHCP . IP-адрес) ; / / Локальный IP-адресов DHCP
для (INT = 0 ; к < ; 4 ; К + +) localadr [K] = (байт) ((местные> ; > ; к * 8) и ; 0xFF) ; / / Для локальной IP-адресов
}
стараться
{
DS = новая DatagramSocket (порт) ; / / / Прослушивания на UDP порт с любого IP
в маске – UDP-сокет создать экземпляр номер локального порта
}
поймать (Exception е)
{
/ / Ehousecommunication . л ( ” Ошибка инет: получить адрес ” + E . GetMessage ()) ; для теста
}
стараться
{
DS . setBroadcast (истина) ; / / Включить отправить широковещательное сообщение – для передачи
DS . setReuseAddress (истина) ; / / Разрешить несколько сокетов использовать тот же IP-адрес
/ / Ds . setSoTimeout (400) ; / / Прием тайм-аут
}
поймать (Exception IO)
{/ / Игнорировать ошибки, но мы защитить от приложения и системные ошибки
}
/ / * UDP Broadcast TEST – broadcastu тест UDP Broadcast с вашего телефона или планшета – будущие связи с применением
/ * Попытаться
{
DatagramPacket дд = новый DatagramPacket ( ” Здравствуйте Слово TEST Android UPD ” . GetBytes () , 0 , ” Здравствуйте Слово TEST Android UPD ” . Длина () ,
InetAddress . getByAddress (broadcastadr) , порт) ;
DS . Написать (DD) ; / / Посылает DatagramPacket
}
поймать (Exception е)
{
ehousecommunication . л ( ” Передача дейтаграмм пакеты ошибке: ” + E . GetMessage ()) ;
}
* /
MulticastLock мл = WiFi . createMulticastLock ( ” Multicast включен замок ” ) ;
/ / Создание экземпляра блока многоадресных и broadcastu
мл . Приобретать () ; / / Multicast блокировка включения UDP приема радиовещания – Он может быть отключен некоторых смартфонах Android для ляторной целях экономии –
broadcastu UDP поддержки активирует телефон, если он заблокирован, и только отключены
в то время как (! ehousecommunication . Завершить) / / бесконечный цикл для приема UDP
{/ / Бесконечный цикл получения UDP статус
DatagramPacket DP = новая DatagramPacket (сообщение , сообщение . длина) ; / / Создание UDP датаграммы буфер пакетов с использованием данных – использует UDP пакетов
буфера ” сообщение ”
попробуйте {
DS . получать (DP) ; / / UDP пакетов прием от EHouse системы – получает порт UDP пакетов в UDP-сокет
если (DP . GetLength ()> ; 0) / / если размер посылки больше нуля – что-то получил
{
EhouseTCP . QueryBuff = др . GetData () ; / / Присвоить трансляции UDP recepition querybuffer – загружаются в EHouse статус буфера
/ / Dp . SetLength (0) ; – размер пакета устанавливается на ноль, чтобы не обрабатывать те же данные несколько раз
EhouseTCP . QueryReceived () ; / / Декодирования запроса массивов данных и заполнить устройств – декодирует состояние контроллеров и загружает таблицу состояния приложения
}
}
поймать (Exception OS)
{/ / Игнорировать ошибки
/ / Ehousecommunication . л ( ” asdfasdfsafsa ” + Os . GetMessage ()) ; / / Для теста только
}
}
мл . Release () ; / / UDP Multicast замок бесплатно для получения EHouse приложений – снимает блокировку многоадресных
DS . Close () ; / / Закрываем сокет датаграмм в конце – закрывает сокет в конце
}
Multicast блокировки может потребоваться в некоторых Android устройств .
Местные UDP Broadcast в случае с мобильными телефонами может быть включен или нет в зависимости от мобильного телефона прошивку .
Она также может быть инвалидом для экономии батареи и по соображениям безопасности или уменьшить загрузку процессора в сеть на работе .
(Обратите внимание на конфигурацию ядра: CONFIG_IP_MULTICAST не установлен) .
В дополнение , некоторые модели могут быть заблокированы местные брандмауэр и нужно активировать передачу на данный порт (по умолчанию 6789) .
Outside Broadcast при использовании GPRS-интернет соединений , EDGE , 3G , 4G может быть заблокирована или разблокирована оператором сети . Чаще всего , однако , Следует ожидать , , что зафиксировано в целях сведения к минимуму использование ссылке .
В некоторых моделях мобильных телефонов , Программная реализация статус контроллеров получения UDP может быть очень трудно или даже невозможно . Может потребоваться использование специальных niebrandowanego прошивки или смартфона .
В дополнение , необходимо соблюдать осторожность при upgradowaniu прошивку и проверить, что все функции работают правильно из коробки , В противном случае диагноз ошибки будет очень трудно .
Основываясь на некоторых телефонах HTC и других продуктов, содержащих системы Android версии операционной ниже 2 . 3 . 3 наблюдается общий блок UDP приема broadcastu .
Это была версия Android (2 . 1 – 2 . 3 из периода 01 . 01 . 2010 – 14 . 06 . 2011)
Если вы не можете получить UDP broadcastu загрузки и установки , Новый Android ROM версией минимум 2 . 3 . 3 (14 июня , 2011) , которые проверили правильность работы трансляцию нагрузки UDP .
Kernel Version 2 . 6 . 35 . 10 – htcg3ef43272 – ядра @ and18 – 2 # 1 .
Нет . 3software . 14 . 405 . 1 .
Для других марок телефонов с подобными проблемами , пожалуйста, скачать прошивки Android Rom от производителя , Версия не менее 2 . 3 . 3 .
Отметим также основные характеристики UDP пакетов .
Они являются асинхронными, и требуют чтения о том, что может стать причиной данных ошибок чтения , их потери (сброс) , Особенно с медленной оборудования , связи , сочетают в себе высокую нагрузку процессора и оккупации смартфонов и планшетов .
Данные Udp статус оборудованы в контрольной суммы для проверки достоверности данных .
Производитель Home Automation EHouse Home Automation EHouse
EHouse Контроллеры – Home Automation EHouse