beautypg.com

Echelon i.LON SmartServer 2.0 User Manual

Page 375

background image

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 "/#DeviceDiscovery" data logger is automatically created by the network scan

// 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);