Commit bcbb0eeb authored by goto01's avatar goto01
parents e3f79f79 f3c8295f
from NHR9400series.NHR9410 import NHR9410
from NHR9400series.NHR9430 import NHR9430
from UtilitiesRei.IPFinder import IPFinder
class controlInterface:
def __init__(self):
self.__listIp = IPFinder().getList()
self.__listUsedIp = []
self.__nhr9410 = []
self.__nhr9430 = []
#refresh the list of ip
def refresh(self):
self.__listIp = IPFinder().getList()
for ip in self.__listUsedIp:
self.__listIp.remove(ip)
#create a NHR object
def newNhr(self, nhr):
if(nhr == "9410"):
new = NHR9410()
elif nhr == "9430":
new = NHR9430()
else:
return -1
new.locateIp(self.__listIp)
new.setS()
usedIp = new.getIp()
try:
self.__listIp.remove(usedIp)
self.__listUsedIp.append(usedIp)
if nhr == "9410":
self.__nhr9410.append(new)
elif nhr == "9430":
self.__nhr9430.append(new)
else:
return -1
except:
print("Any IP address matched")
def getNhr9410(self):
return self.__nhr9410
def getNhr9430(self):
return self.__nhr9430
def getListIp(self):
return self.__listIp
usedIp = new.getIp()
\ No newline at end of file
{
"_type": "Project",
"_id": "AAAAAAFF+h6SjaM2Hec=",
"name": "Untitled",
"ownedElements": [
{
"_type": "UMLModel",
"_id": "AAAAAAFF+qBWK6M3Z8Y=",
"_parent": {
"$ref": "AAAAAAFF+h6SjaM2Hec="
},
"name": "Model",
"ownedElements": [
{
"_type": "UMLClassDiagram",
"_id": "AAAAAAFF+qBtyKM79qY=",
"_parent": {
"$ref": "AAAAAAFF+qBWK6M3Z8Y="
},
"name": "Main",
"defaultDiagram": true,
"ownedViews": [
{
"_type": "UMLPackageView",
"_id": "AAAAAAGBcc/j8ItR2WY=",
"_parent": {
"$ref": "AAAAAAFF+qBtyKM79qY="
},
"model": {
"$ref": "AAAAAAGBcc/j7otPwYw="
},
"subViews": [
{
"_type": "UMLNameCompartmentView",
"_id": "AAAAAAGBcc/j8ItSDHY=",
"_parent": {
"$ref": "AAAAAAGBcc/j8ItR2WY="
},
"model": {
"$ref": "AAAAAAGBcc/j7otPwYw="
},
"subViews": [
{
"_type": "LabelView",
"_id": "AAAAAAGBcc/j8ItT7PM=",
"_parent": {
"$ref": "AAAAAAGBcc/j8ItSDHY="
},
"visible": false,
"font": "Arial;13;0",
"left": 1216,
"top": -48,
"height": 13
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcc/j8YtUTxE=",
"_parent": {
"$ref": "AAAAAAGBcc/j8ItSDHY="
},
"font": "Arial;13;1",
"left": 1013,
"top": 310,
"width": 367,
"height": 13,
"text": "Utility"
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcc/j8YtVBkg=",
"_parent": {
"$ref": "AAAAAAGBcc/j8ItSDHY="
},
"visible": false,
"font": "Arial;13;0",
"left": 1216,
"top": -48,
"width": 73.67724609375,
"height": 13,
"text": "(from Model)"
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcc/j8YtWAq0=",
"_parent": {
"$ref": "AAAAAAGBcc/j8ItSDHY="
},
"visible": false,
"font": "Arial;13;0",
"left": 1216,
"top": -48,
"height": 13,
"horizontalAlignment": 1
}
],
"font": "Arial;13;0",
"left": 1008,
"top": 303,
"width": 377,
"height": 25,
"stereotypeLabel": {
"$ref": "AAAAAAGBcc/j8ItT7PM="
},
"nameLabel": {
"$ref": "AAAAAAGBcc/j8YtUTxE="
},
"namespaceLabel": {
"$ref": "AAAAAAGBcc/j8YtVBkg="
},
"propertyLabel": {
"$ref": "AAAAAAGBcc/j8YtWAq0="
}
}
],
"containedViews": [
{
"$ref": "AAAAAAGBcddlUIvk7SA="
},
{
"$ref": "AAAAAAGBcdcaiIu5AYo="
}
],
"font": "Arial;13;0",
"containerChangeable": true,
"left": 1008,
"top": 288,
"width": 377,
"height": 401,
"nameCompartment": {
"$ref": "AAAAAAGBcc/j8ItSDHY="
}
},
{
"_type": "UMLPackageView",
"_id": "AAAAAAGBcdO2+YtzSOs=",
"_parent": {
"$ref": "AAAAAAFF+qBtyKM79qY="
},
"model": {
"$ref": "AAAAAAGBcdO2+Itxhoc="
},
"subViews": [
{
"_type": "UMLNameCompartmentView",
"_id": "AAAAAAGBcdO2+Yt0hBE=",
"_parent": {
"$ref": "AAAAAAGBcdO2+YtzSOs="
},
"model": {
"$ref": "AAAAAAGBcdO2+Itxhoc="
},
"subViews": [
{
"_type": "LabelView",
"_id": "AAAAAAGBcdO2+Yt1Wug=",
"_parent": {
"$ref": "AAAAAAGBcdO2+Yt0hBE="
},
"visible": false,
"font": "Arial;13;0",
"left": -432,
"top": -288,
"height": 13
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcdO2+Yt2LGI=",
"_parent": {
"$ref": "AAAAAAGBcdO2+Yt0hBE="
},
"font": "Arial;13;1",
"left": 445,
"top": 294,
"width": 327,
"height": 13,
"text": "NHR"
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcdO2+Yt3lr4=",
"_parent": {
"$ref": "AAAAAAGBcdO2+Yt0hBE="
},
"visible": false,
"font": "Arial;13;0",
"left": -432,
"top": -288,
"width": 73.67724609375,
"height": 13,
"text": "(from Model)"
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcdO2+Yt4ZaM=",
"_parent": {
"$ref": "AAAAAAGBcdO2+Yt0hBE="
},
"visible": false,
"font": "Arial;13;0",
"left": -432,
"top": -288,
"height": 13,
"horizontalAlignment": 1
}
],
"font": "Arial;13;0",
"left": 440,
"top": 287,
"width": 337,
"height": 25,
"stereotypeLabel": {
"$ref": "AAAAAAGBcdO2+Yt1Wug="
},
"nameLabel": {
"$ref": "AAAAAAGBcdO2+Yt2LGI="
},
"namespaceLabel": {
"$ref": "AAAAAAGBcdO2+Yt3lr4="
},
"propertyLabel": {
"$ref": "AAAAAAGBcdO2+Yt4ZaM="
}
}
],
"containedViews": [
{
"$ref": "AAAAAAGBcd28F4wdICg="
},
{
"$ref": "AAAAAAGBcd3b6YxJUoc="
},
{
"$ref": "AAAAAAGBcd46GYx6HQQ="
}
],
"font": "Arial;13;0",
"containerChangeable": true,
"left": 440,
"top": 272,
"width": 337,
"height": 409,
"nameCompartment": {
"$ref": "AAAAAAGBcdO2+Yt0hBE="
}
},
{
"_type": "UMLPackageView",
"_id": "AAAAAAGBcdPtrIuQ3N0=",
"_parent": {
"$ref": "AAAAAAFF+qBtyKM79qY="
},
"model": {
"$ref": "AAAAAAGBcdPtrIuOSGQ="
},
"subViews": [
{
"_type": "UMLNameCompartmentView",
"_id": "AAAAAAGBcdPtrIuRVc4=",
"_parent": {
"$ref": "AAAAAAGBcdPtrIuQ3N0="
},
"model": {
"$ref": "AAAAAAGBcdPtrIuOSGQ="
},
"subViews": [
{
"_type": "LabelView",
"_id": "AAAAAAGBcdPtrIuSkUg=",
"_parent": {
"$ref": "AAAAAAGBcdPtrIuRVc4="
},
"visible": false,
"font": "Arial;13;0",
"left": -1070,
"top": -744,
"height": 13
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcdPtrIuTfYg=",
"_parent": {
"$ref": "AAAAAAGBcdPtrIuRVc4="
},
"font": "Arial;13;1",
"left": 453,
"top": 758,
"width": 327,
"height": 13,
"text": "Keysight"
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcdPtrIuUv2A=",
"_parent": {
"$ref": "AAAAAAGBcdPtrIuRVc4="
},
"visible": false,
"font": "Arial;13;0",
"left": -1070,
"top": -744,
"width": 73.67724609375,
"height": 13,
"text": "(from Model)"
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcdPtrIuV10s=",
"_parent": {
"$ref": "AAAAAAGBcdPtrIuRVc4="
},
"visible": false,
"font": "Arial;13;0",
"left": -1070,
"top": -744,
"height": 13,
"horizontalAlignment": 1
}
],
"font": "Arial;13;0",
"left": 448,
"top": 751,
"width": 337,
"height": 25,
"stereotypeLabel": {
"$ref": "AAAAAAGBcdPtrIuSkUg="
},
"nameLabel": {
"$ref": "AAAAAAGBcdPtrIuTfYg="
},
"namespaceLabel": {
"$ref": "AAAAAAGBcdPtrIuUv2A="
},
"propertyLabel": {
"$ref": "AAAAAAGBcdPtrIuV10s="
}
}
],
"font": "Arial;13;0",
"containerChangeable": true,
"left": 448,
"top": 736,
"width": 337,
"height": 385,
"nameCompartment": {
"$ref": "AAAAAAGBcdPtrIuRVc4="
}
},
{
"_type": "UMLClassView",
"_id": "AAAAAAGBcddlUIvk7SA=",
"_parent": {
"$ref": "AAAAAAFF+qBtyKM79qY="
},
"model": {
"$ref": "AAAAAAGBcddlUIvimLQ="
},
"subViews": [
{
"_type": "UMLNameCompartmentView",
"_id": "AAAAAAGBcddlUIvlYzg=",
"_parent": {
"$ref": "AAAAAAGBcddlUIvk7SA="
},
"model": {
"$ref": "AAAAAAGBcddlUIvimLQ="
},
"subViews": [
{
"_type": "LabelView",
"_id": "AAAAAAGBcddlUIvmGvk=",
"_parent": {
"$ref": "AAAAAAGBcddlUIvlYzg="
},
"visible": false,
"font": "Arial;13;0",
"left": -456,
"top": -16,
"height": 13
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcddlUIvnzAo=",
"_parent": {
"$ref": "AAAAAAGBcddlUIvlYzg="
},
"font": "Arial;13;1",
"left": 1045,
"top": 423,
"width": 114.5244140625,
"height": 13,
"text": "RefineOutput"
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcddlUIvoz4U=",
"_parent": {
"$ref": "AAAAAAGBcddlUIvlYzg="
},
"visible": false,
"font": "Arial;13;0",
"left": -456,
"top": -16,
"width": 73.67724609375,
"height": 13,
"text": "(from Utility)"
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcddlUIvpFic=",
"_parent": {
"$ref": "AAAAAAGBcddlUIvlYzg="
},
"visible": false,
"font": "Arial;13;0",
"left": -456,
"top": -16,
"height": 13,
"horizontalAlignment": 1
}
],
"font": "Arial;13;0",
"left": 1040,
"top": 416,
"width": 124.5244140625,
"height": 25,
"stereotypeLabel": {
"$ref": "AAAAAAGBcddlUIvmGvk="
},
"nameLabel": {
"$ref": "AAAAAAGBcddlUIvnzAo="
},
"namespaceLabel": {
"$ref": "AAAAAAGBcddlUIvoz4U="
},
"propertyLabel": {
"$ref": "AAAAAAGBcddlUIvpFic="
}
},
{
"_type": "UMLAttributeCompartmentView",
"_id": "AAAAAAGBcddlUIvqJXg=",
"_parent": {
"$ref": "AAAAAAGBcddlUIvk7SA="
},
"model": {
"$ref": "AAAAAAGBcddlUIvimLQ="
},
"font": "Arial;13;0",
"left": 1040,
"top": 441,
"width": 124.5244140625,
"height": 10
},
{
"_type": "UMLOperationCompartmentView",
"_id": "AAAAAAGBcddlUIvrIPs=",
"_parent": {
"$ref": "AAAAAAGBcddlUIvk7SA="
},
"model": {
"$ref": "AAAAAAGBcddlUIvimLQ="
},
"subViews": [
{
"_type": "UMLOperationView",
"_id": "AAAAAAGBcdgPuowRFDY=",
"_parent": {
"$ref": "AAAAAAGBcddlUIvrIPs="
},
"model": {
"$ref": "AAAAAAGBcdgPsIwOGFU="
},
"font": "Arial;13;0",
"left": 1045,
"top": 456,
"width": 114.5244140625,
"height": 13,
"text": "+byteToFloat(Byte)",
"horizontalAlignment": 0
},
{
"_type": "UMLOperationView",
"_id": "AAAAAAGBgXC9cnhgc3M=",
"_parent": {
"$ref": "AAAAAAGBcddlUIvrIPs="
},
"model": {
"$ref": "AAAAAAGBgXC9VnhdsO4="
},
"font": "Arial;13;0",
"left": 1045,
"top": 471,
"width": 114.5244140625,
"height": 13,
"text": "+byteToString(Byte)",
"horizontalAlignment": 0
}
],
"font": "Arial;13;0",
"left": 1040,
"top": 451,
"width": 124.5244140625,
"height": 38
},
{
"_type": "UMLReceptionCompartmentView",
"_id": "AAAAAAGBcddlUIvsWyY=",
"_parent": {
"$ref": "AAAAAAGBcddlUIvk7SA="
},
"model": {
"$ref": "AAAAAAGBcddlUIvimLQ="
},
"visible": false,
"font": "Arial;13;0",
"left": -264,
"top": -32,
"width": 10,
"height": 10
},
{
"_type": "UMLTemplateParameterCompartmentView",
"_id": "AAAAAAGBcddlUIvtXJ0=",
"_parent": {
"$ref": "AAAAAAGBcddlUIvk7SA="
},
"model": {
"$ref": "AAAAAAGBcddlUIvimLQ="
},
"visible": false,
"font": "Arial;13;0",
"left": -264,
"top": -32,
"width": 10,
"height": 10
}
],
"containerView": {
"$ref": "AAAAAAGBcc/j8ItR2WY="
},
"font": "Arial;13;0",
"containerChangeable": true,
"left": 1040,
"top": 416,
"width": 124.5244140625,
"height": 73,
"autoResize": true,
"nameCompartment": {
"$ref": "AAAAAAGBcddlUIvlYzg="
},
"attributeCompartment": {
"$ref": "AAAAAAGBcddlUIvqJXg="
},
"operationCompartment": {
"$ref": "AAAAAAGBcddlUIvrIPs="
},
"receptionCompartment": {
"$ref": "AAAAAAGBcddlUIvsWyY="
},
"templateParameterCompartment": {
"$ref": "AAAAAAGBcddlUIvtXJ0="
}
},
{
"_type": "UMLClassView",
"_id": "AAAAAAGBcd28F4wdICg=",
"_parent": {
"$ref": "AAAAAAFF+qBtyKM79qY="
},
"model": {
"$ref": "AAAAAAGBcd28F4wbC0A="
},
"subViews": [
{
"_type": "UMLNameCompartmentView",
"_id": "AAAAAAGBcd28F4weVkM=",
"_parent": {
"$ref": "AAAAAAGBcd28F4wdICg="
},
"model": {
"$ref": "AAAAAAGBcd28F4wbC0A="
},
"subViews": [
{
"_type": "LabelView",
"_id": "AAAAAAGBcd28F4wf4MM=",
"_parent": {
"$ref": "AAAAAAGBcd28F4weVkM="
},
"visible": false,
"font": "Arial;13;0",
"left": -8,
"top": -328,
"height": 13
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcd28F4wg+H0=",
"_parent": {
"$ref": "AAAAAAGBcd28F4weVkM="
},
"font": "Arial;13;1",
"left": 525,
"top": 351,
"width": 110.18896484375,
"height": 13,
"text": "NHR9400"
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcd28F4whrGI=",
"_parent": {
"$ref": "AAAAAAGBcd28F4weVkM="
},
"visible": false,
"font": "Arial;13;0",
"left": -8,
"top": -328,
"width": 73.67724609375,
"height": 13,
"text": "(from NHR)"
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcd28F4wihU4=",
"_parent": {
"$ref": "AAAAAAGBcd28F4weVkM="
},
"visible": false,
"font": "Arial;13;0",
"left": -8,
"top": -328,
"height": 13,
"horizontalAlignment": 1
}
],
"font": "Arial;13;0",
"left": 520,
"top": 344,
"width": 120.18896484375,
"height": 25,
"stereotypeLabel": {
"$ref": "AAAAAAGBcd28F4wf4MM="
},
"nameLabel": {
"$ref": "AAAAAAGBcd28F4wg+H0="
},
"namespaceLabel": {
"$ref": "AAAAAAGBcd28F4whrGI="
},
"propertyLabel": {
"$ref": "AAAAAAGBcd28F4wihU4="
}
},
{
"_type": "UMLAttributeCompartmentView",
"_id": "AAAAAAGBcd28F4wjcoo=",
"_parent": {
"$ref": "AAAAAAGBcd28F4wdICg="
},
"model": {
"$ref": "AAAAAAGBcd28F4wbC0A="
},
"subViews": [
{
"_type": "UMLAttributeView",
"_id": "AAAAAAGBcfFjupAGCB0=",
"_parent": {
"$ref": "AAAAAAGBcd28F4wjcoo="
},
"model": {
"$ref": "AAAAAAGBcfFjsZADR+U="
},
"font": "Arial;13;0",
"left": 525,
"top": 374,
"width": 110.18896484375,
"height": 13,
"text": "-name",
"horizontalAlignment": 0
},
{
"_type": "UMLAttributeView",
"_id": "AAAAAAGBcfImR5BulZk=",
"_parent": {
"$ref": "AAAAAAGBcd28F4wjcoo="
},
"model": {
"$ref": "AAAAAAGBcfImP5BrwcI="
},
"font": "Arial;13;0",
"left": 525,
"top": 389,
"width": 110.18896484375,
"height": 13,
"text": "-ip",
"horizontalAlignment": 0
},
{
"_type": "UMLAttributeView",
"_id": "AAAAAAGBcfJFX5Cauow=",
"_parent": {
"$ref": "AAAAAAGBcd28F4wjcoo="
},
"model": {
"$ref": "AAAAAAGBcfJFWJCXXr0="
},
"visible": false,
"font": "Arial;13;0",
"left": 525,
"top": 404,
"width": 110.18896484375,
"height": 13,
"text": "-id",
"horizontalAlignment": 0
},
{
"_type": "UMLAttributeView",
"_id": "AAAAAAGBcfJxdJC9rWU=",
"_parent": {
"$ref": "AAAAAAGBcd28F4wjcoo="
},
"model": {
"$ref": "AAAAAAGBcfJxbJC6AFQ="
},
"visible": false,
"font": "Arial;13;0",
"left": 469,
"top": 419,
"width": 63.2353515625,
"height": 13,
"text": "+Attribute1",
"horizontalAlignment": 0
}
],
"font": "Arial;13;0",
"left": 520,
"top": 369,
"width": 120.18896484375,
"height": 38
},
{
"_type": "UMLOperationCompartmentView",
"_id": "AAAAAAGBcd28GIwki/k=",
"_parent": {
"$ref": "AAAAAAGBcd28F4wdICg="
},
"model": {
"$ref": "AAAAAAGBcd28F4wbC0A="
},
"subViews": [
{
"_type": "UMLOperationView",
"_id": "AAAAAAGBcfKsEJD6Qj8=",
"_parent": {
"$ref": "AAAAAAGBcd28GIwki/k="
},
"model": {
"$ref": "AAAAAAGBcfKsCJD3db8="
},
"font": "Arial;13;0",
"left": 525,
"top": 412,
"width": 110.18896484375,
"height": 13,
"text": "+GetterAndSetter()",
"horizontalAlignment": 0
},
{
"_type": "UMLOperationView",
"_id": "AAAAAAGBcgbKnpZNcdc=",
"_parent": {
"$ref": "AAAAAAGBcd28GIwki/k="
},
"model": {
"$ref": "AAAAAAGBcgbKkpZKz4U="
},
"font": "Arial;13;0",
"left": 525,
"top": 427,
"width": 110.18896484375,
"height": 13,
"text": "+setIP()",
"horizontalAlignment": 0
},
{
"_type": "UMLOperationView",
"_id": "AAAAAAGBcgiJGpunGAY=",
"_parent": {
"$ref": "AAAAAAGBcd28GIwki/k="
},
"model": {
"$ref": "AAAAAAGBcgiJDpukQ8c="
},
"font": "Arial;13;0",
"left": 525,
"top": 442,
"width": 110.18896484375,
"height": 13,
"text": "-IPisAvailable()",
"horizontalAlignment": 0
},
{
"_type": "UMLOperationView",
"_id": "AAAAAAGBcglJEZxjdN4=",
"_parent": {
"$ref": "AAAAAAGBcd28GIwki/k="
},
"model": {
"$ref": "AAAAAAGBcglJCZxg6jM="
},
"font": "Arial;13;0",
"left": 525,
"top": 457,
"width": 110.18896484375,
"height": 13,
"text": "+error()",
"horizontalAlignment": 0
}
],
"font": "Arial;13;0",
"left": 520,
"top": 407,
"width": 120.18896484375,
"height": 68
},
{
"_type": "UMLReceptionCompartmentView",
"_id": "AAAAAAGBcd28GIwlqo8=",
"_parent": {
"$ref": "AAAAAAGBcd28F4wdICg="
},
"model": {
"$ref": "AAAAAAGBcd28F4wbC0A="
},
"font": "Arial;13;0",
"left": 520,
"top": 475,
"width": 120.18896484375,
"height": 10
},
{
"_type": "UMLTemplateParameterCompartmentView",
"_id": "AAAAAAGBcd28GIwmqlU=",
"_parent": {
"$ref": "AAAAAAGBcd28F4wdICg="
},
"model": {
"$ref": "AAAAAAGBcd28F4wbC0A="
},
"visible": false,
"font": "Arial;13;0",
"left": -128,
"top": -328,
"width": 10,
"height": 10
}
],
"containerView": {
"$ref": "AAAAAAGBcdO2+YtzSOs="
},
"font": "Arial;13;0",
"containerChangeable": true,
"left": 520,
"top": 344,
"width": 120.18896484375,
"height": 156,
"nameCompartment": {
"$ref": "AAAAAAGBcd28F4weVkM="
},
"suppressReceptions": false,
"attributeCompartment": {
"$ref": "AAAAAAGBcd28F4wjcoo="
},
"operationCompartment": {
"$ref": "AAAAAAGBcd28GIwki/k="
},
"receptionCompartment": {
"$ref": "AAAAAAGBcd28GIwlqo8="
},
"templateParameterCompartment": {
"$ref": "AAAAAAGBcd28GIwmqlU="
}
},
{
"_type": "UMLClassView",
"_id": "AAAAAAGBcd3b6YxJUoc=",
"_parent": {
"$ref": "AAAAAAFF+qBtyKM79qY="
},
"model": {
"$ref": "AAAAAAGBcd3b6YxHeC0="
},
"subViews": [
{
"_type": "UMLNameCompartmentView",
"_id": "AAAAAAGBcd3b6YxKPBU=",
"_parent": {
"$ref": "AAAAAAGBcd3b6YxJUoc="
},
"model": {
"$ref": "AAAAAAGBcd3b6YxHeC0="
},
"subViews": [
{
"_type": "LabelView",
"_id": "AAAAAAGBcd3b6YxLPq8=",
"_parent": {
"$ref": "AAAAAAGBcd3b6YxKPBU="
},
"visible": false,
"font": "Arial;13;0",
"left": 336,
"top": -96,
"height": 13
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcd3b6YxMha4=",
"_parent": {
"$ref": "AAAAAAGBcd3b6YxKPBU="
},
"font": "Arial;13;1",
"left": 669,
"top": 543,
"width": 57.08447265625,
"height": 13,
"text": "NHR9410"
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcd3b6YxNryA=",
"_parent": {
"$ref": "AAAAAAGBcd3b6YxKPBU="
},
"visible": false,
"font": "Arial;13;0",
"left": 336,
"top": -96,
"width": 73.67724609375,
"height": 13,
"text": "(from NHR)"
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcd3b6YxOSB8=",
"_parent": {
"$ref": "AAAAAAGBcd3b6YxKPBU="
},
"visible": false,
"font": "Arial;13;0",
"left": 336,
"top": -96,
"height": 13,
"horizontalAlignment": 1
}
],
"font": "Arial;13;0",
"left": 664,
"top": 536,
"width": 67.08447265625,
"height": 25,
"stereotypeLabel": {
"$ref": "AAAAAAGBcd3b6YxLPq8="
},
"nameLabel": {
"$ref": "AAAAAAGBcd3b6YxMha4="
},
"namespaceLabel": {
"$ref": "AAAAAAGBcd3b6YxNryA="
},
"propertyLabel": {
"$ref": "AAAAAAGBcd3b6YxOSB8="
}
},
{
"_type": "UMLAttributeCompartmentView",
"_id": "AAAAAAGBcd3b6YxPE3U=",
"_parent": {
"$ref": "AAAAAAGBcd3b6YxJUoc="
},
"model": {
"$ref": "AAAAAAGBcd3b6YxHeC0="
},
"font": "Arial;13;0",
"left": 664,
"top": 561,
"width": 67.08447265625,
"height": 10
},
{
"_type": "UMLOperationCompartmentView",
"_id": "AAAAAAGBcd3b6YxQ5+E=",
"_parent": {
"$ref": "AAAAAAGBcd3b6YxJUoc="
},
"model": {
"$ref": "AAAAAAGBcd3b6YxHeC0="
},
"font": "Arial;13;0",
"left": 664,
"top": 571,
"width": 67.08447265625,
"height": 10
},
{
"_type": "UMLReceptionCompartmentView",
"_id": "AAAAAAGBcd3b6oxRbCM=",
"_parent": {
"$ref": "AAAAAAGBcd3b6YxJUoc="
},
"model": {
"$ref": "AAAAAAGBcd3b6YxHeC0="
},
"visible": false,
"font": "Arial;13;0",
"left": 144,
"top": -232,
"width": 10,
"height": 10
},
{
"_type": "UMLTemplateParameterCompartmentView",
"_id": "AAAAAAGBcd3b6oxSPag=",
"_parent": {
"$ref": "AAAAAAGBcd3b6YxJUoc="
},
"model": {
"$ref": "AAAAAAGBcd3b6YxHeC0="
},
"visible": false,
"font": "Arial;13;0",
"left": 144,
"top": -232,
"width": 10,
"height": 10
}
],
"containerView": {
"$ref": "AAAAAAGBcdO2+YtzSOs="
},
"font": "Arial;13;0",
"containerChangeable": true,
"left": 664,
"top": 536,
"width": 67.08447265625,
"height": 45,
"autoResize": true,
"nameCompartment": {
"$ref": "AAAAAAGBcd3b6YxKPBU="
},
"attributeCompartment": {
"$ref": "AAAAAAGBcd3b6YxPE3U="
},
"operationCompartment": {
"$ref": "AAAAAAGBcd3b6YxQ5+E="
},
"receptionCompartment": {
"$ref": "AAAAAAGBcd3b6oxRbCM="
},
"templateParameterCompartment": {
"$ref": "AAAAAAGBcd3b6oxSPag="
}
},
{
"_type": "UMLClassView",
"_id": "AAAAAAGBcd46GYx6HQQ=",
"_parent": {
"$ref": "AAAAAAFF+qBtyKM79qY="
},
"model": {
"$ref": "AAAAAAGBcd46GYx4vx0="
},
"subViews": [
{
"_type": "UMLNameCompartmentView",
"_id": "AAAAAAGBcd46Gox7xLw=",
"_parent": {
"$ref": "AAAAAAGBcd46GYx6HQQ="
},
"model": {
"$ref": "AAAAAAGBcd46GYx4vx0="
},
"subViews": [
{
"_type": "LabelView",
"_id": "AAAAAAGBcd46Gox8HEA=",
"_parent": {
"$ref": "AAAAAAGBcd46Gox7xLw="
},
"visible": false,
"font": "Arial;13;0",
"left": 248,
"top": 32,
"height": 13
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcd46Gox9UrA=",
"_parent": {
"$ref": "AAAAAAGBcd46Gox7xLw="
},
"font": "Arial;13;1",
"left": 669,
"top": 471,
"width": 57.08447265625,
"height": 13,
"text": "NHR9430"
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcd46Gox+kbo=",
"_parent": {
"$ref": "AAAAAAGBcd46Gox7xLw="
},
"visible": false,
"font": "Arial;13;0",
"left": 248,
"top": 32,
"width": 73.67724609375,
"height": 13,
"text": "(from NHR)"
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcd46Gox/93s=",
"_parent": {
"$ref": "AAAAAAGBcd46Gox7xLw="
},
"visible": false,
"font": "Arial;13;0",
"left": 248,
"top": 32,
"height": 13,
"horizontalAlignment": 1
}
],
"font": "Arial;13;0",
"left": 664,
"top": 464,
"width": 67.08447265625,
"height": 25,
"stereotypeLabel": {
"$ref": "AAAAAAGBcd46Gox8HEA="
},
"nameLabel": {
"$ref": "AAAAAAGBcd46Gox9UrA="
},
"namespaceLabel": {
"$ref": "AAAAAAGBcd46Gox+kbo="
},
"propertyLabel": {
"$ref": "AAAAAAGBcd46Gox/93s="
}
},
{
"_type": "UMLAttributeCompartmentView",
"_id": "AAAAAAGBcd46GoyAfUk=",
"_parent": {
"$ref": "AAAAAAGBcd46GYx6HQQ="
},
"model": {
"$ref": "AAAAAAGBcd46GYx4vx0="
},
"font": "Arial;13;0",
"left": 664,
"top": 489,
"width": 67.08447265625,
"height": 10
},
{
"_type": "UMLOperationCompartmentView",
"_id": "AAAAAAGBcd46GoyBNmM=",
"_parent": {
"$ref": "AAAAAAGBcd46GYx6HQQ="
},
"model": {
"$ref": "AAAAAAGBcd46GYx4vx0="
},
"font": "Arial;13;0",
"left": 664,
"top": 499,
"width": 67.08447265625,
"height": 10
},
{
"_type": "UMLReceptionCompartmentView",
"_id": "AAAAAAGBcd46GoyCEPM=",
"_parent": {
"$ref": "AAAAAAGBcd46GYx6HQQ="
},
"model": {
"$ref": "AAAAAAGBcd46GYx4vx0="
},
"visible": false,
"font": "Arial;13;0",
"left": 104,
"top": -120,
"width": 10,
"height": 10
},
{
"_type": "UMLTemplateParameterCompartmentView",
"_id": "AAAAAAGBcd46GoyDC6I=",
"_parent": {
"$ref": "AAAAAAGBcd46GYx6HQQ="
},
"model": {
"$ref": "AAAAAAGBcd46GYx4vx0="
},
"visible": false,
"font": "Arial;13;0",
"left": 104,
"top": -120,
"width": 10,
"height": 10
}
],
"containerView": {
"$ref": "AAAAAAGBcdO2+YtzSOs="
},
"font": "Arial;13;0",
"containerChangeable": true,
"left": 664,
"top": 464,
"width": 67.08447265625,
"height": 45,
"nameCompartment": {
"$ref": "AAAAAAGBcd46Gox7xLw="
},
"attributeCompartment": {
"$ref": "AAAAAAGBcd46GoyAfUk="
},
"operationCompartment": {
"$ref": "AAAAAAGBcd46GoyBNmM="
},
"receptionCompartment": {
"$ref": "AAAAAAGBcd46GoyCEPM="
},
"templateParameterCompartment": {
"$ref": "AAAAAAGBcd46GoyDC6I="
}
},
{
"_type": "UMLGeneralizationView",
"_id": "AAAAAAGBceJIK4yrVj4=",
"_parent": {
"$ref": "AAAAAAFF+qBtyKM79qY="
},
"model": {
"$ref": "AAAAAAGBceJIKoyp+VI="
},
"subViews": [
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBceJIK4ys9h0=",
"_parent": {
"$ref": "AAAAAAGBceJIK4yrVj4="
},
"model": {
"$ref": "AAAAAAGBceJIKoyp+VI="
},
"visible": false,
"font": "Arial;13;0",
"left": 650,
"top": 508,
"height": 13,
"alpha": 1.5707963267948966,
"distance": 15,
"hostEdge": {
"$ref": "AAAAAAGBceJIK4yrVj4="
},
"edgePosition": 1
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBceJIK4ytqdQ=",
"_parent": {
"$ref": "AAAAAAGBceJIK4yrVj4="
},
"model": {
"$ref": "AAAAAAGBceJIKoyp+VI="
},
"visible": null,
"font": "Arial;13;0",
"left": 650,
"top": 523,
"height": 13,
"alpha": 1.5707963267948966,
"distance": 30,
"hostEdge": {
"$ref": "AAAAAAGBceJIK4yrVj4="
},
"edgePosition": 1
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBceJIK4yuPqc=",
"_parent": {
"$ref": "AAAAAAGBceJIK4yrVj4="
},
"model": {
"$ref": "AAAAAAGBceJIKoyp+VI="
},
"visible": false,
"font": "Arial;13;0",
"left": 651,
"top": 478,
"height": 13,
"alpha": -1.5707963267948966,
"distance": 15,
"hostEdge": {
"$ref": "AAAAAAGBceJIK4yrVj4="
},
"edgePosition": 1
}
],
"font": "Arial;13;0",
"head": {
"$ref": "AAAAAAGBcd28F4wdICg="
},
"tail": {
"$ref": "AAAAAAGBcd46GYx6HQQ="
},
"points": "664:499;639:499",
"showVisibility": true,
"nameLabel": {
"$ref": "AAAAAAGBceJIK4ys9h0="
},
"stereotypeLabel": {
"$ref": "AAAAAAGBceJIK4ytqdQ="
},
"propertyLabel": {
"$ref": "AAAAAAGBceJIK4yuPqc="
}
},
{
"_type": "UMLGeneralizationView",
"_id": "AAAAAAGBceKBBo0nank=",
"_parent": {
"$ref": "AAAAAAFF+qBtyKM79qY="
},
"model": {
"$ref": "AAAAAAGBceKBBo0l0fs="
},
"subViews": [
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBceKBB40oGLo=",
"_parent": {
"$ref": "AAAAAAGBceKBBo0nank="
},
"model": {
"$ref": "AAAAAAGBceKBBo0l0fs="
},
"visible": false,
"font": "Arial;13;0",
"left": 592,
"top": 551,
"height": 13,
"alpha": 1.5707963267948966,
"distance": 15,
"hostEdge": {
"$ref": "AAAAAAGBceKBBo0nank="
},
"edgePosition": 1
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBceKBB40pFOE=",
"_parent": {
"$ref": "AAAAAAGBceKBBo0nank="
},
"model": {
"$ref": "AAAAAAGBceKBBo0l0fs="
},
"visible": null,
"font": "Arial;13;0",
"left": 577,
"top": 551,
"height": 13,
"alpha": 1.5707963267948966,
"distance": 30,
"hostEdge": {
"$ref": "AAAAAAGBceKBBo0nank="
},
"edgePosition": 1
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBceKBB40qWUM=",
"_parent": {
"$ref": "AAAAAAGBceKBBo0nank="
},
"model": {
"$ref": "AAAAAAGBceKBBo0l0fs="
},
"visible": false,
"font": "Arial;13;0",
"left": 621,
"top": 552,
"height": 13,
"alpha": -1.5707963267948966,
"distance": 15,
"hostEdge": {
"$ref": "AAAAAAGBceKBBo0nank="
},
"edgePosition": 1
}
],
"font": "Arial;13;0",
"showShadow": false,
"head": {
"$ref": "AAAAAAGBcd28F4wdICg="
},
"tail": {
"$ref": "AAAAAAGBcd3b6YxJUoc="
},
"points": "664:558;607:558;607:499",
"showVisibility": true,
"nameLabel": {
"$ref": "AAAAAAGBceKBB40oGLo="
},
"stereotypeLabel": {
"$ref": "AAAAAAGBceKBB40pFOE="
},
"propertyLabel": {
"$ref": "AAAAAAGBceKBB40qWUM="
}
},
{
"_type": "UMLClassView",
"_id": "AAAAAAGBcdcaiIu5AYo=",
"_parent": {
"$ref": "AAAAAAFF+qBtyKM79qY="
},
"model": {
"$ref": "AAAAAAGBcdcah4u3M+0="
},
"subViews": [
{
"_type": "UMLNameCompartmentView",
"_id": "AAAAAAGBcdcaiIu6n/8=",
"_parent": {
"$ref": "AAAAAAGBcdcaiIu5AYo="
},
"model": {
"$ref": "AAAAAAGBcdcah4u3M+0="
},
"subViews": [
{
"_type": "LabelView",
"_id": "AAAAAAGBcdcaiIu7nxc=",
"_parent": {
"$ref": "AAAAAAGBcdcaiIu6n/8="
},
"visible": false,
"font": "Arial;13;0",
"left": 72,
"top": -96,
"height": 13
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcdcaiIu8Yxs=",
"_parent": {
"$ref": "AAAAAAGBcdcaiIu6n/8="
},
"font": "Arial;13;1",
"left": 1061,
"top": 327,
"width": 82.74169921875,
"height": 13,
"text": "IPFinder"
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcdcaiIu9sMQ=",
"_parent": {
"$ref": "AAAAAAGBcdcaiIu6n/8="
},
"visible": false,
"font": "Arial;13;0",
"left": 72,
"top": -96,
"width": 73.67724609375,
"height": 13,
"text": "(from Utility)"
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcdcaiIu+lDw=",
"_parent": {
"$ref": "AAAAAAGBcdcaiIu6n/8="
},
"visible": false,
"font": "Arial;13;0",
"left": 72,
"top": -96,
"height": 13,
"horizontalAlignment": 1
}
],
"font": "Arial;13;0",
"left": 1056,
"top": 320,
"width": 92.74169921875,
"height": 25,
"stereotypeLabel": {
"$ref": "AAAAAAGBcdcaiIu7nxc="
},
"nameLabel": {
"$ref": "AAAAAAGBcdcaiIu8Yxs="
},
"namespaceLabel": {
"$ref": "AAAAAAGBcdcaiIu9sMQ="
},
"propertyLabel": {
"$ref": "AAAAAAGBcdcaiIu+lDw="
}
},
{
"_type": "UMLAttributeCompartmentView",
"_id": "AAAAAAGBcdcaiIu/7Jc=",
"_parent": {
"$ref": "AAAAAAGBcdcaiIu5AYo="
},
"model": {
"$ref": "AAAAAAGBcdcah4u3M+0="
},
"subViews": [
{
"_type": "UMLAttributeView",
"_id": "AAAAAAGBkL6bODmm5go=",
"_parent": {
"$ref": "AAAAAAGBcdcaiIu/7Jc="
},
"model": {
"$ref": "AAAAAAGBkL6bFTmjhR8="
},
"font": "Arial;13;0",
"left": 1061,
"top": 350,
"width": 82.74169921875,
"height": 13,
"text": "-clients",
"horizontalAlignment": 0
}
],
"font": "Arial;13;0",
"left": 1056,
"top": 345,
"width": 92.74169921875,
"height": 23
},
{
"_type": "UMLOperationCompartmentView",
"_id": "AAAAAAGBcdcaiYvAolo=",
"_parent": {
"$ref": "AAAAAAGBcdcaiIu5AYo="
},
"model": {
"$ref": "AAAAAAGBcdcah4u3M+0="
},
"subViews": [
{
"_type": "UMLOperationView",
"_id": "AAAAAAGBcgLIHpJpgjE=",
"_parent": {
"$ref": "AAAAAAGBcdcaiYvAolo="
},
"model": {
"$ref": "AAAAAAGBcgLIDpJmhyI="
},
"font": "Arial;13;0",
"left": 1061,
"top": 373,
"width": 82.74169921875,
"height": 13,
"text": "-GetAllIPs()",
"horizontalAlignment": 0
},
{
"_type": "UMLOperationView",
"_id": "AAAAAAGBkL7C6jo+lJU=",
"_parent": {
"$ref": "AAAAAAGBcdcaiYvAolo="
},
"model": {
"$ref": "AAAAAAGBkL7C1To7LAU="
},
"font": "Arial;13;0",
"left": 1061,
"top": 388,
"width": 82.74169921875,
"height": 13,
"text": "+deleteIp(int i)",
"horizontalAlignment": 0
}
],
"font": "Arial;13;0",
"left": 1056,
"top": 368,
"width": 92.74169921875,
"height": 38
},
{
"_type": "UMLReceptionCompartmentView",
"_id": "AAAAAAGBcdcaiYvBhWM=",
"_parent": {
"$ref": "AAAAAAGBcdcaiIu5AYo="
},
"model": {
"$ref": "AAAAAAGBcdcah4u3M+0="
},
"visible": false,
"font": "Arial;13;0",
"left": 104,
"top": -48,
"width": 10,
"height": 10
},
{
"_type": "UMLTemplateParameterCompartmentView",
"_id": "AAAAAAGBcdcaiYvCDY4=",
"_parent": {
"$ref": "AAAAAAGBcdcaiIu5AYo="
},
"model": {
"$ref": "AAAAAAGBcdcah4u3M+0="
},
"visible": false,
"font": "Arial;13;0",
"left": 104,
"top": -48,
"width": 10,
"height": 10
}
],
"containerView": {
"$ref": "AAAAAAGBcc/j8ItR2WY="
},
"font": "Arial;13;0",
"containerChangeable": true,
"left": 1056,
"top": 320,
"width": 92.74169921875,
"height": 86,
"nameCompartment": {
"$ref": "AAAAAAGBcdcaiIu6n/8="
},
"attributeCompartment": {
"$ref": "AAAAAAGBcdcaiIu/7Jc="
},
"operationCompartment": {
"$ref": "AAAAAAGBcdcaiYvAolo="
},
"receptionCompartment": {
"$ref": "AAAAAAGBcdcaiYvBhWM="
},
"templateParameterCompartment": {
"$ref": "AAAAAAGBcdcaiYvCDY4="
}
},
{
"_type": "UMLAssociationView",
"_id": "AAAAAAGBcekly41gVaM=",
"_parent": {
"$ref": "AAAAAAFF+qBtyKM79qY="
},
"model": {
"$ref": "AAAAAAGBceklyo1cyhM="
},
"subViews": [
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBcekly41hzLs=",
"_parent": {
"$ref": "AAAAAAGBcekly41gVaM="
},
"model": {
"$ref": "AAAAAAGBceklyo1cyhM="
},
"visible": false,
"font": "Arial;13;0",
"left": 1039,
"top": 385,
"height": 13,
"alpha": 1.5707963267948966,
"distance": 15,
"hostEdge": {
"$ref": "AAAAAAGBcekly41gVaM="
},
"edgePosition": 1
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBcekly41izjU=",
"_parent": {
"$ref": "AAAAAAGBcekly41gVaM="
},
"model": {
"$ref": "AAAAAAGBceklyo1cyhM="
},
"visible": null,
"font": "Arial;13;0",
"left": 1039,
"top": 400,
"height": 13,
"alpha": 1.5707963267948966,
"distance": 30,
"hostEdge": {
"$ref": "AAAAAAGBcekly41gVaM="
},
"edgePosition": 1
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBcekly41jivo=",
"_parent": {
"$ref": "AAAAAAGBcekly41gVaM="
},
"model": {
"$ref": "AAAAAAGBceklyo1cyhM="
},
"visible": false,
"font": "Arial;13;0",
"left": 1040,
"top": 355,
"height": 13,
"alpha": -1.5707963267948966,
"distance": 15,
"hostEdge": {
"$ref": "AAAAAAGBcekly41gVaM="
},
"edgePosition": 1
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBcekly41kgVI=",
"_parent": {
"$ref": "AAAAAAGBcekly41gVaM="
},
"model": {
"$ref": "AAAAAAGBceklyo1dteU="
},
"visible": false,
"font": "Arial;13;0",
"left": 1025,
"top": 384,
"height": 13,
"alpha": 0.5235987755982988,
"distance": 30,
"hostEdge": {
"$ref": "AAAAAAGBcekly41gVaM="
},
"edgePosition": 2
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBcekly41lL20=",
"_parent": {
"$ref": "AAAAAAGBcekly41gVaM="
},
"model": {
"$ref": "AAAAAAGBceklyo1dteU="
},
"visible": false,
"font": "Arial;13;0",
"left": 1011,
"top": 381,
"height": 13,
"alpha": 0.7853981633974483,
"distance": 40,
"hostEdge": {
"$ref": "AAAAAAGBcekly41gVaM="
},
"edgePosition": 2
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBcekly41mOkQ=",
"_parent": {
"$ref": "AAAAAAGBcekly41gVaM="
},
"model": {
"$ref": "AAAAAAGBceklyo1dteU="
},
"visible": false,
"font": "Arial;13;0",
"left": 1052,
"top": 388,
"height": 13,
"alpha": -0.5235987755982988,
"distance": 25,
"hostEdge": {
"$ref": "AAAAAAGBcekly41gVaM="
},
"edgePosition": 2
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBcekly41nAHA=",
"_parent": {
"$ref": "AAAAAAGBcekly41gVaM="
},
"model": {
"$ref": "AAAAAAGBceklyo1enA8="
},
"visible": false,
"font": "Arial;13;0",
"left": 664,
"top": 384,
"height": 13,
"alpha": -0.5235987755982988,
"distance": 30,
"hostEdge": {
"$ref": "AAAAAAGBcekly41gVaM="
}
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBcekly41oSzI=",
"_parent": {
"$ref": "AAAAAAGBcekly41gVaM="
},
"model": {
"$ref": "AAAAAAGBceklyo1enA8="
},
"visible": false,
"font": "Arial;13;0",
"left": 667,
"top": 398,
"height": 13,
"alpha": -0.7853981633974483,
"distance": 40,
"hostEdge": {
"$ref": "AAAAAAGBcekly41gVaM="
}
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBcekly41pNYY=",
"_parent": {
"$ref": "AAAAAAGBcekly41gVaM="
},
"model": {
"$ref": "AAAAAAGBceklyo1enA8="
},
"font": "Arial;13;0",
"left": 651,
"top": 357,
"width": 19.5126953125,
"height": 13,
"alpha": 0.5235987755982988,
"distance": 25,
"hostEdge": {
"$ref": "AAAAAAGBcekly41gVaM="
},
"text": "0..*"
},
{
"_type": "UMLQualifierCompartmentView",
"_id": "AAAAAAGBcekly41qOOI=",
"_parent": {
"$ref": "AAAAAAGBcekly41gVaM="
},
"model": {
"$ref": "AAAAAAGBceklyo1dteU="
},
"visible": false,
"font": "Arial;13;0",
"width": 10,
"height": 10
},
{
"_type": "UMLQualifierCompartmentView",
"_id": "AAAAAAGBceklzI1ra0E=",
"_parent": {
"$ref": "AAAAAAGBcekly41gVaM="
},
"model": {
"$ref": "AAAAAAGBceklyo1enA8="
},
"visible": false,
"font": "Arial;13;0",
"left": 642.08447265625,
"top": 359.5769406340843,
"width": 73.22900390625,
"height": 10
}
],
"font": "Arial;13;0",
"head": {
"$ref": "AAAAAAGBcd28F4wdICg="
},
"tail": {
"$ref": "AAAAAAGBcddlUIvk7SA="
},
"points": "1040:416;1040:376;639:376",
"showVisibility": true,
"nameLabel": {
"$ref": "AAAAAAGBcekly41hzLs="
},
"stereotypeLabel": {
"$ref": "AAAAAAGBcekly41izjU="
},
"propertyLabel": {
"$ref": "AAAAAAGBcekly41jivo="
},
"tailRoleNameLabel": {
"$ref": "AAAAAAGBcekly41kgVI="
},
"tailPropertyLabel": {
"$ref": "AAAAAAGBcekly41lL20="
},
"tailMultiplicityLabel": {
"$ref": "AAAAAAGBcekly41mOkQ="
},
"headRoleNameLabel": {
"$ref": "AAAAAAGBcekly41nAHA="
},
"headPropertyLabel": {
"$ref": "AAAAAAGBcekly41oSzI="
},
"headMultiplicityLabel": {
"$ref": "AAAAAAGBcekly41pNYY="
},
"tailQualifiersCompartment": {
"$ref": "AAAAAAGBcekly41qOOI="
},
"headQualifiersCompartment": {
"$ref": "AAAAAAGBceklzI1ra0E="
}
},
{
"_type": "UMLPackageView",
"_id": "AAAAAAGBceoeUo8OAgc=",
"_parent": {
"$ref": "AAAAAAFF+qBtyKM79qY="
},
"model": {
"$ref": "AAAAAAGBceoeUI8MiVw="
},
"subViews": [
{
"_type": "UMLNameCompartmentView",
"_id": "AAAAAAGBceoeU48PRXU=",
"_parent": {
"$ref": "AAAAAAGBceoeUo8OAgc="
},
"model": {
"$ref": "AAAAAAGBceoeUI8MiVw="
},
"subViews": [
{
"_type": "LabelView",
"_id": "AAAAAAGBceoeU48Qx0U=",
"_parent": {
"$ref": "AAAAAAGBceoeU48PRXU="
},
"visible": false,
"font": "Arial;13;0",
"top": -272,
"height": 13
},
{
"_type": "LabelView",
"_id": "AAAAAAGBceoeU48RUiY=",
"_parent": {
"$ref": "AAAAAAGBceoeU48PRXU="
},
"font": "Arial;13;1",
"left": 157,
"top": 318,
"width": 175,
"height": 13,
"text": "Control Interface"
},
{
"_type": "LabelView",
"_id": "AAAAAAGBceoeU48Ssbo=",
"_parent": {
"$ref": "AAAAAAGBceoeU48PRXU="
},
"visible": false,
"font": "Arial;13;0",
"top": -272,
"width": 73.67724609375,
"height": 13,
"text": "(from Model)"
},
{
"_type": "LabelView",
"_id": "AAAAAAGBceoeU48TckI=",
"_parent": {
"$ref": "AAAAAAGBceoeU48PRXU="
},
"visible": false,
"font": "Arial;13;0",
"top": -272,
"height": 13,
"horizontalAlignment": 1
}
],
"font": "Arial;13;0",
"left": 152,
"top": 311,
"width": 185,
"height": 25,
"stereotypeLabel": {
"$ref": "AAAAAAGBceoeU48Qx0U="
},
"nameLabel": {
"$ref": "AAAAAAGBceoeU48RUiY="
},
"namespaceLabel": {
"$ref": "AAAAAAGBceoeU48Ssbo="
},
"propertyLabel": {
"$ref": "AAAAAAGBceoeU48TckI="
}
}
],
"containedViews": [
{
"$ref": "AAAAAAGBcepBH49gWjs="
}
],
"font": "Arial;13;0",
"containerChangeable": true,
"left": 152,
"top": 296,
"width": 185,
"height": 241,
"nameCompartment": {
"$ref": "AAAAAAGBceoeU48PRXU="
}
},
{
"_type": "UMLClassView",
"_id": "AAAAAAGBcepBH49gWjs=",
"_parent": {
"$ref": "AAAAAAFF+qBtyKM79qY="
},
"model": {
"$ref": "AAAAAAGBcepBH49evoE="
},
"subViews": [
{
"_type": "UMLNameCompartmentView",
"_id": "AAAAAAGBcepBII9heII=",
"_parent": {
"$ref": "AAAAAAGBcepBH49gWjs="
},
"model": {
"$ref": "AAAAAAGBcepBH49evoE="
},
"subViews": [
{
"_type": "LabelView",
"_id": "AAAAAAGBcepBII9iomI=",
"_parent": {
"$ref": "AAAAAAGBcepBII9heII="
},
"visible": false,
"font": "Arial;13;0",
"left": -72,
"top": -248,
"height": 13
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcepBII9je6o=",
"_parent": {
"$ref": "AAAAAAGBcepBII9heII="
},
"font": "Arial;13;1",
"left": 197,
"top": 359,
"width": 100.40087890625,
"height": 13,
"text": "ControlInterface"
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcepBII9kWj4=",
"_parent": {
"$ref": "AAAAAAGBcepBII9heII="
},
"visible": false,
"font": "Arial;13;0",
"left": -72,
"top": -248,
"width": 134.37353515625,
"height": 13,
"text": "(from Control Interface)"
},
{
"_type": "LabelView",
"_id": "AAAAAAGBcepBII9lyUk=",
"_parent": {
"$ref": "AAAAAAGBcepBII9heII="
},
"visible": false,
"font": "Arial;13;0",
"left": -72,
"top": -248,
"height": 13,
"horizontalAlignment": 1
}
],
"font": "Arial;13;0",
"left": 192,
"top": 352,
"width": 110.40087890625,
"height": 25,
"stereotypeLabel": {
"$ref": "AAAAAAGBcepBII9iomI="
},
"nameLabel": {
"$ref": "AAAAAAGBcepBII9je6o="
},
"namespaceLabel": {
"$ref": "AAAAAAGBcepBII9kWj4="
},
"propertyLabel": {
"$ref": "AAAAAAGBcepBII9lyUk="
}
},
{
"_type": "UMLAttributeCompartmentView",
"_id": "AAAAAAGBcepBII9myrY=",
"_parent": {
"$ref": "AAAAAAGBcepBH49gWjs="
},
"model": {
"$ref": "AAAAAAGBcepBH49evoE="
},
"font": "Arial;13;0",
"left": 192,
"top": 377,
"width": 110.40087890625,
"height": 10
},
{
"_type": "UMLOperationCompartmentView",
"_id": "AAAAAAGBcepBII9nwpc=",
"_parent": {
"$ref": "AAAAAAGBcepBH49gWjs="
},
"model": {
"$ref": "AAAAAAGBcepBH49evoE="
},
"font": "Arial;13;0",
"left": 192,
"top": 387,
"width": 110.40087890625,
"height": 10
},
{
"_type": "UMLReceptionCompartmentView",
"_id": "AAAAAAGBcepBII9o9/s=",
"_parent": {
"$ref": "AAAAAAGBcepBH49gWjs="
},
"model": {
"$ref": "AAAAAAGBcepBH49evoE="
},
"visible": false,
"font": "Arial;13;0",
"left": -48,
"top": -152,
"width": 10,
"height": 10
},
{
"_type": "UMLTemplateParameterCompartmentView",
"_id": "AAAAAAGBcepBIY9pyik=",
"_parent": {
"$ref": "AAAAAAGBcepBH49gWjs="
},
"model": {
"$ref": "AAAAAAGBcepBH49evoE="
},
"visible": false,
"font": "Arial;13;0",
"left": -48,
"top": -152,
"width": 10,
"height": 10
}
],
"containerView": {
"$ref": "AAAAAAGBceoeUo8OAgc="
},
"font": "Arial;13;0",
"containerChangeable": true,
"left": 192,
"top": 352,
"width": 110.40087890625,
"height": 45,
"nameCompartment": {
"$ref": "AAAAAAGBcepBII9heII="
},
"attributeCompartment": {
"$ref": "AAAAAAGBcepBII9myrY="
},
"operationCompartment": {
"$ref": "AAAAAAGBcepBII9nwpc="
},
"receptionCompartment": {
"$ref": "AAAAAAGBcepBII9o9/s="
},
"templateParameterCompartment": {
"$ref": "AAAAAAGBcepBIY9pyik="
}
},
{
"_type": "UMLAssociationView",
"_id": "AAAAAAGBcgZx2pSv2Oo=",
"_parent": {
"$ref": "AAAAAAFF+qBtyKM79qY="
},
"model": {
"$ref": "AAAAAAGBcgZx2pSrZEs="
},
"subViews": [
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBcgZx2pSwkVg=",
"_parent": {
"$ref": "AAAAAAGBcgZx2pSv2Oo="
},
"model": {
"$ref": "AAAAAAGBcgZx2pSrZEs="
},
"visible": false,
"font": "Arial;13;0",
"left": 409,
"top": 385,
"height": 13,
"alpha": 1.5707963267948966,
"distance": 15,
"hostEdge": {
"$ref": "AAAAAAGBcgZx2pSv2Oo="
},
"edgePosition": 1
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBcgZx2pSxx+M=",
"_parent": {
"$ref": "AAAAAAGBcgZx2pSv2Oo="
},
"model": {
"$ref": "AAAAAAGBcgZx2pSrZEs="
},
"visible": null,
"font": "Arial;13;0",
"left": 409,
"top": 400,
"height": 13,
"alpha": 1.5707963267948966,
"distance": 30,
"hostEdge": {
"$ref": "AAAAAAGBcgZx2pSv2Oo="
},
"edgePosition": 1
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBcgZx2pSyjb0=",
"_parent": {
"$ref": "AAAAAAGBcgZx2pSv2Oo="
},
"model": {
"$ref": "AAAAAAGBcgZx2pSrZEs="
},
"visible": false,
"font": "Arial;13;0",
"left": 410,
"top": 355,
"height": 13,
"alpha": -1.5707963267948966,
"distance": 15,
"hostEdge": {
"$ref": "AAAAAAGBcgZx2pSv2Oo="
},
"edgePosition": 1
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBcgZx25SzNCs=",
"_parent": {
"$ref": "AAAAAAGBcgZx2pSv2Oo="
},
"model": {
"$ref": "AAAAAAGBcgZx2pSsO0M="
},
"visible": false,
"font": "Arial;13;0",
"left": 494,
"top": 384,
"height": 13,
"alpha": 0.5235987755982988,
"distance": 30,
"hostEdge": {
"$ref": "AAAAAAGBcgZx2pSv2Oo="
},
"edgePosition": 2
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBcgZx25S0Cc0=",
"_parent": {
"$ref": "AAAAAAGBcgZx2pSv2Oo="
},
"model": {
"$ref": "AAAAAAGBcgZx2pSsO0M="
},
"visible": false,
"font": "Arial;13;0",
"left": 491,
"top": 398,
"height": 13,
"alpha": 0.7853981633974483,
"distance": 40,
"hostEdge": {
"$ref": "AAAAAAGBcgZx2pSv2Oo="
},
"edgePosition": 2
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBcgZx25S1JHg=",
"_parent": {
"$ref": "AAAAAAGBcgZx2pSv2Oo="
},
"model": {
"$ref": "AAAAAAGBcgZx2pSsO0M="
},
"visible": false,
"font": "Arial;13;0",
"left": 498,
"top": 357,
"height": 13,
"alpha": -0.5235987755982988,
"distance": 25,
"hostEdge": {
"$ref": "AAAAAAGBcgZx2pSv2Oo="
},
"edgePosition": 2
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBcgZx25S2OJA=",
"_parent": {
"$ref": "AAAAAAGBcgZx2pSv2Oo="
},
"model": {
"$ref": "AAAAAAGBcgZx2pSt7yw="
},
"visible": false,
"font": "Arial;13;0",
"left": 326,
"top": 384,
"height": 13,
"alpha": -0.5235987755982988,
"distance": 30,
"hostEdge": {
"$ref": "AAAAAAGBcgZx2pSv2Oo="
}
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBcgZx25S3k8U=",
"_parent": {
"$ref": "AAAAAAGBcgZx2pSv2Oo="
},
"model": {
"$ref": "AAAAAAGBcgZx2pSt7yw="
},
"visible": false,
"font": "Arial;13;0",
"left": 329,
"top": 398,
"height": 13,
"alpha": -0.7853981633974483,
"distance": 40,
"hostEdge": {
"$ref": "AAAAAAGBcgZx2pSv2Oo="
}
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBcgZx25S4KRg=",
"_parent": {
"$ref": "AAAAAAGBcgZx2pSv2Oo="
},
"model": {
"$ref": "AAAAAAGBcgZx2pSt7yw="
},
"visible": false,
"font": "Arial;13;0",
"left": 322,
"top": 357,
"height": 13,
"alpha": 0.5235987755982988,
"distance": 25,
"hostEdge": {
"$ref": "AAAAAAGBcgZx2pSv2Oo="
}
},
{
"_type": "UMLQualifierCompartmentView",
"_id": "AAAAAAGBcgZx25S5m64=",
"_parent": {
"$ref": "AAAAAAGBcgZx2pSv2Oo="
},
"model": {
"$ref": "AAAAAAGBcgZx2pSsO0M="
},
"visible": false,
"font": "Arial;13;0",
"width": 10,
"height": 10
},
{
"_type": "UMLQualifierCompartmentView",
"_id": "AAAAAAGBcgZx25S62Vk=",
"_parent": {
"$ref": "AAAAAAGBcgZx2pSv2Oo="
},
"model": {
"$ref": "AAAAAAGBcgZx2pSt7yw="
},
"visible": false,
"font": "Arial;13;0",
"width": 10,
"height": 10
}
],
"font": "Arial;13;0",
"head": {
"$ref": "AAAAAAGBcepBH49gWjs="
},
"tail": {
"$ref": "AAAAAAGBcd28F4wdICg="
},
"points": "520:376;301:376",
"showVisibility": true,
"nameLabel": {
"$ref": "AAAAAAGBcgZx2pSwkVg="
},
"stereotypeLabel": {
"$ref": "AAAAAAGBcgZx2pSxx+M="
},
"propertyLabel": {
"$ref": "AAAAAAGBcgZx2pSyjb0="
},
"tailRoleNameLabel": {
"$ref": "AAAAAAGBcgZx25SzNCs="
},
"tailPropertyLabel": {
"$ref": "AAAAAAGBcgZx25S0Cc0="
},
"tailMultiplicityLabel": {
"$ref": "AAAAAAGBcgZx25S1JHg="
},
"headRoleNameLabel": {
"$ref": "AAAAAAGBcgZx25S2OJA="
},
"headPropertyLabel": {
"$ref": "AAAAAAGBcgZx25S3k8U="
},
"headMultiplicityLabel": {
"$ref": "AAAAAAGBcgZx25S4KRg="
},
"tailQualifiersCompartment": {
"$ref": "AAAAAAGBcgZx25S5m64="
},
"headQualifiersCompartment": {
"$ref": "AAAAAAGBcgZx25S62Vk="
}
},
{
"_type": "UMLAssociationView",
"_id": "AAAAAAGBleaDkWo6R28=",
"_parent": {
"$ref": "AAAAAAFF+qBtyKM79qY="
},
"model": {
"$ref": "AAAAAAGBleaDkGo2TCA="
},
"subViews": [
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBleaDkWo7aA0=",
"_parent": {
"$ref": "AAAAAAGBleaDkWo6R28="
},
"model": {
"$ref": "AAAAAAGBleaDkGo2TCA="
},
"visible": false,
"font": "Arial;13;0",
"left": 260,
"top": 329,
"height": 13,
"alpha": 1.5707963267948966,
"distance": 15,
"hostEdge": {
"$ref": "AAAAAAGBleaDkWo6R28="
},
"edgePosition": 1
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBleaDkWo8siE=",
"_parent": {
"$ref": "AAAAAAGBleaDkWo6R28="
},
"model": {
"$ref": "AAAAAAGBleaDkGo2TCA="
},
"visible": null,
"font": "Arial;13;0",
"left": 275,
"top": 329,
"height": 13,
"alpha": 1.5707963267948966,
"distance": 30,
"hostEdge": {
"$ref": "AAAAAAGBleaDkWo6R28="
},
"edgePosition": 1
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBleaDkWo9F/I=",
"_parent": {
"$ref": "AAAAAAGBleaDkWo6R28="
},
"model": {
"$ref": "AAAAAAGBleaDkGo2TCA="
},
"visible": false,
"font": "Arial;13;0",
"left": 231,
"top": 330,
"height": 13,
"alpha": -1.5707963267948966,
"distance": 15,
"hostEdge": {
"$ref": "AAAAAAGBleaDkWo6R28="
},
"edgePosition": 1
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBleaDkWo+Nik=",
"_parent": {
"$ref": "AAAAAAGBleaDkWo6R28="
},
"model": {
"$ref": "AAAAAAGBleaDkWo3HUg="
},
"visible": false,
"font": "Arial;13;0",
"left": 1030,
"top": 344,
"height": 13,
"alpha": 0.5235987755982988,
"distance": 30,
"hostEdge": {
"$ref": "AAAAAAGBleaDkWo6R28="
},
"edgePosition": 2
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBleaDkWo/xIY=",
"_parent": {
"$ref": "AAAAAAGBleaDkWo6R28="
},
"model": {
"$ref": "AAAAAAGBleaDkWo3HUg="
},
"visible": false,
"font": "Arial;13;0",
"left": 1027,
"top": 358,
"height": 13,
"alpha": 0.7853981633974483,
"distance": 40,
"hostEdge": {
"$ref": "AAAAAAGBleaDkWo6R28="
},
"edgePosition": 2
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBleaDkWpAhMc=",
"_parent": {
"$ref": "AAAAAAGBleaDkWo6R28="
},
"model": {
"$ref": "AAAAAAGBleaDkWo3HUg="
},
"visible": false,
"font": "Arial;13;0",
"left": 1034,
"top": 317,
"height": 13,
"alpha": -0.5235987755982988,
"distance": 25,
"hostEdge": {
"$ref": "AAAAAAGBleaDkWo6R28="
},
"edgePosition": 2
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBleaDkWpB1sI=",
"_parent": {
"$ref": "AAAAAAGBleaDkWo6R28="
},
"model": {
"$ref": "AAAAAAGBleaDkWo4gTs="
},
"visible": false,
"font": "Arial;13;0",
"left": 261,
"top": 320,
"height": 13,
"alpha": -0.5235987755982988,
"distance": 30,
"hostEdge": {
"$ref": "AAAAAAGBleaDkWo6R28="
}
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBleaDkWpC0QE=",
"_parent": {
"$ref": "AAAAAAGBleaDkWo6R28="
},
"model": {
"$ref": "AAAAAAGBleaDkWo4gTs="
},
"visible": false,
"font": "Arial;13;0",
"left": 274,
"top": 317,
"height": 13,
"alpha": -0.7853981633974483,
"distance": 40,
"hostEdge": {
"$ref": "AAAAAAGBleaDkWo6R28="
}
},
{
"_type": "EdgeLabelView",
"_id": "AAAAAAGBleaDkWpDos4=",
"_parent": {
"$ref": "AAAAAAGBleaDkWo6R28="
},
"model": {
"$ref": "AAAAAAGBleaDkWo4gTs="
},
"visible": false,
"font": "Arial;13;0",
"left": 233,
"top": 324,
"height": 13,
"alpha": 0.5235987755982988,
"distance": 25,
"hostEdge": {
"$ref": "AAAAAAGBleaDkWo6R28="
}
},
{
"_type": "UMLQualifierCompartmentView",
"_id": "AAAAAAGBleaDkmpEJmM=",
"_parent": {
"$ref": "AAAAAAGBleaDkWo6R28="
},
"model": {
"$ref": "AAAAAAGBleaDkWo3HUg="
},
"visible": false,
"font": "Arial;13;0",
"width": 10,
"height": 10
},
{
"_type": "UMLQualifierCompartmentView",
"_id": "AAAAAAGBleaDkmpFHhE=",
"_parent": {
"$ref": "AAAAAAGBleaDkWo6R28="
},
"model": {
"$ref": "AAAAAAGBleaDkWo4gTs="
},
"visible": false,
"font": "Arial;13;0",
"width": 10,
"height": 10
}
],
"font": "Arial;13;0",
"head": {
"$ref": "AAAAAAGBcepBH49gWjs="
},
"tail": {
"$ref": "AAAAAAGBcdcaiIu5AYo="
},
"points": "1056:336;246:336;246:352",
"showVisibility": true,
"nameLabel": {
"$ref": "AAAAAAGBleaDkWo7aA0="
},
"stereotypeLabel": {
"$ref": "AAAAAAGBleaDkWo8siE="
},
"propertyLabel": {
"$ref": "AAAAAAGBleaDkWo9F/I="
},
"tailRoleNameLabel": {
"$ref": "AAAAAAGBleaDkWo+Nik="
},
"tailPropertyLabel": {
"$ref": "AAAAAAGBleaDkWo/xIY="
},
"tailMultiplicityLabel": {
"$ref": "AAAAAAGBleaDkWpAhMc="
},
"headRoleNameLabel": {
"$ref": "AAAAAAGBleaDkWpB1sI="
},
"headPropertyLabel": {
"$ref": "AAAAAAGBleaDkWpC0QE="
},
"headMultiplicityLabel": {
"$ref": "AAAAAAGBleaDkWpDos4="
},
"tailQualifiersCompartment": {
"$ref": "AAAAAAGBleaDkmpEJmM="
},
"headQualifiersCompartment": {
"$ref": "AAAAAAGBleaDkmpFHhE="
}
}
]
},
{
"_type": "UMLPackage",
"_id": "AAAAAAGBcc/j7otPwYw=",
"_parent": {
"$ref": "AAAAAAFF+qBWK6M3Z8Y="
},
"name": "Utility",
"ownedElements": [
{
"_type": "UMLClass",
"_id": "AAAAAAGBcddlUIvimLQ=",
"_parent": {
"$ref": "AAAAAAGBcc/j7otPwYw="
},
"name": "RefineOutput",
"ownedElements": [
{
"_type": "UMLAssociation",
"_id": "AAAAAAGBceklyo1cyhM=",
"_parent": {
"$ref": "AAAAAAGBcddlUIvimLQ="
},
"end1": {
"_type": "UMLAssociationEnd",
"_id": "AAAAAAGBceklyo1dteU=",
"_parent": {
"$ref": "AAAAAAGBceklyo1cyhM="
},
"reference": {
"$ref": "AAAAAAGBcddlUIvimLQ="
},
"navigable": false
},
"end2": {
"_type": "UMLAssociationEnd",
"_id": "AAAAAAGBceklyo1enA8=",
"_parent": {
"$ref": "AAAAAAGBceklyo1cyhM="
},
"reference": {
"$ref": "AAAAAAGBcd28F4wbC0A="
},
"multiplicity": "0..*"
}
}
],
"operations": [
{
"_type": "UMLOperation",
"_id": "AAAAAAGBcdgPsIwOGFU=",
"_parent": {
"$ref": "AAAAAAGBcddlUIvimLQ="
},
"name": "byteToFloat",
"parameters": [
{
"_type": "UMLParameter",
"_id": "AAAAAAGBcdiDeowW9eI=",
"_parent": {
"$ref": "AAAAAAGBcdgPsIwOGFU="
},
"name": "Byte",
"type": ""
}
]
},
{
"_type": "UMLOperation",
"_id": "AAAAAAGBgXC9VnhdsO4=",
"_parent": {
"$ref": "AAAAAAGBcddlUIvimLQ="
},
"name": "byteToString",
"parameters": [
{
"_type": "UMLParameter",
"_id": "AAAAAAGBgXDZQnigCss=",
"_parent": {
"$ref": "AAAAAAGBgXC9VnhdsO4="
},
"name": "Byte",
"type": ""
}
]
}
]
},
{
"_type": "UMLClass",
"_id": "AAAAAAGBcdcah4u3M+0=",
"_parent": {
"$ref": "AAAAAAGBcc/j7otPwYw="
},
"name": "IPFinder",
"ownedElements": [
{
"_type": "UMLAssociation",
"_id": "AAAAAAGBcgW61pLeX0A=",
"_parent": {
"$ref": "AAAAAAGBcdcah4u3M+0="
},
"end1": {
"_type": "UMLAssociationEnd",
"_id": "AAAAAAGBcgW61pLfi/Y=",
"_parent": {
"$ref": "AAAAAAGBcgW61pLeX0A="
},
"reference": {
"$ref": "AAAAAAGBcdcah4u3M+0="
},
"navigable": false
},
"end2": {
"_type": "UMLAssociationEnd",
"_id": "AAAAAAGBcgW61pLguCQ=",
"_parent": {
"$ref": "AAAAAAGBcgW61pLeX0A="
},
"reference": {
"$ref": "AAAAAAGBcd28F4wbC0A="
}
}
},
{
"_type": "UMLAssociation",
"_id": "AAAAAAGBleaDkGo2TCA=",
"_parent": {
"$ref": "AAAAAAGBcdcah4u3M+0="
},
"end1": {
"_type": "UMLAssociationEnd",
"_id": "AAAAAAGBleaDkWo3HUg=",
"_parent": {
"$ref": "AAAAAAGBleaDkGo2TCA="
},
"reference": {
"$ref": "AAAAAAGBcdcah4u3M+0="
},
"navigable": false
},
"end2": {
"_type": "UMLAssociationEnd",
"_id": "AAAAAAGBleaDkWo4gTs=",
"_parent": {
"$ref": "AAAAAAGBleaDkGo2TCA="
},
"reference": {
"$ref": "AAAAAAGBcepBH49evoE="
}
}
}
],
"attributes": [
{
"_type": "UMLAttribute",
"_id": "AAAAAAGBkL6bFTmjhR8=",
"_parent": {
"$ref": "AAAAAAGBcdcah4u3M+0="
},
"name": "clients",
"visibility": "private",
"type": ""
}
],
"operations": [
{
"_type": "UMLOperation",
"_id": "AAAAAAGBcgLIDpJmhyI=",
"_parent": {
"$ref": "AAAAAAGBcdcah4u3M+0="
},
"name": "GetAllIPs",
"visibility": "private"
},
{
"_type": "UMLOperation",
"_id": "AAAAAAGBkL7C1To7LAU=",
"_parent": {
"$ref": "AAAAAAGBcdcah4u3M+0="
},
"name": "deleteIp",
"parameters": [
{
"_type": "UMLParameter",
"_id": "AAAAAAGBkL8WzTp+/V0=",
"_parent": {
"$ref": "AAAAAAGBkL7C1To7LAU="
},
"name": "int i",
"type": ""
}
]
}
]
}
]
},
{
"_type": "UMLPackage",
"_id": "AAAAAAGBcdO2+Itxhoc=",
"_parent": {
"$ref": "AAAAAAFF+qBWK6M3Z8Y="
},
"name": "NHR",
"ownedElements": [
{
"_type": "UMLClass",
"_id": "AAAAAAGBcd28F4wbC0A=",
"_parent": {
"$ref": "AAAAAAGBcdO2+Itxhoc="
},
"name": "NHR9400",
"ownedElements": [
{
"_type": "UMLAssociation",
"_id": "AAAAAAGBcgZx2pSrZEs=",
"_parent": {
"$ref": "AAAAAAGBcd28F4wbC0A="
},
"end1": {
"_type": "UMLAssociationEnd",
"_id": "AAAAAAGBcgZx2pSsO0M=",
"_parent": {
"$ref": "AAAAAAGBcgZx2pSrZEs="
},
"reference": {
"$ref": "AAAAAAGBcd28F4wbC0A="
},
"navigable": false
},
"end2": {
"_type": "UMLAssociationEnd",
"_id": "AAAAAAGBcgZx2pSt7yw=",
"_parent": {
"$ref": "AAAAAAGBcgZx2pSrZEs="
},
"reference": {
"$ref": "AAAAAAGBcepBH49evoE="
}
}
},
{
"_type": "UMLAssociation",
"_id": "AAAAAAGBcggi7Zfmzn8=",
"_parent": {
"$ref": "AAAAAAGBcd28F4wbC0A="
},
"end1": {
"_type": "UMLAssociationEnd",
"_id": "AAAAAAGBcggi7ZfndlU=",
"_parent": {
"$ref": "AAAAAAGBcggi7Zfmzn8="
},
"reference": {
"$ref": "AAAAAAGBcd28F4wbC0A="
},
"navigable": false
},
"end2": {
"_type": "UMLAssociationEnd",
"_id": "AAAAAAGBcggi7Zfoo4U=",
"_parent": {
"$ref": "AAAAAAGBcggi7Zfmzn8="
},
"reference": {
"$ref": "AAAAAAGBcd28F4wbC0A="
}
}
}
],
"attributes": [
{
"_type": "UMLAttribute",
"_id": "AAAAAAGBcfFjsZADR+U=",
"_parent": {
"$ref": "AAAAAAGBcd28F4wbC0A="
},
"name": "name",
"visibility": "private",
"type": ""
},
{
"_type": "UMLAttribute",
"_id": "AAAAAAGBcfImP5BrwcI=",
"_parent": {
"$ref": "AAAAAAGBcd28F4wbC0A="
},
"name": "ip",
"visibility": "private",
"type": ""
},
{
"_type": "UMLAttribute",
"_id": "AAAAAAGBcfJFWJCXXr0=",
"_parent": {
"$ref": "AAAAAAGBcd28F4wbC0A="
},
"name": "id",
"visibility": "private",
"type": ""
},
{
"_type": "UMLAttribute",
"_id": "AAAAAAGBcfJxbJC6AFQ=",
"_parent": {
"$ref": "AAAAAAGBcd28F4wbC0A="
},
"name": "Attribute1",
"type": ""
}
],
"operations": [
{
"_type": "UMLOperation",
"_id": "AAAAAAGBcfKsCJD3db8=",
"_parent": {
"$ref": "AAAAAAGBcd28F4wbC0A="
},
"name": "GetterAndSetter"
},
{
"_type": "UMLOperation",
"_id": "AAAAAAGBcgbKkpZKz4U=",
"_parent": {
"$ref": "AAAAAAGBcd28F4wbC0A="
},
"name": "setIP"
},
{
"_type": "UMLOperation",
"_id": "AAAAAAGBcgiJDpukQ8c=",
"_parent": {
"$ref": "AAAAAAGBcd28F4wbC0A="
},
"name": "IPisAvailable",
"visibility": "private"
},
{
"_type": "UMLOperation",
"_id": "AAAAAAGBcglJCZxg6jM=",
"_parent": {
"$ref": "AAAAAAGBcd28F4wbC0A="
},
"name": "error"
}
]
},
{
"_type": "UMLClass",
"_id": "AAAAAAGBcd3b6YxHeC0=",
"_parent": {
"$ref": "AAAAAAGBcdO2+Itxhoc="
},
"name": "NHR9410",
"ownedElements": [
{
"_type": "UMLAssociation",
"_id": "AAAAAAGBceJmhoy7b8w=",
"_parent": {
"$ref": "AAAAAAGBcd3b6YxHeC0="
},
"end1": {
"_type": "UMLAssociationEnd",
"_id": "AAAAAAGBceJmh4y8Bt0=",
"_parent": {
"$ref": "AAAAAAGBceJmhoy7b8w="
},
"reference": {
"$ref": "AAAAAAGBcd3b6YxHeC0="
},
"navigable": false
},
"end2": {
"_type": "UMLAssociationEnd",
"_id": "AAAAAAGBceJmh4y9yTI=",
"_parent": {
"$ref": "AAAAAAGBceJmhoy7b8w="
},
"reference": {
"$ref": "AAAAAAGBcd28F4wbC0A="
}
}
},
{
"_type": "UMLGeneralization",
"_id": "AAAAAAGBceKBBo0l0fs=",
"_parent": {
"$ref": "AAAAAAGBcd3b6YxHeC0="
},
"source": {
"$ref": "AAAAAAGBcd3b6YxHeC0="
},
"target": {
"$ref": "AAAAAAGBcd28F4wbC0A="
}
}
]
},
{
"_type": "UMLClass",
"_id": "AAAAAAGBcd46GYx4vx0=",
"_parent": {
"$ref": "AAAAAAGBcdO2+Itxhoc="
},
"name": "NHR9430",
"ownedElements": [
{
"_type": "UMLGeneralization",
"_id": "AAAAAAGBceJIKoyp+VI=",
"_parent": {
"$ref": "AAAAAAGBcd46GYx4vx0="
},
"source": {
"$ref": "AAAAAAGBcd46GYx4vx0="
},
"target": {
"$ref": "AAAAAAGBcd28F4wbC0A="
}
}
]
}
]
},
{
"_type": "UMLPackage",
"_id": "AAAAAAGBcdPtrIuOSGQ=",
"_parent": {
"$ref": "AAAAAAFF+qBWK6M3Z8Y="
},
"name": "Keysight"
},
{
"_type": "UMLPackage",
"_id": "AAAAAAGBceoeUI8MiVw=",
"_parent": {
"$ref": "AAAAAAFF+qBWK6M3Z8Y="
},
"name": "Control Interface",
"ownedElements": [
{
"_type": "UMLClass",
"_id": "AAAAAAGBcepBH49evoE=",
"_parent": {
"$ref": "AAAAAAGBceoeUI8MiVw="
},
"name": "ControlInterface"
}
]
}
]
}
]
}
\ No newline at end of file
Main.jpg

