自定义mavlink 生成wireshark wlua插件错误(已解决)
进入正题
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_param
if not enum_obj.bitmask:
^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'bitmask'
原因:自定义的common.xml
里面 LED_MASK
枚举被改动了,相当于没有进行声明
解决办法:LED_MASK
替换成 EXTERNAL_LED_MASK
(这里需要根据自己情况修改,若没有声明就新增)