private BACnetDeviceObjectPropertyReference GetPropertyReferensFromString(string obj) { var res = new BACnetDeviceObjectPropertyReference(); string devAddr = string.Empty; string objAddress; int devAddress = 0; if (obj.Contains(".")) { devAddr = obj.Split('.')[0]; int.TryParse(devAddr, out devAddress); objAddress = obj.Split('.')[1]; } else objAddress = obj; var objType = new Regex(@"[a-z\-A-Z]+").Match(objAddress).Value; var objNum = new Regex(@"[0-9]+").Match(objAddress).Value; int objNumber; int.TryParse(objNum, out objNumber); if (!string.IsNullOrWhiteSpace(devAddr)) res.DeviceId = new BACnetObjectId((int)BacnetObjectType.Device, devAddress, 3); res.ObjectId.Instance = objNumber; res.PropertyId = new BACnetEnumerated((int)BacnetPropertyId.PresentValue, 1); objType = objType.ToUpper(); switch (objType) { case "AI": res.ObjectId.ObjectType = (int)BacnetObjectType.AnalogInput; break; case "AO": res.ObjectId.ObjectType = (int)BacnetObjectType.AnalogOutput; break; case "AV": res.ObjectId.ObjectType = (int)BacnetObjectType.AnalogValue; break; case "BI": res.ObjectId.ObjectType = (int)BacnetObjectType.BinaryInput; break; case "BO": res.ObjectId.ObjectType = (int)BacnetObjectType.BinaryOutput; break; case "BV": res.ObjectId.ObjectType = (int)BacnetObjectType.BinaryValue; break; case "MI": res.ObjectId.ObjectType = (int)BacnetObjectType.MultiStateInput; break; case "MO": res.ObjectId.ObjectType = (int)BacnetObjectType.MultiStateOutput; break; case "MV": res.ObjectId.ObjectType = (int)BacnetObjectType.MultiStateValue; break; } return res; }