Echelon i.LON SmartServer 2.0 User Manual
Page 375
![background image](/manuals/735732/375/background.png)
i.LON SmartServer 2.0 Programmer’s Reference
21-23
//Check scan status
bool
scanDone =
false
;
while
(!scanDone)
{
SmartServer.InvokeCmd(
ref
itemColl_Check);
iLON_SmartServer.
InvokeCmdResponse
scanCheck_Response =
new
iLON_SmartServer.
InvokeCmdResponse
();
scanCheck_Response.iLonItem = itemColl_Check;
iLON_SmartServer.
LON_Network_ScanCommand_Invoke
scanStatusCheck =
(iLON_SmartServer.
LON_Network_ScanCommand_Invoke
)scanCheck_Response.iLonItem.Item[0];
//if the scan is done set scanDone flag to true
if
(scanStatusCheck.Command[0].UCPTstatus.Value ==
"STATUS_DONE"
)
{
Console
.WriteLine(
"Network Scan Status = "
+
scanStatusCheck.Command[0].UCPTstatus.Value);
scanDone =
true
;
}
//if the scan is not done, keep scanDone flag at false, wait 10 seconds, and check again
else
if
(scanStatusCheck.Command[0].UCPTstatus.Value ==
"STATUS_PENDING"
)
{
Console
.WriteLine(
"Network Scan Status = "
+
scanStatusCheck.Command[0].UCPTstatus.Value);
Thread
.Sleep(10000);
}
}
// A "
// read the Data Logger and process the data of the discovered data
iLON_SmartServer.
UFPTdataLogger_Data
deviceDiscovered =
new
iLON_SmartServer.
UFPTdataLogger_Data
();
deviceDiscovered.UCPTname =
"Net/#DeviceDiscovery"
;
iLON_SmartServer.
Item_Coll
itemColl_DataLog =
new
iLON_SmartServer.
Item_Coll
();
itemColl_DataLog.xSelect =
"//Item[@xsi:type=\"UFPTdataLogger_Data\"]"
;
itemColl_DataLog.Item =
new
iLON_SmartServer.
Item
[1];
itemColl_DataLog.Item[0] = deviceDiscovered;
iLON_SmartServer.
Item_DataColl
dataLogger = SmartServer.Read(itemColl_DataLog);
Console
.WriteLine(
"Devices Discovered = "
+ (dataLogger.Item.Length - 1));
Console
.WriteLine(
"=========================================================="
);
iLON_SmartServer.
Item_CfgColl
itemCfgColl =
new
iLON_SmartServer.
Item_CfgColl
();
//Create a new ItemCfgColl to store discovered devices
itemCfgColl.Item =
new
iLON_SmartServer.
Item_Cfg
[dataLogger.Item.Length - 1];
for
(
int
i = 1; i < dataLogger.Item.Length; i++)
//we start at 1 to account for the metaData item in Data Logger
{
iLON_SmartServer.
UFPTdataLogger_Data
dataLoggerData =
(iLON_SmartServer.
UFPTdataLogger_Data
)dataLogger.Item[i];
if
(dataLoggerData !=
null
)
{
Console
.WriteLine(
"Device #"
+ i +
": Neuron ID and Program ID = "
+
dataLoggerData.UCPTvalue[0].Value);
}
// -------------- CREATING DISCOVERED LONWORKS DEVICES--------------
//Create a new LON_Device_Cfg Item and add it to ItemCfgColl
iLON_SmartServer.
LON_Device_Cfg
my_LON_Device =
new
iLON_SmartServer.
LON_Device_Cfg
();
itemCfgColl.Item[i - 1] = my_LON_Device;
//subtract 1 for the metaData item in Data Logger
//parse Neuron ID and Program ID from Data Logger
String
NID_PID = dataLoggerData.UCPTvalue[0].Value;
String
NID = NID_PID.Substring(0, 12);