Hier sind Informationen über die verwendeten Entwicklungswerkzeuge für mein Projekt WindowMonitor.
Für mich ist der Einsatz von Visula Studio Code mit Platform.io und Arduino dies das erste Projekt. Also bin ich wie viele andere hiermit ein Newbie. Und trotzdem kann der einte oder andere noch das einte oder andere mitnehmen bei seiner odysee mit seinem Projekt.
Visual Studio 2022 habe ich einige Projekte Realisiert, darum verwende ich VS-2022 und nicht VS-Code für die TestSuit. Alle diese Entwicklungswerkzeuge gibt es für die gängigen Systeme wie Unix, MAC und Windows. Ich selber arbeite ausschliesslich mit Windows.
PlatformIo ist eine Extension von Visual Studio Code, darum muss man vorab Visual Studio Code installieren, wenn nicht bereits geschehen. Download und installieren von Visual Studio Code ist im WEB so gut dokumentiert , dass es keinen Sinn macht es hier noch einmal aufzuzeigen. Wenn es während meiner Arbeit jedoch für Sinnvoll erscheint, Ergänzungen hinzuzufügen werde ich dies sporadisch tum.
Zum Aufsetzen der PlatformIo für das Verwenden des Seeed XIAO-NRF52840 habe ich im Internet diese Anleitung gefunden. Working with Seeed XIAO BLE Sense and PlatformIO IDE von Alwin Arrasyid. Das ist so gut und ausführlich, dass ich dazu nichts mehr beitragen kann.
Hier eine spartanische Zusammenfasung von (Alwin Arrasyid) Blog.
- Erstelle ein PlatformIO Project mit dem Arduino Nano33 BLE Board, damit sicher das Package ‚framework-arduino-mbed‘ vorhanden ist.
- Installiere Nordic Paket im PlatformIo Console: pio pkg install nordicnrf52
- Erstelle die Datei xiaoblesense.json (siehe Goodies)
- Kopiere die Datei nach C:\Users\you\.platformio\platforms\nordicnrf52\boards
- Download Seeed_XIAO_BLE_nRF52840_Sense261
- Kopiere den Inhalt des SubOrdner ‚2.6.1‘ in den Ordner C:\Users\you\.platformio\packages\framework-arduino-mbed
- Editiere platform.py in C:\Users\you\.platformio\platforms\nordicnrf52 gemäss nachfolgendem Bild (Zeile 56, xiaoblesense ergänzen und Zeile 59 einfügen )
jetzt müssen wir noch die Library ArduinoBLE installieren. Dies ist unter PlatformIo-Arduino-Library-ArduinoBLE gut beschrieben.
Beachte, dass im Visual Studio Code Git source code control automatisch dabei ist. Schaue , dass du von Anfang an es brauchst, Gerade am Anfang ist man froh wenn man auf ein funktionierende Version zurückgehen kann.
Jetzt los ! Erstelle das erste Projekt. viel Glück
Nachfolgend ist mein Platformio.ini file für den XIAO BLE
[env:xiaoblesense]
platform = nordicnrf52
board = xiaoblesense
framework = arduino
build_flags = -w ; no warnings
lib_deps =
ArduinoBLE
arduino-timer
Visual Studio 2022 verwende ich für meine Testsuit, mit dessen man die BSS Funktionalität testen kann. Sie ist mit WPF und C# implementiert. Man kann natürlich auch mit Visual Studio Code arbeiten, aber meine Kenntnisse mit WPF und C# sind so ausgeprägt, dass es mir am Einfachsten erschien damit zu arbeiten.
Für die Installation von Visual Studio 2022 Community geht man auf die entsprechende Microsoft Seite und lädt die entprechende Version herunter. Es macht keinen Sinn hier auf die Details einzugehen, da die Microsoft Seite genügend Information liefert. Du solltest zumindest folgende Workload auswählen:
- ASPNET und Webentwicklung
- .NET Multi-Platform App UI-Entwicklung
- .NET Desktopentwicklung
- Entwicklung der Windows-Anwendung
- Sprachpakete wenn nicht English default ist, empfehle ich Englisch zusätzlich auszuwählen. Damit ist es einfacher bei Problemen die Antworten der englischen Foren nachzuvollziehen (zB. Stackoverflow).
Installiere windows-universal-samples/bluetoothle falls Du die Testsuit oder etwas mit BluetoothLE unter Windows machen möchtest.
- Doxygen:
- Ich dokumentiere den Arduino Code mit doxygen Syntax, zumindest mehr oder weniger. Es ist für mich ein Cornflakes Werkzeug, aus 3 Zeilen Code gibt es 3 Seiten aufgeblasene Dokumentation. Wer liest das?
- Das gleiche gilt mit XMLDoc in Visual Studio, man kann entweder den Documenter einschalten unter Ptojekt-Property oder auch doxygen verwenden. In beiden Fällen hat man eine Fülle von aufgeblasene Dokumentation.
- Aber trotzdem, den Code mit einem Schema zu dokumentieren ist nichts einzuwenden.
- WordPress
- Diese Seite ist mit WordPress erstellt und auch betrieben.
- Für die Umsetzung vewendete ich Divi Builder
- Für die Übersetzung ist das WordPress Plugin WPML verwendet worden.
- draw.io
- Für die Diagramme verwendete ich draw.io und exportierte sie als png Datei für WordPress. Man könnte auch svg Dateien in WordPress integrieren.
Goodies
Download VS-BLE Testsuit Template (you have to move the zipfile in the VS template directory of Visual Studio 2022 for loading the project.)
Binary Sensor Service v1.0 ( das ist die Bluetooth Spez. V1.0 )
Assigned_Numbers (das ist das Dokument mit den UUID. Bitte gehe zu Bluetooth org Website für die aktuellsten Information.)
GUI Library Material Design für XAML ( Ich verwende Material design XAML damit es weniger Arbeit beim stylen benötigt)
nur die Ordner mit C# Quellcode (Erstellen eine neue Solution, installiere die benötigen Pakete und“ add existing item“ die Quellcodedateien. Mit etwas Glück hast du dann eine BSS_Tetsuit.
Challenges
- Feher beim Kompilieren: includes.txt no such file or directory -> beim Kopieren des Ordners nach framework-arduino-mbed hat nicht richtig geklappt. (File permission prüfen).
- Download geht nicht: Windows hat nach dem Reset des XIAO-NRF ein Device E: erstellt. -> entfernen.
- Download geht nicht: (meist nach einem Codeerror) rechts unten im platformIo alle Terminal Session weglöschen -> auf Mülleimer klicken.
Intro MVVM Toolkit
// 1.) After you have installed the toolkit you can refernce it with using
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
// 2.) Tha class of viewmodl needs to inherit ObservableObject
public partial class Viewmodels : ObservableObject { ...}
// 3.) Command simple
// in c#
[RelayCommand]
private async Task CliSetting() {...}
// binding in YAML remember in YAML the Methode has Command on the end!
<Button Command="{Binding Path=CliSettingCommand}" .... </Button>
// 4.) Command whit enable/disable
// in c#
private bool CanSettingCommand() => true; // with any logic, the result must be a boolean.
[RelayCommand(CanExecute = nameof(CanSettingCommand))]
private async Task CliSetting() {...}
// binding in YAML remember in YAML the Methode has Command on the end!
<Button Command="{Binding Path=CliSettingCommand}" .... </Button>
// 5.) Command with a parameter
// in c#
[RelayCommand]
private void SelectCliSensorType(string cmdPar) {...}
// binding in YAML
<RadioButton Command="{Binding SelectCliSensorTypeCommand }" CommandParameter="Ocl" .../>
// Fields
// in c#
[ObservableProperty] private Brush batteryLevel = GLOBI.BAT_NONE;
// binding in YAML ; whenever you change the batterylevel color the icon in the view change the color too.
<... Foreground="{Binding Path=BatteryLevel}"/>
// more you can find in the Microsoft learn web
Hier ended die Seite
