Posts mit dem Label Windows Phone werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Windows Phone werden angezeigt. Alle Posts anzeigen

Samstag, 14. Januar 2023

Legacy Dinge wie Windows Phone Entwicklung

Eins ist klar, dass Thema Windows Phone Entwicklung war, damals gestorben, als Microsoft gesagt hatte, dass Windows Phone abgekündigt hatte. Ärgerlich für alle, die ihr Wissen in dem Bereich aufgebaut haben.

Diesen Blog-Post musste ich zweimal schreiben. Grund ist, dass ich beim ersten Aufschreiben auf einer Falschen Version ausging und vergessen hatte, dass die letzte Version von Windows Phone, Windows 10 war. Seltsamerweise (oder auch nicht), wenn man im Internet sucht, findet man immer oft Hinweise zu Tools wie 'Visual Studio 2012 for Windows Phone'. Leider funktioniert diese Version für die Entwicklung gar nicht mehr, weil die Anmeldung zum Freischalten des Windows Phone für die Entwicklung nicht mehr funktioniert.


Aber warum sollte man sich damit noch beschäftigen? Für mich geht's um Machbarkeit und natürlich auch um das Basteln.

 

Benötigt

 

Ziel der Übung

Was muss gemacht werden, um eine Windows Phone App auf dem Smartphone bereitgestellt werden kann.

 

Windows Phone Betriebssystem

Für dieses Beispiel verwende ich ein Lumia 930, dass ich anfangs mit Windows 8.1 installiert war und mit späteren Updates auf Windows 10 bis Version 1607 (Anniversary Update, 14393, MS Windows 10 Mobile)

 

Windows Phone einrichten

Anfangs zu Windows Phone 7 bis 8, musste für das Freischalten des Smartphones in den Entwicklermodus, das Tool 'Windows Phone Developer Registration' verwendet werden. Für den Vorgang muss eine Anmeldung an Microsoft bestehen, um die Registrierung abzuschließen. Dies funktioniert jedoch nicht mehr. Nach der Anmeldung erscheint ein Fehler und nichts kommt.

Ich weiß nicht mit welchem Update die Änderung kam, aber das Umschalten in den Entwicklungsmodus erfolgt nun auf dem Smartphone selbst. In den Einstellungen unter 'Für Entwickler' oder einfach in den Einstellung nach 'entwickler' suchen, kann der Entwicklermodus gesetzt werden.


Neues UWP Projekt

Zuerst hatte ich versucht mit Visual Studio 2019 die 'Hello World!' auf das Smartphone zu laden. Schließlich kann die Anniversary Update Version 1607 eingestellt werden. Jedoch wird von VS 2019 die Verbindung zum Windows Phone nicht mehr unterstützt.

 

Für das Erstellen eines Neuen Projektes kann eine leere UWP Vorlage verwendet werden. Wichtig bei der Vorlage ist, die entsprechende Version des Betriebssystems vom Ziel Windows Phone einzustellen.


Nach dem anlegen kann in der MainPage.xaml ein 'TextBlock'-Steuerelement hinzugefügt werden, da die Vorlage nur eine leere Seite bietet. Ein traditionelles 'Hello World!' reicht für den Anfang. Nicht vergessen, die Farbe ebenfalls einzustellen.


Kommen wir zuletzt noch zu den Ziel Einstellung für die Bereitstellung. Ob Debug oder Release, ist hier zunächst egal. Nur Prozessor und Ziel System muss eingestellt werden.


Device ist euer Smartphone..


 

…und ARM ist der verwendete Prozessor (in meinem Fall).


Bereitstellung

Nun kann das Smartphone mit dem PC oder Notebook verbunden werden.

Bevor auf den Button 'Device' geklickt wird, muss der Bildschirm entsperrt sein. Andernfalls erscheint eine Fehlermeldung.

Ein paar Sekunden kann das Hochladen dauern, bis sich die APP auf dem Windows Phone öffnet. Fertig!


Fazit

Geht doch. Und was mache ich mit dem Wissen? Kleine Projekte lassen sich immer damit realisieren. Ich kann mir vorstellen, dass man z.B. alte Windows Tablets oder Windows Phones für Home-Automation verwenden kann.

 

Sonntag, 17. Februar 2019

Win 10 IoT und MonoGame auf dem Raspberry Pi 3 Testen


