News Meadow F7 - Firmwareupdate bringt mehr Netzwerk-APIs


von Tam H. (Firma: Tamoggemon Holding k.s.) (tamhanna)


Angehängte Dateien:

Lesenswert?

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)


: Verschoben durch Admin
von Andreas (Gast)


Lesenswert?

Tam H. schrieb:
> Die mit Abstand größte Neuerung ist der HTTPListener

und

> Der Hersteller Wilderness Labs bietet mit Maple [...] eine Neuimplementierung 
eines Servers für REST-APIs an

Ist das nicht das selbe, bzw. inwiefern unterscheiden sich diese 
angebotenen Lösungen?

von Tam H. (Firma: Tamoggemon Holding k.s.) (tamhanna)


Lesenswert?

Andreas schrieb:
> Tam H. schrieb:
>> Die mit Abstand größte Neuerung ist der HTTPListener
>
> und
>
>> Der Hersteller Wilderness Labs bietet mit Maple [...] eine Neuimplementierung
> eines Servers für REST-APIs an
>
> Ist das nicht das selbe, bzw. inwiefern unterscheiden sich diese
> angebotenen Lösungen?

Hallo,
sorry für die langsame Antwort, bin krank.

Der HTTPListener ist die Klasse im Hintergrund. Du kannst sie auch ohne 
MAPLE verwenden, MAPLE ist mehr Middleware.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.