首页 > 解决方案 > (TwinCAT)如何检查任务选项中的“创建符号”框(c#自动化代码)

问题描述

我需要使用 ac# 代码创建一个新任务(twincat 必须在后台保持打开状态,我必须不直接与其交互),并从任务选项中检查 Create Symbols 框,这样我就可以通过 SymbolLoaderFactory 访问符号.创建方法。创建任务的代码部分如下:

ITcSysManager sysMan = Connect2Twincat(solutionPath, solutionName);
string TaskName = "Task BECKHOFF";
ITcSmTreeItem tasks = sysMan.LookupTreeItem("TIRT");
taskBKF = tasks.CreateChild(TaskName, 0, null, null);

你能告诉我如何修改“创建符号”选项吗?因为使用该代码,该任务未选中该框。

标签: c#tasktwincat

解决方案


我发现了如何自己解决它,如果有人遇到同样的问题,请发布答案。(免责声明:我不是程序员,我可以说愚蠢的话)它是通过 xml 完成的,在创建任务之后(我在问题中编写的代码)。

StringWriter stringWriter = new StringWriter();
using (XmlWriter writer = new XmlTextWriter(stringWriter))
{
    writer.WriteStartElement("TreeItem");
    writer.WriteStartElement("TaskDef");
    string affinityString = string.Format("#x{0}", ((ulong)affinityMask).ToString("x16"));
    writer.WriteElementString("CpuAffinity", affinityString);
    writer.WriteEndElement();
    writer.WriteEndElement();
}
string xml = stringWriter.ToString();
task.ConsumeXml(xml);

...(来自文档 - 下面的链接)...

string taskXml = taskBKF.ProduceXml();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(taskXml);
XmlNode createSymb = xmlDoc.SelectSingleNode("TreeItem/TaskDef/CreateSymbols");
string xml = string.Format("<TreeItem><TaskDef><CreateSymbols>true</CreateSymbols></TaskDef></TreeItem>"); 
//the "true" in the middle defines if the create symbols box will be checked or unchecked

taskBKF.ConsumeXml(xml);

示例基本代码在这里:https ://infosys.beckhoff.com/english.php?content=../content/1033/tc3_automationinterface/index.html&id=3954232867334285510


推荐阅读