Ohne DirectX Hardware Beschleuniger ist die Performance eher auf dem Level, hmm.. Ich drücke das mal so aus: "Es geht". Dennoch ist interessant zu testen, was man eigentlich so auf dem Raspberry Pi erreichen kann. Für diese Tests verwende ich den Raspberry Pi 3 Model B+.

Testanwendung
Vom meinem letzten Blogpost Eintrag "3d Karte bewegen (MonoGame)" habe ich einen Branch angelegt, in dem ich die Inhalte für einen kleinen Benchmark aufbereite. Zum Beispiel wird die Eingabe mit dem GamePad oder Tastatur abgestellt. Hinzu kommen dann noch weitere 3D Objekte hinzu, die im Verlauf geändert werden. In der UI selbst wird dann die FPS und Durchschnittsergebnis der verschiedenen drei Durchläufen wiedergegeben.

Testumfeld, Quick and dirty
Der Test selbst ist nur sehr einfach gestrickt und sicherlich kann dort auch Optimiert werden. Aber das sollte diesmal nicht das Thema sein.

Durchläufe:
- 9 Objekte
- 100 Objekte
- 400 Objekte

Die Objekte sind auf 0.25 skaliert. Nur bei dem ersten können wirklich alle Kacheln gesehen werden. Bei den anderen Mengen, übertreten diese den Bildschirmrand.

Auf dem PC werden immer die 60 FPS erreicht. Der eingestellte Vsync beschränkt die FPS, was jedoch nicht weiter schlimm ist. Für den Raspberry Pi sollte die Beschränkung  kein Problem darstellen. Kommen wir zu den Testergebnissen

Ergebnis (Debug)

Die Anzahl der Bilder waren nicht sonderlich stabil und schwanke sogar relativ stark. Dennoch hat man erstmal so ein paar  Ergebnisse, die man versucht zu verbessern. Da wäre das Auslassen von 3d Objekten, die nicht zu sehen sind.

Was ist mit Core Application
Bisher noch nicht genutzt, aber ich dachte, es paßt gerade hier beim Testen. Also nahm ich den ganzen Code von der aktuellen Test Branch und erstellte ein Projekt mit Core Application. Klingt zunächst super.


Ergebnis (Debug)







Ergebnis (Release)







Nun, die Ergebnisse verhalten sich fast identisch wie der Normalen UWP Projekt. Teilweise hatte ich den Eindruck, daß die Ergebnisse schlechter waren. Das lag mit unter das die Ergebnisse bei mehreren Durchläufen sehr stark schwankten. Das änderte sich auch nicht, als ich den Test für eine Stunde laufen ließ.


Was ist mit 2D?
Vielleicht sollte man nicht zuviel auf 3D Inhalte setzen und lieber auf 2D setzen. Also habe ich von meinem vorigen Post und dessen Beispiel ebenfalls ein Branch erstellt und ähnliche Test Umgebung geschaffen in 2D und zunächst als UWP.


Ergebnis (Debug)







Zugegeben, das hatte ich nicht erwartet. Vielleicht liegt das an der zu rendernden Anzahl von Pixeln, die letztendlich in den Backbuffer landen. Offensichtlich  macht die Ausführung in 2D oder 3D keinen Unterschied. Die Schwankungen verhielten sich nicht anders.

Fazit
Das Testumfeld ist nicht sonderlich Realistisch, wenn man vom Optimieren absah. Die Frage ob man MonoGame verwenden kann auf dem Raspberry Pi, dann ist die Antwort ja. Wir stellen fest, die Antwort passt nicht zu den Ergebnissen. Warum ja? Mit Kompromissen, kann man durch aus MonoGame auf dem Raspberry Pi verwenden, wenn man Kompromisse eingeht. Mein Kompromiß ist Interesse.

Kompromisse die in erster Linie bestehen:
- Geringe FPS
- Geringe Auflösung um den FPS hoch zuhalten
- Ich will sehen, wie mein MonoGame Spiel auf dem Raspberry Pi (nicht) performt

Damit will ich das Thema Raspberry und MonoGame nicht schlecht schreiben. Denn nicht alle Spiele setzen auf hohe FPS. Das könnte ein 'Click and Point Adventure' sein.


Im Beispiel Video mit dem Raspberry Pi TFT, kann leider die Native Auflösung von 480x320 vom TFT nicht eingestellt werden.

Gehäuseentwurf für Signalleuchten (Part 2)

Heute morgen sah ich mir mein Druckergebnis an und dachte: Nein, das sieht nicht nach einem Kristall aus. Also im Internet gesucht und ein T...