1Кратко описание на приложението



Дата03.09.2016
Размер215.46 Kb.
Задание за андроид приложение

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.

    • I/O Settings

    • 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 номера на изхода/входа.

13.3Примерни команди SNMPSET

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...


База данных защищена авторским правом ©obuch.info 2016
отнасят до администрацията

    Начална страница