Задание за андроид приложение
Denkovi А-Modules
26.07.2015
1Кратко описание на приложението
Основни характеристики на това приложение:
-
Безплатно;
-
Универсалност - работи с всички продукти на денкови;
-
Опростеност - набляга се на единствено на достъпа до входове/изходи без различни конфигурации, администраторски настройки и.т.н;
-
Удобство - с най-малко на брой кликания потребителя да превключи уред или да проследи температура например;
-
Гъвкавост - при наличие на ново устройство не се изисква ъпдейт на приложението, а само на файла с устройствата Devices.xml.
2Списък с устройства
Това е екрана, който се показва първоначално и представлява списъка с всички устройства:
-
Бутон "Add New Device" - отваря прозорец за добавяне на ново устройство.
-
Събитие OnLongClick върху устройство от списъка - отваря се диалогов прозорец с върпос дали да се изтрие избраното устройство от списъка.
-
При избор на устройство от списъка, ако параметъра Devices.xml-> CheckMac=true, тогава се прави проверка (чрез команата Devices.xml-> CommandForMAC) дали мак адреса на устройството започва с UPPERCASE E8:EA:DA или E8EADA). Ако това не е така, се изписва съобщение с тескт "Invalid Device" и се връща отново към списъка с устройства.
При натискане на системния бутон за настройки се показва следният екран:
-
Бутон "About" - отваря линк от denkovi.com с информация за фирмата - http://www.denkovi.com/mobile/Android-Denkovi-App/About.html
-
Бутон "Help" - отваря линк от denkovi.com с помощни материали - http://www.denkovi.com/mobile/Android-Denkovi-App/Help.html
-
Бутон "Update Devices" - отваря прозорец за обновяване на списъка с устройства.
При натискане на бутон "Update now", файла с описанията на устройствата Device.xml се обновява. Това става като се прочете URL адреса: http://denkovi.com/mobile/Devices.xml
след което този файл се презаписва на мястото на стария и по-този начин списъка с усторйства се обновява без да е нужен цялостен ъпдейт на приложението.
Първоначално приложението ще носи в себе си този файл Devices.xml, а при проверка за по-нова (по-голяма) версия,ще се смъкне новия файл и ще се взема в предвид новя а не локалния.
Също така ако е възможно би могло да се направи да се проверява за този файл първоначално при стартиране на приложението и ъпдейта да се прави автоматично при наличие на по-нова версия и интернет връзка.
3Прозорец за добавяне на ново устройство.
Това е прозореца, който се появява при натискане на "Add New Device" бутона от списъка с устройства.
-
Select Device - Combo Box с всички възможни за добавяне видове устройства, взети от Devices.xml;
-
Device Name - Текстово поле за име на устройството (ще се пази локално на телефона);
-
Network Settings - Мрежови настройки за достъп до устройството:
-
IP address (URL): Текстово поле за IP адрес или домейн име нa устройството, първоначално (при създаване на ново у-во) е стойността от Devices.xml -> IP;
-
Port: Текстово поле за порт нa устройството (от 1 до 65535), първоначално (при създаване на ново у-во) е стойността от Devices.xml -> Port;
-
Password: Текстово поле за парола нa устройството, първоначално (при създаване на ново у-во) е стойността от Devices.xml -> Password.
-
Use set DO buttons - Check Box за избор дали да се позлват (където може) бутони за установяване на всички изходи наведнъж - по подразбиране е изключено. Пази се за всяко устройство отделно.
-
Auto-refresh time (sec) - Текстово поле за времето в секунди, за автомачно опресняване на входовете (ако е 0, значи е забранено автоматичното опресняване и това ще става само от бутон Refresh от потребителя). Този параметър показва през колко секунди се опресняват автоматично стойностите на аналоговите/вифровите входове. По подразбиране е 2 сек, пази се за всяко устройство отделно.
-
Save Descriptions Remotely - Check Box дали описанията (имената) на входно/изходните линии да се съхраняват/изчитат локално на телефона или в отдалеченото устройство (платка). Ако устройството не поддържа такава функция, то тогава този параметър не играе роля и имената се съхрнаяват/изчитат само локално. По подразбиране (първоначално) е излключено (т.е. пази се локално). Когато се избере се взема в предвид само ако Devices.xml -> SupportSaveIONamesRemotely е true. Ако е false, винаги се пазят локално и този параметър не се вижда.
-
Бутон "Add This Device" - чрез този бутон се добавя устройството към списъка със съответните настройки и приложението се връща обратно към списъка с устройства.
В конкретния пример е избрано устройство DAEnetIP2.
4Mеню
Това е мнюто (под формата на таб) за I/O и settings. Избрания елемент ще е с различен цвят. В зависимост от типа на устройството, някои от елементите на менюто няама да са видими. Това, кой таб е видим и кой не полето Devices.xml->Visible съответната група I/O – true (видим) false (скрит). Това е така, тъй като различните устройства имат различни хардуерни функции;
5Таб Цифрови изходи (Digital Outputs) - DO
Чрез този таб се управляват / изчитат / конфигурират цифрови изходи.
При натискане на даден бутон (checkbox ON/OFF) директно се изпраща команда за сетване на даден изход (реле) в 1 или 0. Ако е избрана опцията Use set DO buttons - YES от Settings tab-a, тогава се изпраща команда за установяване на всички изходи на един път чрез натискане на този бутон (който в случая е видим). Логиката на установяване (дали при ON да се изпрати 1 или 0 към платката) се определя от параметъра Devices.xml->DigitalOutputs->Logic. При true ON->1, при false ON -> 0.
Името на таба (например в случая "Digital Outputs - P3/P5") се взема от Devices.xml-> DigitalOutputs->TabCaption.
Броя на цифровите изходи се определя от Devices.xml->I/O->Items->Item.
При натискане на бутон "Refresh" състоянията на изходите се опресняват (изчитат) незабавно.
При натискане на бутон "Set DO" (ако е видим) състоянията на изходите изпращат на веднъж.
При натискане на даден checkbox ON/OFF състоянието на съответния изход се изпраща незабавно. Ако е активен бутона "Set DO", състоянието се подготовя в темпорална промелнилва и при натискане на "Set DO" се изпраща към платката неведнъж.
При избор на този таб, стойностите се опресняват автоматично (прави се Refresh).
При натискане на системния бутон за настройки се показва следният екран:
Set Active Outputs Checkbox DoutX определя дали дадения изход да е видим или не. Името на checkbox-a (DoutX) се взема от Devices.xml->DigitalOutputs->Name.
Set Names текстовото поле опреля името на изхода. Ако от Settings tab-a параметъра Save Descriptions Remotely не е избран, първоначално тези полета са с имена: Devices.xml->DigitalOutputs->Name. Ако Save Descriptions Remotely е избран и Devices.xml->DeviceItem->SupportSaveIONamesRemotely e true, то тогава тези стойнсти се изчитат/записват директно в устройството.
Броя на елементите N от този списък зависи от типа на избраното устройство, т.е. еднакъв е с броя на цифровите изходи DO.
6Таб Цифрови входове (Digital Inputs) - DI
Чрез този таб се изчитат (визуализират) нивата на цифрови входове (ON/OFF). Първата колона е стойността на броячите, а втората е стойността на цифровия вход.
Логиката на изчитане (дали при ON да се визуализира 1 или 0) се определя от параметъра Devices.xml->DigitalInputs->Logic. При true ON->1, при false ON -> 0.
Допълнително, ако Devices.xml->DigitalInputs->SupportCounters=true, това означава, че входовете могат да са и броячи и съответно се визуализират стойностите на броячите в колонката преди ON/OFF.
ON/OFF индикатора е някакъв контрол от тип read-only (например картинка, текст...). Числото преди ON/OFF индикатора е стойността на брояча.
Името на таба (например в случая " Digital Inputs - PortB") се взема от Devices.xml-> DigitalInputs->TabCaption.
Броя на цифровите входове се определя от Devices.xml->I/O->Items->Item.
При избор на този таб, стойностите се опресняват автоматично (прави се Refresh).
При натискане на системния бутон за настройки се показва следният екран:
Set Active Inputs Checkbox DinX определя дали дадения вход да е видим или не. Името на checkbox-a (DinX) се взема от Devices.xml->DigitalInputs->Name.
Set Names текстовото поле опреля името на входа. Ако от Settings tab-a параметъра Save Descriptions Remotely не е избран, първоначално тези полета са с имена: Devices.xml->DigitalInputs->Name. Ако Save Descriptions Remotely е избран и Devices.xml->DeviceItem->SupportSaveIONamesRemotely e true, то тогава тези стойнсти се изчитат/записват директно в устройството.
Броя на елементите N от този списък зависи от типа на избраното устройство, т.е. еднакъв е с броя на цифровите входове DI.
7Таб Аналогови входове (Analog Inputs) - AI
От този таб се визуализират и конфигурират аналоговите входове.
Името на таба (в случая "Analog Inputs - PortC") се взема от: Devices.xml->AnalogInputs-> TabCaption
Броя на аналоговите входове се определя от Devices.xml->I/O->Items->Item.
При избор на този таб, стойностите се опресняват автоматично (прави се Refresh). Стойността на аналоговия вход се визуализира като комбинация от получената числова стойност + интервал + дименсията (Devices.xml->AnalogInputs->Units);
При натискане на системния бутон за настройки се показва следният екран:
Set Active Inputs Checkbox AinX определя дали дадения вход да е видим или не. Името на checkbox-a (AinX) се взема от Devices.xml->AnalogInputs->Name
Set Names текстовото поле опреля името на входа. Ако от Settings tab-a параметъра Save Descriptions Remotely не е избран, първоначално тези полета са с имена: Devices.xml->AnalogInputs->Name. Ако Save Descriptions Remotely е избран и Devices.xml->DeviceItem->SupportSaveIONamesRemotely e true, то тогава тези стойнсти се изчитат/записват директно в устройството.
Броя на елементите N от този списък зависи от типа на избраното устройство, т.е. еднакъв е с броя на аналоговите входове AI.
При дълго натискане на даден вход от AI таба (OnLongClick) се показва следният екран:
-
Settings for AinX (Името на входа) - името на входа се взема от Devices.xml->AnalogInputs->Name.
-
Units - текстово поле за мерните единици на аналоговия вход. Възможно е и да е празно поле. Първоначално (по подразбиране) е Devices.xml->AnalogInputs->Scaling_Units.;
-
Value at 0 - текстово поле за стойност при 0 (тип float с точност 2 знака след десетичната запетя), да се направи валидация. Първоначално (по подразбиране) e Devices.xml->AnalogInputs->Scaling_Min.;
-
Value at 1024 - текстово поле за стойност при 1024 (1024 е Devices.xml->AnalogInputs->Scaling_Resolution) и е от тип float с точност 2 знака след десетичната запетя). Да се направи входящ контрол. Първоначално (по подразбиране) е Devices.xml->AnalogInputs->Scaling_Max;
От този екран се задава познатата вече калибрация по съответана формула за дадения аналогов вход. Максимума независимо от избраното устройство е Devices.xml->AnalogInputs->Scaling_Resolution (в случая 1024).
Справка - както при DAEnetIP2 Manager.
8Таб Аналогови Изходи (Analog Outputs) - AO
От този таб се визуализират и конфигурират аналоговите изходи. Това са изходи, които могат да имат стойност от 0 (Devices.xml->AnalogOutputs->MinValue) до 100 (Devices.xml->AnalogOutputs->MaxValue) например и най-често се изобразяват със слайдер.
Бутона Set (който винаги е активен) изпраща командите за установяване на изходите. Името на таба (в случая "Analog Outputs") e Devices.xml->AnalogOutputs->TabCaption;
Броя на аналоговите изходи се определя от Devices.xml->I/O->Items->Item.
Показанието се получава като стойността на слайдера + " "+ Devices.xml->AnalogOutputs->Units
При избор на този таб, стойностите се опресняват автоматично (прави се Refresh).
При натискане на системния бутон за настройки се показва следният екран:
Set Active Outputs Checkbox AoutX определя дали дадения изход да е видим или не. Името на checkbox-a (AoutX) се взема от Devices.xml->AnalogOutputs->Name.
Set Names текстовото поле опреля името на входа. Ако от Settings tab-a параметъра Save Descriptions Remotely не е избран, първоначално тези полета са с имена: Devices.xml->AnalogOutputs->Name. Ако Save Descriptions Remotely е избран и Devices.xml->DeviceItem->SupportSaveIONamesRemotely e true, то тогава тези стойнсти се изчитат/записват директно в устройството.
Броя на елементите N от този списък зависи от типа на избраното устройство, т.е. еднакъв е с броя на аналоговите изходи AO.
9Таб други входове (Other)
От този таб се визуализират и конфигурират някъкви други входове.
Името на таба (в случая "Temperature Inputs") се взема от: Devices.xml->Others-> TabCaption
Броя на входовете се определя от Devices.xml->I/O->Items->Item.
При избор на този таб, стойностите се опресняват автоматично (прави се Refresh). Стойността на аналоговия вход се визуализира като комбинация от получената числова стойност + интервал + Devices.xml->Others->UnitsForOther
При натискане на системния бутон за настройки се показва следният екран:
Set Active Inputs Checkbox-a TinX определя дали дадения вход да е видим или не.
Името на checkbox-a (TinX) се взема от Devices.xml->Others->Name.
Set Names текстовото поле опреля името на входа. Ако от Settings tab-a параметъра Save Descriptions Remotely не е избран, първоначално тези полета са с имена: Devices.xml->Others->Name. Ако Save Descriptions Remotely е избран и
Devices.xml->DeviceItem->SupportSaveIONamesRemotely e true, то тогава тези стойнсти се изчитат/записват директно в устройството.
Броя на елементите N от този списък зависи от типа на избраното устройство, т.е. еднакъв е с броя на входовете други (other).
10Tab "Settings"
Този таб е същия както прозореца за добавяне на ново устройство със следните разлики:
-
Няма го полето за избор на на устройство, тъй като става вече по-сложно ако се сменя и типа на устройство. Ако потребителя иска друг тип, ще изтрие това и ще добави ново у-во;
-
Бутона не е с име Add New Device, а със Save.
11Допълнителна информация -
Добре е при изпълнение на каквато и да е било заявка към платката, това да се индицира по няккаъв начин. Това е особенно важно при хората имащи мобилен интернет, тъй като ще знаят кога има трафик.
-
Под устройство се има предвид контролер, платка.
-
Под телефон се има предвид устройството с андроид (телефон, таблет);
-
DO - Digital Outputs или цифрови изходи
-
DI - Digital Inputs или цофрови входове
-
AI - Analog Inputs или аналогови входове
-
AO - Analog Outputs или аналогови изходи
-
TI - Temperature Inputs или температурни входове
-
Дизайна на приложението не е фиксиран от този документ
-
Иконките и ще се доутoчняват
-
Името на приложението е: Denkovi А-Modules
Devices.xml се намира на адрес:
http://denkovi.com/mobile/Android-Denkovi-App/Devices.xml
Историята на промяната на Devices.xml е на адрес:
http://denkovi.com/mobile/Android-Denkovi-App/temp/ChangeLogXML.txt
12Достъп до устройства
Име на устройство
|
IP адрес
|
HTTP порт
|
Web достъп
|
SNMP порт
|
SNMP парола
|
Доп. информация
|
DAEnetIP2
|
88.87.18.249
|
6565
|
admin/admin
|
6464
|
admin
|
Това е устройство с "добър" MAC адрес.
(Виж страница: I/O Ports)
|
DAEnetIP2
|
88.87.18.249
|
5080
|
admin/admin
|
5161
|
admin
|
Това е устройство с "лош" MAC адрес.
(Виж страница: I/O Ports)
|
DAEnetIP3
|
88.87.19.32
|
8085
|
admin
|
-
|
-
|
Използва се протокола daenetip3.
(Виж страници: Digital Outputs, Digital Inputs, Analog Inputs)
|
smartDEN-IP-16R
|
88.87.18.249
|
6363
|
admin
|
6262
|
write
|
Виж страница: Monitoring & Control.
|
DAEnetIP4
|
88.87.18.249
|
7171
|
admin
|
7070
|
write
|
Виж страници: Monitoring & Control и PWM Outputs
|
smartDEN-IP-2TI6AI8DI
|
88.87.18.249
|
9696
|
admin
|
9595
|
write
|
Виж страницa: Monitoring
|
smartDEN-IP-4R
|
88.87.18.249
|
8383
|
admin
|
8282
|
write
|
Виж страница: Monitoring & Control.
|
DimmerIP
|
88.87.18.249
|
8015
|
admin
|
8161
|
write
|
Виж страница: Dimmers.
|
13SNMP Протокол
Библиотеката за snmp протокола за андроид може да се смъкне от тук:
http://denkovi.com/mobile/Android-Denkovi-App/temp/AdventNetSnmp.jar
SNMP_GET и SNMP_SET функциите са тук (тествал съм ги):
http://denkovi.com/mobile/Android-Denkovi-App/temp/MYSNMP.java
Като пояснения във самите функции съм описал какво връщат в случай, че устройството не е намерено (няма достъп, няма интернет, няма връзка и.т.н). И при двете (SNMP_GET и SNMP_SET) връща null ако командата не изпълнена успешно. При успех SNMP_GET връща стойността на параметъра, а SNMP_SET стринг "ok".
13.1Проверка дали устройството е налично
За улеснение съм вкарал допълнителна команда isDeviceAliveCommand в Devices.xml файла, която може да се ползва за проверка дали устройството е налично. Ако командата SNMP_GET върне null, значи устройстово не е налично. В противен случай, устройството е налично.
Тази команда винаги може да се извиква за да се провери дали има достъп до това устройство. Например това е много удачно преди да се изпратят много снмп команди, с цел да не се показват много съобщения за грешка на екрана в случай, че устройството го няма налично.
13.2Типове на данни
Тъй като при комуникацията с snmp протокола трябва да се укаже типа на резултата какъв трябва да бъде, аз ти изпращам типовете:
SnmpAPI.INTEGER:
CommandForDOX, CommandForDIX, CommandForCounterX, CommandForAIX, CommandForAOX
SnmpAPI.STRING:
CommandForMAC, isDeviceAliveCommand, CommandForNameX, CommandForOtherX
Където X номера на изхода/входа.
MYSNMP snmp = new MYSNMP();
String result;
//Установяване на цифров изход №1 от DAEnetIP4 в 1. Използваме командата CommandForDO1 от XML:
result=snmp.SNMP_SET("88.87.18.249", 7171, ".1.3.6.1.4.1.42505.1.2.3.1.11.0", SnmpAPI.INTEGER, "1", "write", 2000);
//Установяване на цифров изход №1 от DAEnetIP4 в 0. Използваме командата CommandForDO1 от XML:
result=snmp.SNMP_SET("88.87.18.249", 7171, ".1.3.6.1.4.1.42505.1.2.3.1.11.0", SnmpAPI.INTEGER, "0", "write", 2000);
//Установяване на цифров изход №16 от DAEnetIP4 в 1. Използваме командата CommandForDO16 от XML:
result=snmp.SNMP_SET("88.87.18.249", 7171, ".1.3.6.1.4.1.42505.1.2.3.1.11.15", SnmpAPI.INTEGER, "1", "write", 2000);
//Установяване на цифров изход №16 от DAEnetIP4 в 0. Използваме командата CommandForDO16 от XML:
result=snmp.SNMP_SET("88.87.18.249", 7171, ".1.3.6.1.4.1.42505.1.2.3.1.11.15", SnmpAPI.INTEGER, "0", "write", 2000);
//Установяване на всичките 16 цифрови изходи от DAEnetIP4 в 1 наведнъж. Използваме командата CommandForAll1 от XML. Тази команда се ползва например при клик на бутона Set ALL (Set DO):
result=snmp.SNMP_SET("88.87.18.249", 7171, ".1.3.6.1.4.1.42505.1.3.2.0", SnmpAPI.INTEGER, "65535", "write", 2000);
//Установяване на всичките 16 цифрови изходи от DAEnetIP4 в 0 наведнъж. Използваме командата CommandForAll1 от XML. Тази команда се ползва например при клик на бутона Set ALL (Set DO):
result=snmp.SNMP_SET("88.87.18.249", 7171, ".1.3.6.1.4.1.42505.1.3.2.0", SnmpAPI.INTEGER, "0", "write", 2000);
//Установяване на името (описанието) на цифров изход №1 от DAEnetIP4 в "Relay1". Използваме командата CommandForDOName1 от XML:
result=snmp.SNMP_SET("88.87.18.249", 7171, ".1.3.6.1.4.1.42505.1.2.3.1.2.0", SnmpAPI.STRING, "Relay1", "write", 2000);
//Установяване на аналогов изход №1 в 56 от DAEnetIP4. Използваме командата CommandForAO1 от XML. Това се ползва например при слайдерите.
result=snmp.SNMP_SET("88.87.18.249", 7171, ".1.3.6.1.4.1.42505.1.2.4.1.3.0", SnmpAPI.INTEGER, "56", "write", 2000);
13.4Примерни команди SNMPGET
MYSNMP snmp = new MYSNMP();
String result;
//Изчитане състоянието на цифров изход №1 от DAEnetIP4. Използваме командата CommandForDO1 от XML:
result=snmp.SNMP_GET("88.87.18.249", 7171, ".1.3.6.1.4.1.42505.1.2.3.1.11.0", "write", 2000);
//Изчитане състоянието на цифров изход №16 от DAEnetIP4. Използваме командата CommandForDO16 от XML:
result=snmp.SNMP_GET("88.87.18.249", 7171, ".1.3.6.1.4.1.42505.1.2.3.1.11.15", "write", 2000);
//Изчитане състоянието на всичките цифрови изходи с една команда от DAEnetIP4. Използваме командата CommandForAll1 от XML - това е удачно например при опресняването на таб "цифрови изходи" тъй като изчитането на изходите става с една команда, а не с 16:
result=snmp.SNMP_GET("88.87.18.249", 7171, ".1.3.6.1.4.1.42505.1.2.3.1.11.15", "write", 2000);
//Изчитане състоянието на аналогов вход №1 от DAEnetIP4. Използваме командата CommandForAll1 от XML:
result=snmp.SNMP_GET("88.87.18.249", 7171, ".1.3.6.1.4.1.42505.1.2.2.1.6.0", "write", 2000);
//Изчитане състоянието на цифров вход №5 от DAEnetIP4. Използваме командата CommandForDI5 от XML:
result=snmp.SNMP_GET("88.87.18.249", 7171, ".1.3.6.1.4.1.42505.1.2.1.1.7.4", "write", 2000);
//Изчитане на името (описанието) на цифров вход №1 от DAEnetIP4. Използваме командата CommandForDOName1 от XML:
result=snmp.SNMP_GET("88.87.18.249", 7171, ".1.3.6.1.4.1.42505.1.2.3.1.2.0", "write", 2000);
13.5Достъп през FTP
Парола: denkoviacho555
13.6Примерни команди DAEnetIP3
HTTP GET базиран протокол:
http://88.87.18.249:6767/command.html?P=admin&ASG=?&AS1=1&BV3=?&
http://88.87.18.249:6767/command.html?P=admin&CV0=?&CV1=?&
http://88.87.18.249:6767/command.html?P=admin&CV1=?&
http://88.87.18.249:6767/command.html?P=admin&BV0=?&
За справка всичките команди и параметри на DAEnetIP3 са описани тук:
denkovi.com/Documents/DAEnetIP3/Current-Version/DAEnetIP3_UM.pdf
почва от страница 76.
Ние реално ще четем тези команди директно от Devices.xml
---------------- КОД-----------------------------------------------------------------------------------
DAEnetIP3 ip3 = new DAEnetIP3();
String result;
----------------------------------------------------------------------------------------------------------
//Установяване на цифров изход № 1 в 1 (PortA.0):
result=ip3. endHttpRequest("88.87.18.249", "6767","admin ", "AS0=1");
//Установяване на цифров изход № 9 в 0 (PortA.8):
result=ip3.SendHttpRequest("88.87.18.249", "6767","admin ", "AS7=0");
//Установяване на цифров изход № 16 в 0 (PortA.15):
result=ip3.SendHttpRequest("88.87.18.249", "6767","admin ", "ASF=0");
//Установяване на всички изходи на един път 0 (PortA.15):
result=ip3.SendHttpRequest("88.87.18.249", "6767","admin ", "ASG=0000");
//Установяване на всички изходи на един път 1 (PortA.15):
result=ip3.SendHttpRequest("88.87.18.249", "6767","admin ", "ASG=FFFF");
//Установяване на няколко изхода:
result=ip3.SendHttpRequest("88.87.18.249", "6767","admin ", "AS0=1&AS5=1&ASC=0");
----------------------------------------------------------------------------------------------------------
//Изчитане на цифров изход № 1 (PortA.0):
result=ip3.SendHttpRequest("88.87.18.249", "6767","admin ", "AS0=?");
//Изчитане на цифров изход № 8 (PortA.7):
result=ip3.SendHttpRequest("88.87.18.249", "6767","admin ", "AS7=?");
//Изчитане на цифров изход № 16 (PortA.F):
result=ip3.SendHttpRequest("88.87.18.249", "6767","admin ", "ASF=?");
----------------------------------------------------------------------------------------------------------
//Изчитане на цифров вход № 1 (PortB.0):
result=ip3.SendHttpRequest("88.87.18.249", "6767","admin ", "BV0=?");
//Изчитане на цифров вход № 8 (PortB.7):
result=ip3.SendHttpRequest("88.87.18.249", "6767","admin ", "BV7=?");
//Изчитане на всички цифрови входове на веднъж:
result=ip3.SendHttpRequest("88.87.18.249","6767","admin","BV0=?&BV1=?&BV2=?&BV3=?&BV4=?&BV5=?&BV6=?&BV7=?");
----------------------------------------------------------------------------------------------------------
//Изчитане на аналогов вход № 1 (PortC.0):
result=ip3.SendHttpRequest("88.87.18.249", "6767","admin ", "CV0=?");
//Изчитане на цифров вход № 8 (PortC.7):
result=ip3.SendHttpRequest("88.87.18.249", "6767","admin ", "CV7=?");
//Изчитане на всички цифрови входове на веднъж:
result=ip3.SendHttpRequest("88.87.18.249","6767","admin","CV0=?&CV1=?&CV2=?&CV3=?&CV4=?&CV5=?&CV6=?&CV7=?");
13.7Алгоритъм за бутона SET DO 13.7.1Псевдо-код за цифрови изходи
int CommandForDoCount = [боря на всички елементи CommandForDO];
int CommandForAllCount = [боря на всички елементи CommandForAll];
int tempResolution = CommandForDoCount / CommandForAllCount;
int DataToBeSent;
for (int i=0; i<CommandForAllCount; i++)
{
DataToBeSent=0;
for (int j=0; j<tempResolution;j++)
{
int ButtonNumber = (tempResolution*i) + j; // Номера на бутона от Digital Outputs activity който се взема в предвид в момента;
int ButtonState = състоянието на бутона с номер ButtonNumber;
DataToBeSent = DataToBeSent + ButtonState*(2^j); // Пакетиране на данните за изпращане;
}
SNMP_SET("IP", Port, "CommandForAlli", SnmpAPI.INTEGER, DataToBeSent, "pass", timeout); // тук изпращаме командата за установяване на няколко изхода на веднъж;
или
SendHttpRequest("IP", "Port","pass ", "ASG="+ DataToBeSent); // Тук при daenetip3 протокола, DataToBeSent трябва да бъде винаги 4 цифри, които представляват шестнайстично-двоично кодиране на 16-те цифрови изхода на DAEnetIP3.
Примери за DataToBeSent:
0000 - всички изходи са OFF
FFFF - всички изходи са ON
0001 - изход 1 е ON, всички останали OFF
0002 - изход 1 и 2 ON, всички останали OFF
...и.т.н
}
Някои устройства имат по-вече цифрови изходи и са направени така, че изходите да могат да се установяват наведнъж с няколко команди. Например устройство DAEnetIP2 има 16 цифрови изхода и те се установяват с 2 команди: CommandForAll1, CommandForAll2. Всички други устройства в момента имат една команда за установяване на няколко изходи - CommandForAll1. Въпреки това, мисля че е по-удачно да го направим с цикъл, както е показано по-горе.
13.7.2За аналоговите изходи
Тук, понеже няма команди за установяване на всички изходи, се прави с цикъл и се изпращат една по една командите CommandForAO1, CommandForAO2, CommandForAO3...
Сподели с приятели: |