154 KB

from abc import abstractmethod
import socket
import time
from UtilitiesRei.refineOutput import refineOutput
class NHR9400():
def __init__(self, name):
self.__name = name
self.__s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
self.__s.settimeout(1)
self.__ip = ""
################################# Configurations ######################################################
#Default start: Enable all instruments and close output relays and starts an aperture measurement on all channels which will run for the time specified by the last received SENSe:SWEep:APERture instrument command
#!!!!!! upgrade this function later
def start(self):
self.__s.send("SOUR:OUTP:ON 1\n".encode())
self.__s.send("INIT\n".encode())
def locateIp(self, clients = []):
for client in clients:
try:
self.__s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
self.__s.connect((client, 5025))
self.__s.send("*RST".encode())
self.__s.send("SYST:RWL\n".encode()) #Command to activate remote control and locking the touchscreen
self.__s.send("*IDN?\n".encode())
msg = self.__s.recv(1024)
recv = self.receiveString(msg)
id = "NH Research," + str(self.__name)
if recv.find(id) != -1: #if find this subtring
self.__ip = client
print(self.__ip)
print("Connection successfully")
break
else:
self.__s.close()
except:
print("Connection failed 2")
def getIp(self):
return self.__ip
def getS(self):
return self.__s
#chose a mode with the instrument will run, check the manual to see all modes.
def configMode(self, mode):
if mode < 0 and mode > 16:
print("INVALID INPUT")
else:
self.__s.send(("CONF:HW:MODE " + str(mode) + "\n").encode())
self.checkErrors()
self.validMode()
#check if the mode is valid for the current hardware
def validMode(self):
self.__s.send("CONF:HW:MODE:VAL".encode())
print(self.receiveString())
#Command configures if [SOURCe:]<Function> commands are immediately or phase-angle controlled Query returns the synchronous operating mode
def instrumentSync(self, value):
if value == 0 or value == 1:
self.__s.send(("CONF:INST:SYNC "+ str(value) + "\n").encode())
else:
print("INVALID INPUT")
#The 9400 will contain one (1), two (2), or three (3) logical instruments depending on the CONFigure:HW:MODE selected. Unless otherwise noted in a specific command, Any command or queries with an INSTRUMENT scope will be processed by the last instrument selected by either an INSTrument:NSELect or an INSTrument:SELect.
def instrumentNselect(self, value):
if value < 1 or value > 3:
print("INVALID INPUT")
else:
self.__s.send(("INST:NSEL " + str(value) + "\n").encode())
self.checkErrors()
#Command selects an instrument by its alias name created with INSTrument:DEFine[:NAME]. Query returns the current selected logical instrument alias name.
#check this command, maybe something wrong
def instrumentSelect(self):
self.__s.send("INST:SEL".encode())
self.checkErrors()
#Command assigns an alias name allowing selection of the instrument using INSTrument:SELect <name> Query returns the alias name assigned to a specific output channel.
def instrumentDefName(self, name, num):
self.instrumentNselect(num)
self.__s.send(("INST:DEF:" + str(name) + "\n").encode())
self.checkErrors()
#Command disassociates an <identifier> alias from the logical instrument number.
#After the command executes, the default identifier is re-associated with the instrument number.
#The default identifier cannot be deleted.
def instDelName(self, name):
self.__s.send(("INST:DEL:" + str(name) + "\n").encode())
self.checkErrors()
#Query returns the <identifier> alias for the requested instrument number.
#If no instrument number is provided, the <identifier> of the selected instrument is returned.
def instrumentName(self, num):
if num < 1 or num > 3:
print("INVALID INPUT")
else:
self.__s.send(("INST:NAME " + str(num) + "\n").encode())
self.checkErrors()
#Function that receives messages back and transform it in a string
def receiveString(self,recv):
recv = refineOutput().byteToString(recv)
return recv
#Function that receives messages back and transform it in a float
def receiveFloat(self, msg):
msg = refineOutput().byteToFloat(msg)
return msg
def identify(self):
self.__s.send("*IDN?\n".encode())
return self.receive()
#Function to see if exist any error in the carry
def checkErrors(self):
self.__s.send("SYST:ERR?\n".encode())
value = self.__s.recv(1024)
return self.receiveString(value)
def close(self):
self.__s.send("SOUR:OUTP:ON 0\n".encode())
self.__s.send("ABOR\n".encode())
self.__s.send("SYST:LOC\n".encode())
self.__s.close()
# Controle do relé de saída do hardware (LIGAR OU DESLIGAR)
# 0 OFF - Instrumento desabilitado
# 1 ON - Instrumento habilitado
def enableOutput(self, value):
if value == 0 or value == 1:
self.__s.send(("SOUR:OUTP:ON "+ str(value) + "\n").encode())
else:
print("INVALID INPUT")
################################# System command #####################################################
#Command places the touch panel (if present) in local control mode. All front panel keys are returned to a functional state.
def systLocal(self):
self.__s.send("SYST:LOC\n".encode())
#Command or receipt of an external SCPI command places the touch panel in a non-locked remote mode.
def systRemote(self):
self.__s.send("SYST:REM\n".encode())
#Query returns the SCPI version number to which the module complies. The value is of the form YYYY.V, where YYYY is the year and V is the revision number for that year.
def systVersion(self):
self.__s.send("SYST:VER\n".encode())
#Command specifies the interval (Seconds) in which a command must be received. Query returns the programmed watchdog interval (Seconds).
def systWatchdogInterval(self, interval):
if interval < 0: return -1
self.__s.send(("SYST:WATC:INT " + str(interval) +"\n").encode())
self.__s.send(("*RST\n").encode())
self.__s.send("SYST:RWL\n".encode())
#Command determines the type communication required to reset the watchdog timer. Query returns the type of communication required to reset the watchdog timer.
def systWatchdogRobust(self, bool):
if bool != 0 or bool != 1: return -1
self.__s.send(("SYST:WATC:ROB " + str(bool) +"\n").encode())
self.__s.send(("*RST\n").encode())
self.__s.send("SYST:RWL\n".encode())
#Command resets watchdog timer
def systWatchdogService(self):
self.__s.send(("SYST:WATC:SERV\n").encode())
self.__s.send(("*RST\n").encode())
self.__s.send("SYST:RWL\n".encode())
################################# Digital Subsystem ############################
#Query returns the current state of the general purpose digital input port on the specified module.
def digitalInput(self):
self.__s.send(("DIG:INP\n").encode())
#Query returns the number of general purpose digital inputs (expressed as number of bits).
def digitalInputCount(self):
self.__s.send(("DIG:INP:COUN\n").encode())
#Command sets the state of the general purpose digital output port on the specified module. Query returns the last programmed state of the general purpose digital output
def digitalOutput(self):
self.__s.send(("DIG:OUT\n").encode())
#Query returns the number of general purpose digital outputs (expressed as number of bits).
def digitalInputCount(self):
self.__s.send(("DIG:OUT:COUN\n").encode())
################################# Instrument Capabilities - System Information Queries ##############################
# Query returns the number of output channels detected by the hardware.
def instrumentSystemChanels(self):
self.__s.send(("INST:CAP:SYST:CHAN?\r\n").encode())
value = self.__s.recv(1024)
return self.receiveString(value)
# Query returns the number of chassis detected (Master + Auxiliaries)
def instrumentSystemChassis(self):
self.__s.send(("INST:CAP:SYST:CHAS?\n").encode())
value = self.__s.recv(1024)
return self.receiveFloat(value)
#Query returns the maximum number of commands which can be stored in a macro
def instrumentSystemMacros(self):
self.__s.send(("INST:CAP:MACR:COMM:MAX?\n").encode())
value = self.__s.recv(1024)
return self.receiveFloat(value)
#Query returns the maximum delay time allowed for MACRo:WAIT[:TIME] within a single macro step.
def instrumentSystemMacroDelay(self):
self.__s.send(("INST:CAP:MACR:DEL:MAX?\n").encode())
value = self.__s.recv(1024)
return self.receiveFloat(value)
#Query returns the default Regulation Gain setting set value used by the hardware.
def instrumentSystemRGainNominal(self):
self.__s.send(("INST:CAP:RGA:NOM?\n").encode())
value = self.__s.recv(1024)
return self.receiveFloat(value)
#Query returns the maximum Regulation Gain setting set value used by the hardware.
def instrumentSystemRGainMax(self):
self.__s.send(("INST:CAP:RGA:MAX?\n").encode())
value = self.__s.recv(1024)
return self.receiveFloat(value)
#Query returns the maximum trip time (seconds) for a safety limit settings
def instrumentSystemTripMax(self):
self.__s.send(("INST:CAP:TRIP:MAX?\n").encode())
value = self.__s.recv(1024)
return self.receiveFloat(value)
################################# Instrument Capabilities - Measurement Capabilities Queries ##############################
#Query returns a list with the absolute maximum and minimum measurement aperture setting for the module.
def instrumentSystemApertureRange(self):
range = []
self.__s.send(("INST:CAP:APER:MIN?\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
self.__s.send(("INST:CAP:APER:MAX?\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
return range
#Query returns the absolute peak current measurement capability for instrument selected.
def instrumentSystemCurrent(self):
range = []
self.__s.send(("INST:CAP:CURR:MEAS:MIN?\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
self.__s.send(("INST:CAP:CURR:MEAS:MAX?\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
return range
#Query returns maximum (minimum) peak current measurement for the selected instrument & range
def instrumentSystemCurrentRange(self):
range = []
self.__s.send(("INST:CAP:CURR:MEAS:RANG:MIN?\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
self.__s.send(("INST:CAP:CURR:MEAS:RANG:MAX?\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
return range
#Query returns the waveform digitizer’s maximum (minimum) sample frequency in Hz.
def instrumentSystemFreq(self):
range = []
self.__s.send(("INST:CAP:SAMP:FREQ:MIN?\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
self.__s.send(("INST:CAP:SAMP:FREQ:MAX?\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
return range
#Query returns the waveform digitizer’s maximum sample memory depth
def instrumentSamplePoints(self):
self.__s.send(("INST:CAP:SAMPl:POIN:MAX?\n").encode())
value = self.__s.recv(1024)
return self.receiveFloat(value)
#Query returns the absolute peak voltage measurement capability for instrument selected.
#For AC (1φ) & DC outputs: Query response is expressed as line-neutral.
#For AC multi-φ outputs: Query response is expressed as line-line equivalent value.
def instrumentSystemVoltage(self):
range = []
self.__s.send(("INST:CAP:VOLT:MEAS:MIN?\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
self.__s.send(("INST:CAP:VOLT:MEAS:MAX?\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
return range
def instrumentSystemVoltagePhase(self, phase):
if phase == 1:
msg = "INST:CAP:VOLT:APH:"
elif phase == 2:
msg = "INST:CAP:VOLT:BPH:"
elif phase == 3:
msg = "INST:CAP:VOLT:CPH:"
else:
return -1
range = []
self.__s.send((msg + "MEAS:MIN?\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
self.__s.send((msg + "MEAS:MAX?\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
return range
#Query returns maximum (minimum) peak voltage measurement for the selected instrument & range
def instrumentSystemVoltageRange(self):
range = []
self.__s.send(("INST:CAP:VOLT:MEAS:RANG:MIN?\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
self.__s.send(("INST:CAP:VOLT:MEAS:RANG:MAX?\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
return range
def instrumentSystemVoltageRangePhase(self, phase):
if phase == 1:
msg = "INST:CAP:VOLT:APH:"
elif phase == 2:
msg = "INST:CAP:VOLT:BPH:"
elif phase == 3:
msg = "INST:CAP:VOLT:CPH:"
else:
return -1
range = []
self.__s.send((msg + "MEAS:RANG:MIN?\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
self.__s.send((msg + "MEAS:RANG:MAX?\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
return range
################################# Instrument Capabilities - Setting Capabilities Queries ##############################
# Query returns the absolute maximum current (ARMS or ADC) output capability for instrument selected.
def instrumentCapCurrent(self):
self.__s.send(("INST:CAP:CURR:MAX?\r\n").encode())
value = self.__s.recv(1024)
return self.receiveFloat(value)
#Query returns the maximum current (ARMS or ADC) set-point value for selected instrument & range
def instrumentCapCurrentRange(self):
self.__s.send(("INST:CAP:CURR:RANG:MAX?\n").encode())
value = self.__s.recv(1024)
return self.receiveFloat(value)
#Query returns a list of maximum or minimum current (ARMS or ADC) ranges for the selected instrument.
def instrumentCapCurrentRangeList(self):
range = []
self.__s.send(("INST:CAP:CURR:RANG:LIST:MIN?\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveString(value))
self.__s.send(("INST:CAP:CURR:RANG:LIST:MAX?\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveString(value))
return range
#Query returns the maximum (minimum) allowable operating frequency.
def instrumentCapFreqRange(self):
range = []
self.__s.send((":INST:CAP:FREQ:RANG:MIN?\r\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
self.__s.send(("INST:CAP:FREQ:RANG:MAX?\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
return range
#Query returns the absolute maximum true power (Watts) setting value for the instrument selected.
def instrumentCapPowerMax(self):
self.__s.send(("INST:CAP:POW:ALL:MAX?\n").encode())
value = self.__s.recv(1024)
return self.receiveFloat(value)
# for each phase
def instrumentCapPowerMaxPhase(self, phase):
if phase == 1:
msg = "INST:CAP:POW:APH:"
elif phase == 2:
msg = "INST:CAP:POW:BPH:"
elif phase == 3:
msg = "INST:CAP:POW:CPH:"
else:
return -1
self.__s.send((msg + "MAX?\n").encode())
value = self.__s.recv(1024)
return self.receiveFloat(value)
#These queries will retrieve the minimum (smallest positive) and maximum (largest positive) positive resistance setting for the Module. For example, the minimum = 1.5 and maximum = 1000.
def instrmentCapResistencePos(self):
self.__s.send(("INST:CAP:RES:POS:MIN?\r\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
self.__s.send(("INST:CAP:RES:POS:MAX?\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
return range
def instrmentCapResistencenNeg(self):
self.__s.send(("INST:CAP:RES:NEG:MIN?\r\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
self.__s.send(("INST:CAP:RES:NEG:MAX?\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
return range
#Query returns the absolute maximum voltage (VRMS or VDC) output capability for instrument selected.
def instrumentCapVoltageMaxMin(self):
range = []
self.__s.send(("INST:CAP:VOLT:ALL:MIN?\r\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
self.__s.send(("INST:CAP:VOLT:ALL:MAX?\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
return range
################################# Setters and Getters ################################################
#set limit voltage of all phases
def setVoltage(self,voltage):
if voltage < 0:
return -1
self.__s.send(("SOUR:VOLT: " + str(voltage) + "\n").encode())
#Functions that sets the limits voltage on one phase (A, B or C)
def setVoltageA(self,voltage):
if voltage < 0:
return -1
self.__s.send(("SOUR:VOLT:APH " + str(voltage) + "\n").encode())
def setVoltageB(self,voltage):
if voltage < 0:
return -1
self.__s.send(("SOUR:VOLT:BPHase " + str(voltage) + "\n").encode())
def setVoltageC(self,voltage):
if voltage < 0:
return -1
self.__s.send(("SOUR:VOLT:CPHase " + str(voltage) + "\n").encode())
#Command establishes the True Power limit (W) as a positive value for the selected instrument.
def setPower(self, pow):
if pow < 0:
return -1
self.__s.send(("SOUR:POW: " + str(pow) + "\n").encode())
#Individual command for one phase
def setPowerA(self, pow):
if pow < 0:
return -1
self.__s.send(("SOUR:POW:APHase " + str(pow) + "\n").encode())
def setPowerB(self, pow):
if pow < 0:
return -1
self.__s.send(("SOUR:POW:BPHase " + str(pow) + "\n").encode())
def setPowerC(self, pow):
if pow < 0:
return -1
self.__s.send(("SOUR:POW:CPHase " + str(pow) + "\n").encode())
#Command establishes the operating frequency for the selected instrument.
def setFreq(self, freq):
if freq < 0:
return -1
self.__s.send(("SOUR:FREQ " + str(freq) + "\n").encode())
#!!!! Doesnt work!!!!
def getFreq(self):
self.__s.send("FETC:FREQ\n".encode())
value = self.__s.recv(1024)
return self.receiveFloat(value)
#Fetch the average voltage of all channels
def getVoltage(self):
self.__s.send("FETC:VOLT?\n".encode())
value = self.__s.recv(1024)
return self.receiveFloat(value)
#fetch individual value of voltage of one channel
def getVoltageA(self):
self.__s.send("FETC:VOLT:APHase?\n".encode())
value = self.__s.recv(1024)
return self.receiveFloat(value)
def getVoltageB(self):
self.__s.send("FETC:VOLT:BPHase?\n".encode())
value = self.__s.recv(1024)
return self.receiveFloat(value)
def getVoltageC(self):
self.__s.send("FETC:VOLT:CPHase?\n".encode())
value = self.__s.recv(1024)
return self.receiveFloat(value)
#Fetch the average power of all channels
def getPower(self):
self.__s.send("FETC:POW?\n".encode())
value = self.__s.recv(1024)
return self.receiveFloat(value)
#fetch individual value of Power of one channel
def getPowerA(self):
self.__s.send("FETC:POW:APHase?\n".encode())
value = self.__s.recv(1024)
return self.receiveFloat(value)
def getPowerB(self):
self.__s.send("FETC:POW:BPHase?\n".encode())
value = self.__s.recv(1024)
return self.receiveFloat(value)
def getPowerC(self):
self.__s.send("FETC:POW:CPHase?\n".encode())
value = self.__s.recv(1024)
return self.receiveFloat(value)
#Fetch the average current of all channels
def getCurrent(self):
self.__s.send("FETC:CURR?\n".encode())
value = self.__s.recv(1024)
return self.receiveFloat(value)
#fetch individual value of current of one channel
def getCurrentA(self):
self.__s.send("FETC:CURR:APHase?\n".encode())
value = self.__s.recv(1024)
return self.receiveFloat(value)
def getCurrentB(self):
self.__s.send("FETC:CURR:BPHase?\n".encode())
value = self.__s.recv(1024)
return self.receiveFloat(value)
def getCurrentC(self):
self.__s.send("FETC:CURR:CPHase?\n".encode())
value = self.__s.recv(1024)
return self.receiveFloat(value)
from NHR9400series.NHR9400 import NHR9400
class NHR9410(NHR9400):
def __init__(self):
super().__init__("9410")
def setS(self):
self.__s = self.getS()
from NHR9400series.NHR9400 import NHR9400
class NHR9430(NHR9400):
def __init__(self):
super().__init__("9430")
def setS(self):
self.__s = self.getS()
#Command sets the loading features <loading mode> for a 9430 AC output Query returns the loading features enabled on a 9430
#Command is only accepted if the instrument is a 9430, with AC outputs mode, and in an OFF state Other models & modes: This command is invalid
# 0 = NORMal = CC / CP / CVA with modifiers (PF, CF, & IWAVESHAPE)
# 1 = CR = Constant Resistance (with optional CC limit)
# 2 = RL = Constant series Resistance & Inductance
def instrumentLoad(self, value):
if value < 0 or value > 2:
print("INVALID INPUT")
else:
if value == 0:
self.__s.send("CONF:INST:LOAD:NORM".encode())
if value == 1:
self.__s.send("CONF:INST:LOAD:CR".encode())
if value == 2:
self.__s.send("CONF:INST:LOAD:RL".encode())
self.checkErrors()
#Command enables bi-directional power flow for the 9420 (DC outputs) and 9430 (AC outputs) Query returns if Bi-directional power flow is permitted.
#0 | NO | FALSE | OFF = Bi directional mode is disabled
#1 | YES | TRUE | ON = Bi directional mode is enabled
def instrumentBidirec(self, value):
if value == 0 or value == 1:
self.__s.send(("CONF:INST:BID"+ str(value) + "\n").encode())
else:
print("INVALID INPUT")
self.checkErrors()
#Command sets the standby detection conditions.
#Query returns the configured standby detection conditions for the selected instrument
def instrumentStndy(self):
self.__s.send("CONF: INST:STBY".encode())
self.checkErrors()
#set the current of all phases ** Available only to NHR9430-12
def setCurrent(self, current):
if current < 0:
return -1
self.__s.send(("SOUR:CURR " + str(current) + "\n").encode())
#Functions that sets the limite currents on one phase (A, B or C)
def setCurrentA(self, current):
if current < 0:
return -1
self.__s.send(("SOUR:CURR:APHase " + str(current) + "\n").encode())
def setCurrentB(self, current):
if current < 0:
return -1
self.__s.send(("SOUR:CURR:BPHase " + str(current) + "\n").encode())
def setCurrentC(self, current):
if current < 0:
return -1
self.__s.send(("SOUR:CURR:CPHase " + str(current) + "\n").encode())
###################### Instrument Capabilities #################
#Query returns the minimum and maximum allowable set value for crest factor in NORMal loading mode Refer to CONFigure:LOAD:MODE for information about setting the 9430 in NORmal loading mode.
def instrumentCapCurrentCF(self):
range = []
self.__s.send(("INST:CAP:CURR:CF:MIN?\r\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
self.__s.send(("INST:CAP:CURR:CF:MAX?\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
return range
#Query returns the minimum and maximum resistance that can be set in RL loading mode. Refer to CONFigure:LOAD:MODE for information about setting the 9430 in RL loading mode.
def instrumentCapResistenceRL(self):
range = []
self.__s.send(("INST:CAP:RL:RES:MIN?\r\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
self.__s.send(("INST:CAP:RL:RES:MAX?\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
return range
#Query returns the minimum and maximum inductance that can be set in RL loading mode.
def instrumentCapInductanceRL(self):
range = []
self.__s.send(("INST:CAP:RL:IND:MIN?\r\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
self.__s.send(("INST:CAP:RL:IND:MAX?\n").encode())
value = self.__s.recv(1024)
range.append(self.receiveFloat(value))
return range
import socket
from scapy.all import ARP, Ether, srp
class IPFinder:
#uses socket and scapy to scan the entire local network and returns all the IPs adresses of the devices connects in this networok
def __getAllIp(self):
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.connect(("10.255.255.255",1))
local_ip = s.getsockname()[0]
splited = local_ip.split('.')
splited = local_ip.split('.')
splited.pop()
splited.append("1/24")
local_ip = ".".join(splited)
arp = ARP(pdst=local_ip)
ether = Ether(dst="ff:ff:ff:ff:ff:ff")
packet = ether/arp
result = srp(packet, timeout=1,retry = 1, verbose = 0)[0]
clients = []
for sent, received in result:
clients.append(received.psrc)
self.__clients = clients
def deteleIp(self, ip):
self.__clients.remove(ip)
def getList(self):
self.__getAllIp()
return self.__clients
\ No newline at end of file
class refineOutput:
def byteToFloat(self, recv):
recv = bytes(recv)
recv = recv.decode("UTF-8")
recv = recv.rstrip('\n\x00')
return float(recv)
def byteToString(self, recv):
recv = bytes(recv)
recv = recv.decode("UTF-8")
recv = recv.rstrip('\n\x00')
return recv
\ No newline at end of file
import socket
import time
from Control_Interface.controlInterface import controlInterface
def main():
interface = controlInterface()
interface.__init__()
print(interface.getListIp())
interface.newNhr("9410")
#interface.newNhr("9430")
#interface.newNhr("9430")
nhr10 = []
nhr30 = []
nhr10 = interface.getNhr9410()
nhr30 = interface.getNhr9430()
for elem in nhr10:
print("nhr10 watch dog interval: ", elem.systWatchdogInterval(0))
print("nhr10 ip: ",elem.getIp())
print("nhr10 max current: ", elem.instrumentCapCurrent())
print("nhr10 current range: ", elem.instrumentCapCurrentRange())
print("nhr10 freq range: ", elem.instrumentCapFreqRange())
print("nhr10 power range: ", elem.instrumentCapPowerMax())
print("nhr10 voltage range: ", elem.instrumentCapVoltageMaxMin())
for elem in nhr30:
print("nhr30 ip: ",elem.getIp())
print("nhr10 watch dog interval: ", elem.systWatchdogInterval(5))
print("nhr30 max current: ", elem.instrumentCapCurrent())
print("nhr30 current range: ", elem.instrumentCapCurrentRange())
print("nhr30 freq range: ", elem.instrumentCapFreqRange())
print("nhr30 power range: ", elem.instrumentCapPowerMax())
print("nhr30 voltage range: ", elem.instrumentCapVoltageMaxMin())
print("nhr30 range: ", elem.instrumentCapResistenceRL())
time.sleep(3)
for elem in nhr10:
elem.close()
for elem in nhr30:
elem.close()
if __name__ == '__main__':
main()
import mug
class can(mug.mug):
def __init__(self, name):
super().__init__(name)
self.__id = 0
def setId(self, id):
self.__id = id
def getId(self):
return self.__id
def getS(self):
return self.__s
\ No newline at end of file
class dec():
def rewrite(self, recv):
recv = recv + "blablabla"
return recv
\ No newline at end of file
#files to test any problems that was find in the project
#02/08/22: solving the problems with heritage
import can
import mug
can = can.can("caneca")
mug = mug.mug("mug")
can.setId(132)
print(can.getId())
print(can.decode("isso aqui é "))
print("can s: ", can.getS()) #this should be working on the project was well
print(mug.getS())
\ No newline at end of file
import socket
import dec
class mug():
def __init__(self,name):
self.__name: name
self.__s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
self.__s.settimeout(1)
def decode(self, recv):
recv = dec.dec().rewrite(recv)
return recv
\ No newline at end of file
#Arquivo para teste em geral
import socket
from scapy.all import ARP, Ether, srp, arping
import socket
import time
start = time.time()
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.settimeout(1)
s.connect(("192.168.0.2",5025))
s.send("SYST:RWL\n".encode()) #Command to activate remote control and locking the touchscreen
s.send("*IDN?\r\n".encode())
msg = s.recv(1024)
print(msg)
s.send("SOUR:OUTP:ON 1\n".encode())
s.send("INIT\n".encode())
s.send("SOUR:VOLT: 110\r\n".encode())
s.send("SYST:ERR?\n".encode())
msg = s.recv(1024)
print(msg)
time.sleep(5)
s.send("SOUR:OUTP:ON 0\n".encode())
s.send("SYST:LOC\n".encode())
s.close()
\ No newline at end of file
read = str("192.168.150.5")
splited = read.split('.')
print(splited)
splited.pop()
print(splited)
splited.append("1/24")
read = ".".join(splited)
print(read)
print("INSTrument:NSELect "+ str(2) + "\n")
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment