如何解决Codesys 3.如何从ST中的静态或动态文本文件获取翻译?
我正在使用Twincat 3(4024.10),并尝试了SysLibTargetVisu库中的函数“ GetTextByStringId”和“ GetText”,但编译器已经给我一个错误:
错误未解决参考:'GETTEXTBYSTRINGID'0
似乎在Codesys 2中有效: https://forge.codesys.com/forge/talk/CODESYS-V2/thread/8f2fc2e158/
谢谢!
解决方法
我还记得我在这上面浪费时间。不幸的是,它似乎是一个古老的未记录且未维护的库。
我用Java编写了一个xml阅读器,在几小时内解决了这个问题,该阅读器从文本列表中读取id和文本,并将它们通过广告推送到plc,然后将它们存储在内存中。然后可以根据需要使用这些值。
此方法的另一个优点是您无需使用plc hmi许可证。
,我在VisuElems库中找到了一个解决方案。它确实有效。这是功能:
sTextList := CONCAT('Port_851.',sTextList);
F_GetText := VisuElems.CmpDynamicText.DynamicTextGetText(
pstTextList:= ADR(sTextList),pstTextIndex:= ADR(sId)
)^;
sTest := F_GetText(sId := 'maschine',sTextList := 'TL_Visu');
在程序中我们这样称呼它:
DE: STRING(8) := 'default';
您可能需要默认翻译。可以说默认翻译是德语,我们有一个常数:
sTextList := CONCAT('Port_851.',sTextList);
IF VisuElems.CURRENTLANGUAGE = DE THEN
F_GetText := VisuElems.CmpDynamicText.DynamicTextGetDefaultText(
pstTextList:= ADR(sTextList),pstTextIndex:= ADR(sId)
)^;
ELSE
F_GetText := VisuElems.CmpDynamicText.DynamicTextGetText(
pstTextList:= ADR(sTextList),pstTextIndex:= ADR(sId)
)^;
END_IF
函数是:
IonicStorageModule.forRoot()
我从这个德国网页上得到了这个解决方案: https://www.sps-forum.de/archive/index.php/t-88760.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。