Codesys自定义库的帮助文档的美化

news2024/11/26 12:45:48

文章目录

  • 1.前言
  • 2.美化的方式
    • 2.1.利用html标签
    • 2.2.利用reStructuredText
  • 3.相关说明
    • 3.1.使用reStructuredText时,中文注释的问题
    • 3.2.将文档需要的图片包含到库中
    • 3.3.文档的作用区域

1.前言

当我们在codesys中写好自己的库,并且发布给别人使用时,别人可以在库管理器中查看到我们库的帮助文档。但是codesys默认帮我们生成的文档,看起来比较简陋:
在这里插入图片描述看一下系统的,他的帮助文档有图、有表格、有代码示例,看起来很好看:
在这里插入图片描述假如我们也想做到这样子,该如何操作呢?

2.美化的方式

关于如何美化,其实官方的帮助文档有提到:【Library Documentation】
在这里插入图片描述

CODESYS users are able to insert HTML tags into the comments of modules for controlling how the appearance is formatted in the library manager…

也就是说,可以通过html标签来实现图片、表格等元素的插入,控制字体的样式等等操作。
但是,同时,他们也提到,利用html标签的话,会破坏源码的易读性,从而不太建议使用html标签:

However, this method is not recommended because it corrupts the legibility of the source code.

官方建议使用reStructuredText。当使用reStructuredText时,貌似还可以调用CODESYS的一些函数来生成结果显示在界面上?
在这里插入图片描述但是有时候html标签还是挺方便的,这里都尝试一下吧。

2.1.利用html标签

关于html标签,可以看一下这里:【html标签】
在这里插入图片描述

经过测试,图片,设置视频都可以插入进去:
源码:
在这里插入图片描述

/// 搞三个斜杆是不是就可以显示在文档中,注意一定要是三个斜杆
/// <h1>这里显示图片</h1>
/// <img src="https://www.w3school.com.cn/i/photo/tulip.jpg" alt="上海鲜花港 - 郁金香" />
/// <h1>video元素</h1>
/// <video width="640" height="360" controls>
///   <source src="https://www.w3school.com.cn/i/video/shanghai.mp4" type="video/mp4">
///   您的浏览器不支持 video 标签。
/// </video>

FUNCTION MyFunction_cext : MyDUT // 返回值可以
VAR_INPUT
	 a : STRING;
	 b : REFERENCE TO STRING; // 可以在C函数中对此变量赋值,注意要使用MEMCPY的方法
	 c : POINTER TO STRING;   // 可以在C函数中对此变量赋值,注意要使用MEMCPY的方法
	 d : REFERENCE TO REAL;
	 i : REFERENCE TO INT;
END_VAR

VAR
END_VAR

效果:
在这里插入图片描述

2.2.利用reStructuredText

reStructuredText的语法稍微复杂一些,请自行找资料学习一下。
这里提供一些资料:【reStructuredText介绍】、 【Quick reStructuredText】
假如使用reStructuredText,需要在工程设置中增加一个定义:
在这里插入图片描述

DocFormat 文本类型 reStructuredText

// 这个没用
// DocLanguages 文本类型 en, de, ch, zh-chs

源码:
在这里插入图片描述

