0

我是 C# 和 Tia Openness 的新手,但遇到了问题。我不知道 ImportSingleTextList(); 中的参数是什么。它是 Siemens 的一个示例,但从未提及如何将其称为 inisde main。那是我的代码

private static void ImportSingleTextList(HmiTarget hmitarget)
        {
            TextListComposition textListsComposition = hmitarget.TextLists;
            IList<TextList> importedTextLists = textListsComposition.Import(new FileInfo(@"D:\SamplesImport\myTextList.xml"), ImportOptions.Override);
        }
4

2 回答 2

1

我想你必须准确地查看你的 HmiTarget。它是一个类,那么你应该实例化它的第一个实例;这个类有什么构造函数 - 有或没有参数?单击 HmiTarget 并查看它期望的输入。
我猜你的班级有一些你必须填写或获取的可枚举 hmitarget.TextLists。

于 2022-02-08T13:53:16.790 回答
0

大概你有一个 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 设备的字符串名称。

于 2022-02-09T08:35:52.730 回答