Dart BLE 描述以便于编码?

问题描述

一个架构问题: 我有一个带有许多变量的 BLE 设备......并且可以从 XML 中引入这些变量,例如

<!--Automation IO-->
  <service advertise="false" id="automation_io" name="Automation IO" requirement="mandatory" sourceId="BLE" type="primary" uuid="1815">
    <informativeText>Abstract:  The Automation IO service is used to expose the analog inputs/outputs and digital input/outputs of a generic IO module (IOM).  </informativeText>
    
    <!--Output-->
    <characteristic id="Output" name="Output" sourceId="xxx" uuid="1230">
      <informativeText>Summary:  The Digital characteristic is used to expose and change the state of an IO Module's digital signals.  </informativeText>
      <value length="1" type="user" variable_length="false">0</value>
      <properties indicate="false" indicate_requirement="optional" notify="true" notify_requirement="optional" read="true" read_requirement="optional"/>
    </characteristic>
        
    <!--Electronicstemp-->
    <characteristic id="Electronicstemp" name="Electronicstemp" sourceId="xxx" uuid="1235">
      <informativeText>Summary:  The Digital characteristic is used to expose and change the state of an IO Module's digital signals.  </informativeText>
      <value length="2" type="user" variable_length="false">23</value>
      <properties notify="true" notify_requirement="mandatory" read="true" read_requirement="mandatory"/>
    </characteristic>
    
    <!--MaxElectronicstemp-->
    <characteristic id="MaxElectronicstemp" name="MaxElectronicstemp" sourceId="xxx" uuid="123E">
      <informativeText>Summary:  The Digital characteristic is used to expose and change the state of an IO Module's digital signals.  </informativeText>
      <value length="2" type="user" variable_length="false">23</value>
      <properties notify="true" notify_requirement="mandatory" read="true" read_requirement="mandatory"/>
    </characteristic>
    
    <!--SelfTest-->
    <characteristic id="SelfTest" name="SelfTest" sourceId="xxx" uuid="1236">
      <informativeText>Summary:  The Digital characteristic is used to expose and change the state of an IO Module's digital signals.  </informativeText>
      <value length="1" type="user" variable_length="false">00</value>
      <properties indicate="false" indicate_requirement="optional" notify="true" notify_requirement="optional" read="true" read_requirement="optional" write="true" write_no_response="true" write_no_response_requirement="optional" write_requirement="optional"/>
    </characteristic>
 ...

问题是如何将它变成最适合 FlutterBlue 等的东西。

现在我有

class Intercom{
  static const PatchTo = "665c1cbc-2c88-4ae1-9ccf-9dbc8a9e5440";
  static const PhoneBook = "78805e56-f8b7-4f30-a056-2ece9f4f70a9";
  static const AllCall = "2ac8";
  static const StatusWord = "1239";
...
}

{
    BluetoothCharacteristic patchto =
        bleFindChar(services,Intercom.PatchTo)!;
    await patchto.write([0xFF,0xFF]);
}

所以问题: 最好保持这种方式 - 这样我就可以向 Class Intercom 添加越来越多的内容(如数据格式、tostring 等)...

还是分开?

也许 Intercom 应该从 FlutterBlue 派生出来并吸收所有东西,这样我就可以轻松地说 Intercom.PatchTo(0xFFFF)

有没有办法将 XML 文件加载到 Flutter 项目中并将其自身呈现为数据结构,或者我是否需要编写一个小的 Python 脚本来获取 XML 并从中制作一个 .dart 文件

解决方法

xml 包允许您在 Dart(和 Flutter)中解析、遍历、查询、转换和构建 XML 文档。包描述中的教程解释了如何加载 XML 文件和提取数据。欢迎在 StackOverflow 或 GitHub 上发布更具体的问题。