進入正題
python3 -m pymavlink.tools.mavgen --lang=WLua --wire-protocol=2.0 --output=output/develop message_definitions/v1.0/development.xml
編譯WLUA的時候遇到一些問題
1.ERROR:SCHEMASV:SCHEMAV_CVC_ENUMERATION_VALID
3765:0:ERROR:SCHEMASV:SCHEMAV_CVC_ENUMERATION_VALID: Element 'param', attribute 'units': [facet 'enumeration']
The value 'bool' is not an element of the set {'s', 'ds', 'cs', 'ms', 'us', 'ns', 'Hz', 'MHz', 'km', 'dam', 'm', 'm/s', 'm/s/s', 'm/s*5', 'dm', 'dm/s', 'cm', 'cm^2', 'cm/s', 'mm', 'mm/s', 'mm/h', 'K', 'degC', 'cdegC', 'rad', 'rad/s', 'mrad/s', 'deg', 'deg/2', 'deg/s', 'cdeg', 'cdeg/s', 'degE5', 'degE7', 'rpm', 'V', 'cV', 'mV', 'A', 'cA', 'mA', 'mAh', 'Ah', 'mT', 'gauss', 'mgauss', 'hJ', 'W', 'mG', 'g', 'kg', 'Pa', 'hPa', 'kPa', 'mbar', '%', 'd%', 'c%', 'dB', 'dBm', 'KiB', 'KiB/s', 'MiB', 'MiB/s', 'bytes', 'bytes/s', 'bits/s', 'pix', 'dpix', 'g/min', 'cm^3/min', 'cm^3', 'l'}.
原因:units缺乏自定義的元素
解決方法:修改 mavlink\pymavlink\generator\mavschema.xsd
追加自定義的元素在 <xs:simpleType name="SI_Unit">
下面
#比如添加bool元素
<xs:simpleType name="SI_Unit"><xs:restriction base="xs:string"><!-- switch --><xs:enumeration value="bool"/> <!-- on/off --> #這行是新增的</xs:restriction>
</xs:simpleType>
2.AttributeError: ‘NoneType’ object has no attribute ‘bitmask’
mavlink\pymavlink\generator\mavgen_wlua.py", line 162, in generate_field_or_paramif not enum_obj.bitmask:^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'bitmask'
原因:自定義的common.xml
里面 LED_MASK
枚舉被改動了,相當于沒有進行聲明
解決辦法:LED_MASK
替換成 EXTERNAL_LED_MASK
(這里需要根據自己情況修改,若沒有聲明就新增)