生成 MAVLink 库文件

通过使用代码生成器XML格式定义的消息中生成不同编程语言使用的MAVLink库文件。

This topic shows how to use the two code generators provided with the MAVLink project: mavgenerate (GUI) and mavgen (command line).

These generators can build MAVLink 2 libraries for C, C++11, Python, Typescript, Java, and WLua (supporting both MAVLink 2 and 1), and MAVLink 1 (only) libraries for: C#, JavaScript, ObjC, Swift.

Generators for other programming languages are supported and documented in independent progects. For more information see Supported Languages.

先决条件

  1. 你必须已经安装了MAVLink(包括工具和XML消息定义)。
  2. 如果你要生成自定义消息,请将文件复制到目录message_definitions/v1.0/文件夹中。 >注意*mavgen可以处理包含XML文件相对路径的方言(例如,最常见的common.xml),但是其他生成器可能不行。 我们建议将自定义文件放在与mavlink/mavlink*存储库相同的文件夹中。

Mavgenerate (GUI)

mavgenerate.py是用Python语言编写的MAVLink的图形用户界面代码生成器。

Mavgenerate provides a GUI front end to the mavgen command line code generator, and supports the same options.

可以使用Pythond的-m参数从任何地方打开这个图形用户界面。

python3 -m mavgenerate

mavgenerate 界面

代码生成器使用步骤:

  1. 选择目标XML文件(通常位于mavlink/message_definitions/1.0文件夹)。

    如果使用自定义文件,首先需要将其复制到上面的目录中(如果自定义文件依赖于common.xml,则必须确保两者位于同一目录中)。

  2. 选择输出路径(例如mavlink/include)。

  3. 选择目标生成编程语言。

  4. 选择目标MAVLink协议版本(最好是2.0)>注意如果目标编程语言不支持所选协议,则会生成失败。
  5. 可以选择是否检查验证和/或验证单元(如果选择是,则验证XML规范)。
  6. 点击生成按钮生成资源文件。

Mavgen(命令行)

mavgen.py是一个命令行工具,用于为不同编程语言生成MAVLink库。 将mavlink路径添加到PYTHONPATH后,可以通过命令行来运行它。

This is the backend used by mavgenerate. The documentation below explains all the options for both tools.

举例来说,为your_custom_dialect.xml自定义消息生成MAVLink 2的C语言库。

python3 -m pymavlink.tools.mavgen --lang=C --wire-protocol=2.0 --output=generated/include/mavlink/v2.0 message_definitions/v1.0/your_custom_dialect.xml

The syntax for for generating Python modules is the same, except that the --output specifies a filename rather than a directory.

mavgen可以通过使用-h参数来查看所有语法和选项。(复制在下面):

usage: mavgen.py [-h] [-o OUTPUT]
                 [--lang {C,CS,JavaScript,TypeScript,Python,WLua,ObjC,Swift,Java,C++11}]
                 [--wire-protocol {0.9,1.0,2.0}] [--no-validate]
                 [--error-limit ERROR_LIMIT] [--strict-units]
                 XML [XML ...]

This tool generate implementations from MAVLink message definitions

positional arguments:
  XML                   MAVLink definitions

optional arguments:
  -h, --help            show this help message and exit
  -o OUTPUT, --output OUTPUT
                        output directory.
  --lang {C,CS,JavaScript,TypeScript,Python,WLua,ObjC,Swift,Java,C++11}
                        language of generated code [default: Python]
  --wire-protocol {0.9,1.0,2.0}
                        MAVLink protocol version. [默认:1.0]
--no-validate        不进行XML规范验证。 如果已经确定XML文件是正确的,这样做有助于加快代码生成速度。
  --error-limit ERROR_LIMIT
    可以显示的最大验证错误数
--strict-units        执行单元属性的验证。

results matching ""

    No results matching ""