(* 
 * +------------+------------+-----------+
 * | Header 1   | Header 2   | Header 3  |
 * +============+============+===========+
 * | body row 1 | column 2   | column 3  |
 * +------------+------------+-----------+
 * | body row 2 | Cells may span columns.|
 * +------------+------------+-----------+
 * | body row 3 | Cells may  | - Cells   |
 * +------------+ span rows. | - contain |
 * | body row 4 |            | - blocks. |
 * +------------+------------+-----------+
 *
 * 网络图片
 *
 * .. image:: https://www.w3school.com.cn/i/photo/tulip.jpg
 *
 * 工程图片,比较奇怪的是图片路径比实际路径的位置要往前一级,也就是要多一次 ../ 操作
 *
 * .. image:: ../Images/WIN_20231102_14_45_52_Pro.jpg
 * 
 * 这里显示代码
 * ::
 *
 *     (* Example declaration *)          
 *     TONInst : TON ;                    
 *     (* Example in ST *)
 *     TONInst(IN := VarBOOL1, PT:= T#5s);
 *     VarBOOL2 := TONInst.Q;                               
 *)
FUNCTION_BLOCK FINAL MyFB
VAR_INPUT
	a	: BOOL;    (* only support english *)
	b	: STRING;  (* only support english *)
	c	: INT;     (* ---------- *)
END_VAR
VAR_OUTPUT
END_VAR
VAR
END_VAR

效果:
在这里插入图片描述

3.相关说明

3.1.使用reStructuredText时,中文注释的问题

当使用reStructuredText作为文档格式时,结构体、函数、功能块的参数注释不能包含中文,否则inout表格无法显示
在这里插入图片描述我尝试设置了DocLanguages 为ch,一样不行。在官方文档中同一章节找到一篇文章【Documentation in Different Languages】,但是好像讲的是翻译文档的,而不是这个inOut不显示的问题。
希望高手来告诉一下怎么解决。

3.2.将文档需要的图片包含到库中

建立一个文件夹,然后在文件夹处右键,添加对象-》外部文件, 把文件导入进来。记得要勾选【嵌入工程】,否则你的库到了别人的电脑就显示不了图片了。
在这里插入图片描述
在导入后,假如codesys把你的文件的后缀名给去掉了,自己要补上去,否则有些问题。
然后在使用的时候,就通过相对路径来使用这个图片。相对路径有些奇怪,需要注意一下【图片路径比实际路径的位置要往前一级,也就是要多一次 …/ 操作】
在这里插入图片描述

3.3.文档的作用区域

除了函数、功能块这些常用的地方可以通过这些方式生成帮助文档外,有哪些地方可以生成文档呢?
关于这个,官方有介绍,主要有6个位置:【Documentation Areas】

  • Project Information
  • Folder
  • Declaration Header
  • Member Declaration
  • Enums, Structures, GVL’s
  • Actions and Transitions

这些位置写的注释都会在库管理器中的文档显现出来。


参考:
【Library Documentation】
【Documentation Areas】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1494048.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

overleaf latex 笔记

overleaf: www.overleaf.com 导入.tex文件 1.代码空一行&#xff0c;代表文字另起一段 2. 1 2 3 排序 \begin{enumerate} \item \item \item \end{enumerate} 3.插入图片 上传图片并命名 \usepackage{float}导包\begin{figure}[H]&#xff1a;表示将图…

大数据最佳实践

本文主要收录一些大数据不错的实践文章 1、数禾云上数据湖最佳实践 https://blog.51cto.com/u_15089766/2601706 该文章介绍了数禾云的数据胡实践&#xff0c;包含presto以及数据湖等组件的一些部署架构&#xff0c;文章听不错的&#xff0c;里面提到了为了避免presto与yarn计…

汽车中网上的logo不能改,需要到车管所备案

需要备案。 车辆改装需到车辆管理所办理登记。 机动车每年检验时&#xff0c;需要对外观进行检测。 中国在线的标志不能更改。 汽车格栅是汽车前部进气口附近相关部件的总称。 汽车的中网主要位于水箱、发动机、空调等设备的前面&#xff0c;控制进气和通风&#xff0c;防止行…

3d怎么拖模型---模大狮模型网

在3D建模软件中拖动(移动)模型通常是一种基本的操作&#xff0c;用来调整模型的位置或布局。以下是一般情况下在3D建模软件中拖动模型的基本步骤&#xff1a; 3d拖模型的步骤&#xff1a; 选择模型&#xff1a;在3D建模软件中选中你要拖动的模型。通常可以通过单击模型来选中它…

#define MODIFY_REG(REG, CLEARMASK, SETMASK)

#define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK))) 这个宏 MODIFY_REG 是在嵌入式编程中&#xff0c;它用于修改一个寄存器的特定位&#xff0c;而不影响其他位。这个宏接受三个参数&#xff…

无代理方式实现VMware的迁移?详细解析

在当今数字化时代&#xff0c;数据的安全性和可用性对于企业至关重要。尤其是在VMware转变订阅策略后&#xff0c;原本永久订阅的产品转变为以年付费订阅的形式&#xff0c;导致客户不得不支付更多的费用&#xff0c;大幅增加了成本。同时&#xff0c;客户也对VMware未来发展前…

鹅厂打工8年,我为啥突然裸辞?

公众号&#xff1a;程序员白特&#xff0c;欢迎一起交流学习~ 原文&#xff1a;以下文章来源于沐洒 &#xff0c;作者ASCII26 今天跟大家分享一个重磅消息&#xff0c;沐洒终于从腾讯离职了&#xff01; 不知不觉已经在鹅厂打了8年工&#xff0c;如果说在大厂里工作如同在高校…

DAY 12滑动串口最大值【单调队列】 前K个高频元素【优先级队列】

6.滑动窗口最大值 队列的应用&#xff01;&#xff01; 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1&#xff…

deep image matting

[Matting]论文阅读&#xff1a;Deep Image Matting 详细解读-CSDN博客文章浏览阅读3.5k次&#xff0c;点赞2次&#xff0c;收藏10次。[Matting]论文阅读&#xff1a;Deep Image Matting 详细解读一 、摘要二、方法2.1 第一部分&#xff08;Matting encoder-decoder stage&#…

ThingsBoard社区版入门介绍

介绍 本教程主要演示ThingsBoard的基本用法并掌握: 设备连接&#xff1b;数据发布&#xff1b;数据展示&#xff1b;警报触发&#xff1b;通知推送。 教程将连接和可视化来自温度传感器的数据以及简单使用。 必备条件 你需要启动并运行ThingsBoard服务&#xff0c; 建议使…

java spring 02. AbstractApplicationContext的refresh

spring创建对象的顺序&#xff0c;先创建beanfactory&#xff0c;再会把xml文件读取到spring。 public ClassPathXmlApplicationContext(String[] configLocations, boolean refresh, Nullable ApplicationContext parent)throws BeansException {//调用父类的构造方法super(p…

05_Mongooes

Mongooes Mongoose是通过Node来操作MongoDB的一个模块。是基于Node.js的第三方模块。 一、Node.js安装 1.解压 2.创建文件夹 解压路径下&#xff0c;创建两个文件夹 node_global&#xff1a;全局安装位置 node_cache&#xff1a;缓存 3.配置 配置环境变量 在path路径…

挂耳式运动蓝牙耳机什么牌子好?六大选购技巧大揭秘

随着蓝牙耳机的普及&#xff0c;越来越多的人选择它们来满足日常的娱乐需求。这些耳机以时尚的设计和舒适的佩戴体验而受到青睐。蓝牙耳机主要分为挂耳式和入耳式两大类。尽管入耳式耳机功能全面&#xff0c;但对于热衷运动的用户来说不够稳固&#xff0c;因为在运动时很容易掉…

蓝桥杯-大小写转换

转换方法 toLowerCase() String类的toLowerCase()方法可以将字符串中的所有字符全部转换成小写&#xff0c;而非字母的字符不受影响&#xff0c;语法格式如下&#xff1a; 字符串名.toLowerCase() //将字符串中的字母全部转成小写&#xff0c;非字母不受影响。 package chap…

闫震海:腾讯音乐空间音频技术的发展和应用 | 演讲嘉宾公布

一、3D 音频 3D 音频分论坛将于3月27日同期举办&#xff01; 3D音频技术不仅能够提供更加真实、沉浸的虚拟世界体验&#xff0c;跨越时空的限制&#xff0c;探索未知的世界。同时&#xff0c;提供更加丰富、立体的情感表达和交流方式&#xff0c;让人类能够更加深入地理解彼此&…

游戏力:竞技游戏设计实战教程

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 游戏力&#xff1a;竞技游戏设计实战教程 引言…

pinia报错does not provide an export named ‘hasInjectionContext

你们好&#xff0c;我是金金金。 场景 我这里是uniappvue3编写的一个小程序项目&#xff0c;在集成pinia过程当中遇到此问题&#xff0c;报错请求的模块 未提供 导出名hasInjectionContext&#xff08;位于 pinia.mjs:6:10&#xff09; 以下我项目当中vue和pinia的具体依赖版本…

RAG全解析和LangChain代码实现

大家好&#xff0c;自从人们意识到可以用自有数据为大型语言模型&#xff08;LLM&#xff09;增效之后&#xff0c;就开始讨论如何最有效地弥合 LLM 的通用知识与专有数据之间的差距。围绕着微调还是检索增强生成&#xff08;RAG&#xff09;哪个更适合这一问题&#xff0c;人们…

【李沐论文精读】Transformer精读

论文&#xff1a;Attention is All You Need 参考&#xff1a;李沐视频【Transformer论文逐段精读】、Transformer论文逐段精读【论文精读】、李沐视频精读系列 一、摘要 主流的序列转换(sequence transduction)模型都是基于复杂的循环或卷积神经网络&#xff0c;这个模型包含一…

基于单片机的蓝牙无线密码锁设计

目 录 摘 要 Ⅰ Abstract Ⅱ 引 言 1 1 系统总体设计 3 1.1 系统设计要求 3 1.2 系统设计思路 3 2 系统硬件设计 5 2.1 设计原理 5 2.2 主控模块 5 2.3 芯片模块 8 2.4 矩阵键盘模块 9 2.5 液晶显示模块 10 2.6 继电器驱动模块 12 2.7 蜂鸣器模块 13 2.8 蓝牙模块 14 3 系统软…