大概你有一个 Project 实例。您必须从 Project->Device->DeviceItem(->DeviceItem) 向下钻取,直到找到可以提供 SoftwareContainer 服务的 DeviceItem。可能所有此类 DeviceItem 都位于 Device 之下的第一层;我没有检查。无论如何,这是我编写的搜索第一和第二个 DeviceItem 级别的方法:
public static HmiTarget GetHmiTarget(Device hmiDevice)
{
//search first level of DeviceItems
foreach (DeviceItem di in hmiDevice.DeviceItems)
{
SoftwareContainer container =
di.GetService<SoftwareContainer>();
if (container != null)
{
HmiTarget hmi = container.Software as HmiTarget;
if (hmi != null)
return hmi;
}
//search second level of DeviceItems
foreach (DeviceItem devItem in di.DeviceItems)
{
SoftwareContainer subContainer = devItem.GetService<SoftwareContainer>();
if(subContainer != null)
{
HmiTarget hmi = subContainer.Software as HmiTarget;
if (hmi != null)
return hmi;
}
}
}
return null; //nothing was found at the first or second levels
}
要获取设备,您可以使用 PROJECT.Devices.Find(NAME),其中 PROJECT 是您的 TIA 门户项目实例,NAME 是您的 HMI 设备的字符串名称。