Der kombinatorische Prozessrechner Meadow F7 bietet Entwicklern die Möglichkeit, MSR-Aufgaben unter Verwendung von dotnet-Sprachen zu bewerkstelligen. Mit der Version b4.6 erfährt das System eine Nutzwertsteigerung im Bereich der Netzwerkfähigkeiten .
von Tam Hanna
Vom logischen Aufbau her besinnt sich Wilderness Labs auf den ursprünglichen Einsatzzweck des ESP32 bzw seines Vorgängers zurück - ein diesbezügliches Modul dient einem unter UCOS laufenden STM32F777 als Netzwerkkarte, die der am STM32F777 lebenden .net-Payload die Kommunikation mit der Außenwelt ermöglicht.
Die Kommunikation zwischen den beiden Modulen des Prozessrechners erwies sich dabei schon während der Kickstarterkampagne als problematisch - die .net-API für die Hardwarekommunikation ist seit längerer Zeit fertig, während im Netzwerkbereich immer wieder Änderungen erfolgen.
Neue APIs…
Die mit Abstand größte Neuerung ist der HTTPListener – eine Klasse, die das Hosting von REST-APIs direkt am Meadow F7 ermöglicht. Diese auf den ersten Blick sinnfrei erscheinende Einrichtung ist in der Praxis sehr wertvoll; insbesondere im Mobilbereich trifft man leider nur allzu oft Personen, die mit Socket und Co keine Erfahrung haben. Neuerung Nummero zwei betrifft eine API zur Antennenauswahl und zur Ermittlung der Batteriespannung. Die von den Netzwerkfunktionen zurückgelieferten Fehlermeldungen fallen fortan ebenfalls klarer aus. Zu guter Letzt erfährt der GUI-Stack mit TextDisplayMenu eine Erweiterung, die die Realisierung von Menüs vereinfacht:
1 |
var menuItems = new MenuItem[] |
2 |
{
|
3 |
new MenuItem("FrogIt", command: "startFrogIt"), |
4 |
. . . |
5 |
new MenuItem("Tetraminos", command: "startTetraminos"), |
6 |
new MenuItem("Options", |
7 |
subItems: new MenuItem[]{new MenuItem("Sound {value}", id: "sound", type: "OnOff", value: true), |
8 |
new MenuItem("Volume {value}", id: "volume", type: "Numerical", value: 5), |
9 |
new MenuItem("Clear scores", command: "clearScores"), |
10 |
new MenuItem($"Version {version}") }), |
11 |
};
|
...und ein hauseigener Server
Der Hersteller Wilderness Labs bietet mit Maple (siehe http://developer.wildernesslabs.co/Meadow/Meadow.Foundation/Libraries_and_Frameworks/Maple.Server/) eine Neuimplementierung eines Servers für REST-APIs an. Die API basiert dabei auf RequestHandler-Objekten, in denen nach folgendem Schema die in den einzelnen Fällen abzuarbeitende Payload unterkommt:
1 |
public class HelloRequestHandler : RequestHandlerBase |
2 |
{
|
3 |
[HttpGet] |
4 |
public void Hello() |
5 |
{
|
6 |
this.Context.Response.ContentType = ContentTypes.Application_Text; |
7 |
this.Context.Response.StatusCode = 200; |
8 |
this.Send("hello world").Wait(); |
9 |
}
|
Zur Inbetriebnahme reicht es dann aus, nach folgendem Schema eine MapleServer-Instanz zu erzeugen:
1 |
// create our maple web server
|
2 |
server = new MapleServer( |
3 |
Device.WiFiAdapter.IpAddress, |
4 |
processMode: RequestProcessMode.Parallel |
5 |
);
|
6 |
|
7 |
Console.WriteLine("Finished initialization."); |
Obwohl der in dieser Newsmeldung abgedruckte Code stark gekürzt ist, dürfte eine praktische Implementierung einer REST-API unter Nutzung von MAPLE nur wenige Dutzend Codezeilen in Anspruch nehmen – lohnend...
Wie entwickeln?
Für die Arbeit mit der Meadow-Plattform empfiehlt sich der Erwerb einer als F7 Micro Development Kit bezeichneten Platine - sie ist auch in einem als Hack Kit bezeichneten und unter https://www.youtube.com/watch?v=8uU0TFuvgis dokumentierten Entwicklerkit erhältlich, das diverse für Einsteiger hilfreiche Hardware mitbringt. Da sich das Design der Basisplatine am Adafruit Feather-Format orientiert, stehen diverse Erweiterungen zur Verfügung – die einst von C Walker mit dem Netduino Go eingeführte Erweiterungsschnittstelle wird nicht weitergeführt. Auf Workstationseite benötigen Sie vor Allem eine Version von Visual Studio 2019 (siehe auch http://beta-developer.wildernesslabs.co/Meadow/Getting_Started/Hello_World/), die durch ein Plugin Unterstützung für das Prozessrechnersystem erhält.
Fazit
Abseits von Bankomat und Co ist Microsofts Performance im Embeddedbereich nicht unbedingt graziös - der Gadgeteer erwies sich (trotz des genialen Adaptersystems) als Ladenhüter, die Skandale um die Agent Smartwatch töteten den Netduino. Mit dem Meadow F7 wagt man nun einen - nach Meinung des Autors - durchaus empfehlenswerten weiteren Anlauf. Wer in seinem Unternehmen schon jetzt größere Mengen an .net-Code hat, kann durch Einführung des F7 Coupling (siehe Erik Sink - Event oriented Programming) und Code-Duplikation reduzieren…
(Bilder: Fauchus Pfauchus kft / Ing. Tam HANNA / BSc)