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