Meadow F7: BLE-Server in Betaphase, verbesserte Kompatibilität mit .net-Standards

Bryan Costanitch’s Entwicklerteam haben eine neue Betaversion der Betriebssoftware für die Meadow F7-Plattform ausgeliefert, die neben Bluetooth LE-Unterstützung auch komplette Kompatibilität mit den in .NET Standard 2.0 geforderten APIs offeriert.

von Tam HANNA

Worum geht es hier?

Die Meadow F7-Plattform erlaubt die Ausführung von .net-Code auf einem STM32F7, der im Zusammenspiel mit einem ESP32 Verbindung zu Drahtlosnetzwerken aufnehmen kann. Mit der neuesten Version der Betriebssoftware gibt es nun die Möglichkeit, auf die Bluetooth LE-Funktionen des kombinatorischen Prozessrechners zurückzugreifen. Dank der Kompatibilität mit .NET Standard 2.0 stehen weitere NuGet-Pakete zur Verfügung.

Bluetooth LE-Peripheralemulation

Bluetooth LE unterscheidet sich von seinem ausgewachsenen Kollegen insofern, als es eine Art KV-Speicher implementiert. Als Center bezeichnete Geräte nehmen Kontakt zu den Peripherals auf, die für die eigentliche Vorhaltung der Informationen verantwortlich sind.
Die Implementierung am Meadow F7 geht dabei – wie so oft – einen Sonderweg. Die Erzeugung eines Bluetooth LE-Peripherals erfolgt durch Anlegen einer Definition-Struktur, in der Services und danach die eigentlichen Charakteristiken anzulegen sind:

1
var definition = new Definition(
2
    "MY MEADOW",
3
    new Service(
4
        "ServiceA",
5
        253,
6
        new CharacteristicBool(
7
            "My Bool",
8
            uuid: "017e99d6-8a61-11eb-8dcd-0242ac1300aa",
9
            permissions: CharacteristicPermission.Read,
10
            properties: CharacteristicProperty.Read
11
            ),
12
        new CharacteristicInt32(
13
            "My Number",
14
            uuid: "017e99d6-8a61-11eb-8dcd-0242ac1300bb",
15
            permissions: CharacteristicPermission.Write | CharacteristicPermission.Read,
16
            properties: CharacteristicProperty.Write | CharacteristicProperty.Read
17
            ),
18
        new CharacteristicString(
19
            "My Text",
20
            uuid: "017e99d6-8a61-11eb-8dcd-0242ac1300cc",
21
            maxLength: 20,
22
            permissions: CharacteristicPermission.Write | CharacteristicPermission.Read,
23
            properties: CharacteristicProperty.Write | CharacteristicProperty.Read
24
            )
25
        )
26
    );

Für die Abbildung der eigentlichen Datenspeicher enthält die Meadow-API eine Gruppe von Caracteristic-APIs, die die Informationen gleich typisieren. Zur Überwachung von eingehenden Schreiboperationen lassen sich natürlich auch Listener anmelden:

1
foreach (var characteristic in bleTreeDefinition.Services[0].Characteristics) {
2
    characteristic.ValueSet += (c, d) => {
3
        Console.WriteLine($"HEY, I JUST GOT THIS BLE DATA for Characteristic '{c.Name}' of type {d.GetType().Name}: {d}");
4
    };
5
}

Erweiterte Kompatibilität mit .net Standard

Hauptverwendungszweck des Meadow F7 dürfte – neben Experimenten – die Weiternutzung von schon vorhandenem geistigen Eigentum sein, das in .net-Sprachen vorliegt. Unterstützung des Standards “.NET Standard 2.1” ist in vielen Fällen Voraussetzung zur Code-Wiederverwertung. Bisher war das Fehlen der Assembly NetStandard.dll für Probleme verantwortlich; die neue Version bringt die DLL mit.
Quasi nebenbei bekommen Sie dadurch auch Unterstützung für F# in Version 5 – wer die funktionale Programmiersprache unternehmensintern verwendet, kann dies nun auch mit dem Meadow F7 tun.

Dimensions-Datentypen

Spätestens seit dem Verlust eines Raumschiffs gilt Typsicherheit im Bezug auf Einheiten als wichtig. In der neuesten Version bekommen Entwickler eine Gruppe von leichtgewichtigen Klassen, die mit Dimensionen versehene Messwerte darstellen:

1
     AbsoluteHumidity 
2
     Acceleration 
3
     Acceleration3D 
4
     Angle 
5
     AngularAcceleration 
6
     AngularAcceleration3D 
7
     AngularVelocity 
8
     Azimuth 
9
     Concentration 
10
     Current 
11
     Density 
12
     Energy 
13
     Frequency 
14
     Illuminance 
15
     Length 
16
     MagneticField 
17
     MagneticField3D 
18
     Mass 
19
     Power 
20
     Pressure 
21
     RelativeHumidity 
22
     Speed 
23
     Temperature 
24
     Torque 
25
     Voltage 
26
     Volume

Mehr lesen

Eine Komplettbesprechung der Neuerungen würde den Rahmen dieses Formats sprengen. Die unter http://developer.wildernesslabs.co/Meadow/Release_Notes/Beta5/ bereitstehende URL bietet eine gute Übersicht der Änderungen am Framework.

Sonderhinweis: Probleme beim Softwareupdate

Die Aktualisierung der Haupt-Firmware des F7 nach den unter http://developer.wildernesslabs.co/Meadow/Getting_Started/Deploying_Meadow/ beschriebenen Anweisungen schlägt mitunter mit einem nach folgendem Schema aufgebauten Fehler auf:

1
C:Program Files (x86)Microsoft Visual Studio2019Preview>meadow --FlashOS
2
. . .
3
Unhandled exception. System.ComponentModel.Win32Exception (2): Das System kann die angegebene Datei nicht finden.
4
. . .

Die Lösung des Problems ist eine Aktualisierung der als dfuutil bezeichneten Kommunikationssoftware. Dies lässt sich ebenfalls über das Kommandozeilenwerkzeug erledigen, das dazu aber Administratorrechte benötigt:

1
C:WindowsSystem32>meadow --InstallDfuUtil
2
Installing dfu-util...
3
dfu-util 0.10 installed

Nach der Abarbeitung dieses Schritts läuft die Installation normalerweise wie erwartet durch.

(Teaserbild: Instagram / tam.hanna)

Zuerst erschienen bei Mikrocontroller.net News

Quelle: Read More