<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>der Ende des Internets &#187; C#</title>
	<atom:link href="http://endedesinter.net/tag/c/feed/" rel="self" type="application/rss+xml" />
	<link>http://endedesinter.net</link>
	<description></description>
	<lastBuildDate>Sun, 11 Jul 2010 11:05:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Hütten-Review: Ameisen-Invasion in Österreich</title>
		<link>http://endedesinter.net/2009/hutten-review-ameisen-invasion-in-osterreich-216/</link>
		<comments>http://endedesinter.net/2009/hutten-review-ameisen-invasion-in-osterreich-216/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 11:35:23 +0000</pubDate>
		<dc:creator>Maddin</dc:creator>
				<category><![CDATA[Alltag]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[AntMe!]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Duale Hochschule]]></category>
		<category><![CDATA[Team Foundation Server]]></category>

		<guid isPermaLink="false">http://endedesinter.net/?p=216</guid>
		<description><![CDATA[Hallo werte Leserschaft,
in den letzten Tagen habt ihr leider vergeblich auf Neuigkeiten vom Ende des Internets gewartet. Ich war 4 Tage lang vom Internet abgeschnitten und das diesmal sogar ganz freiwillig. Warum und wie ich das überlebt habe? Nun ganz einfach. Seit Montag (6.4.) läuft mein letztes Semester an der DHBW Ravensburg, Campus Friedrichshafen. Und [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_218" class="wp-caption alignright" style="width: 160px"><img class="size-thumbnail wp-image-218" title="AntMe-Logo (Quelle: microsoft.com)" src="http://endedesinter.net/wp-content/uploads/2009/04/teaser_antme-150x134.jpg" alt="AntMe-Logo (Quelle: microsoft.com)" width="150" height="134" /><p class="wp-caption-text">AntMe-Logo <br /> (Quelle: microsoft.com)</p></div>
<p>Hallo werte Leserschaft,</p>
<p>in den letzten Tagen habt ihr leider vergeblich auf Neuigkeiten vom Ende des Internets gewartet. Ich war 4 Tage lang vom Internet abgeschnitten und das diesmal sogar ganz freiwillig. Warum und wie ich das überlebt habe? Nun ganz einfach. Seit Montag (6.4.) läuft mein letztes Semester an der <a title="Webauftritt der DHBW RV Campus FN" href="http://www.technik.dhbw-ravensburg.de" target="_blank">DHBW Ravensburg, Campus Friedrichshafen</a>. Und diesmal begann das Semester auf besondere Weise: mit einer Lehrveranstaltung im österreichischen Mellau. Diese stand im Zeichen der Ameise.</p>
<p><span id="more-216"></span>Zunächst einmal jedoch zum Veranstaltungsort. Die DHBW Ravensburg, Campus Friedrichhafen nutzt eine Hütte in Mellau als Seminarhaus und Veranstaltungsort für mehrtägige Lehrveranstaltungen. Dort hat man durch die Abgeschiedenheit die Möglichkeit unbeeinflusst von äußeren Einflüssen zu arbeiten und das Teamgefühl zu stärken. Das waren optimale Voraussetzungen für unser Vorhaben.</p>
<p><iframe width="525" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=Mellau,+%C3%96sterreich&amp;sll=47.480088,9.632263&amp;sspn=0.422297,0.966797&amp;ie=UTF8&amp;t=p&amp;ll=47.487513,9.698181&amp;spn=0.324801,0.720978&amp;z=10&amp;output=embed"></iframe><br /><small><a href="http://maps.google.com/maps?f=q&amp;source=embed&amp;hl=de&amp;geocode=&amp;q=Mellau,+%C3%96sterreich&amp;sll=47.480088,9.632263&amp;sspn=0.422297,0.966797&amp;ie=UTF8&amp;t=p&amp;ll=47.487513,9.698181&amp;spn=0.324801,0.720978&amp;z=10" style="color:#0000FF;text-align:left">Größere Kartenansicht</a></small></p>
<p>Nun, was haben wir gemacht? Der Anlass des Workshops war das <a title="MSDN-Blogs: Das TFS-Experiment by Tom Wendel" href="http://blogs.msdn.com/twendel/archive/2009/03/28/das-tfs-experiment.aspx" target="_blank">TFS-Experiment</a> in Kooperation mit <a title="AntMe!" href="http://www.antme.net" target="_blank">AntMe!</a>. Ziel war es mit unserem Team von 28 Studenten nach den Methoden der agilen Software-Entwicklung mit <a title="Begriffserklärung Scrum" href="http://de.wikipedia.org/wiki/Scrum" target="_blank">Scrum</a> die Software eines Server-Prototypen zu entwickeln, auf dem die AntMe!-Spieler künftig ihre Völker gegeneinander antreten lassen können. Entwickelt wurde in C# mit Visual Studio 2008 Team Suite, die Source-Code-Verwaltung und Aufgabenmanagement etc. wurden über den  Team Foundation Server (TFS) gemacht.</p>
<p>Nach der Anreise am Montag Nachmittag wurden einige organisatorische Angelegenheiten erledigt. Darunter auch: Aufteilung der Rollen von Entwicklern, Testern, Projekt-Managern (PM) und Group-Project-Managern (GPM). Wie es das Schicksal und die GPM wollten, wurde ich PM für die Geschäftslogik-Komponente und durfte gleich aktiv über die Zusammensetzung meines Entwickler-/Testerteams entscheiden. Nachdem das Briefing der GPM und PM durch die Vertreter von AntMe! dann gegen 23 Uhr am Montag abgeschlossen und alle Studenten auf die verschiedenen Stellen verteilt waren, konnte man in den gemütlichen Teil des Abends übergehen, um gegen halb 2 im Bett zu landen.</p>
<p>Die Nacht war kurz, denn am nächsten Morgen stand die Einführung in den TFS und die Bestimmung der Work-Items an. Um möglichst früh mit den Entwicklern und Testern starten zu können, fand diese Einführung morgens um <strong>6:30 Uhr</strong> statt! Bis zum Frühstück um 9 war soweit alles geklärt und alle dachten noch, dass es nach Plan laufen würde. Doch dann machte die Technik Probleme. Der WLAN-Router verkraftete die Anzahl an Client-Geräten nicht, sodass es immer wieder zu Verbindungszusammenbrüchen kam. Das brachte den Zeitplan etwas ins wanken. Zusätzlich dazu kamen Missverständnisse und Unklarheiten über die Software-Architektur. Die Folge: Erst am Nachmittag konnten die Tester und Entwickler effektiv mit der Arbeit beginnen. Bis dahin war auch ein zweiter WLAN-Router beschafft, sodass man nun auch endlich eine stabile Verbindung hatte. Dank des unermüdlichen Arbeitseinsatzes der Studenten, konnten dann aber zum abendlichen Review gegen 22 Uhr doch erste Erfolge vorgezeigt werden. Auch wenn man nicht an das eigentliche Ziel des Tages herangekommen war, ließen wir den Tag gemütlich mit Musik, Spiel und Spaß ausklingen.</p>
<p>Am Mittwoch starteten die GPM und PM, sowie Tom, Patric und Dominik von AntMe &#8220;erst&#8221; um 7 Uhr. Es wurde darüber gesprochen, was man nach dieser starken Verzögerung am Vortag noch vom eigentlichen Vorhaben schaffen könne und erneut WorkItems festgelegt. Eine weitere Entscheidung dieses Morgens: Patric hat seine Rolle als Lead-PM an mich übertragen, da die Geschäftslogik einer der wichtigsten Bereiche ist und um mir die Möglichkeit zu geben, hinsichtlich der Kommunikation mit den anderen PM und GPM aktiver zu werden. Das bedeutete natürlich nochmal eine zusätzliche Herausforderung für mich. Wie schon am Vortag arbeiteten unsere Studenten-Entwickler extrem engagiert, sodass am Ende des Tages ein enormer Fortschritt präsentiert werden konnte. Diesmal beendeten wir den Arbeitstag auch schon um 20 Uhr, um den letzten Abend auf der Hütte nochmal gebührend zu feiern. Am Mittwoch wurden wir zudem von Uwe Baumann von Microsoft besucht.</p>
<p>Der Donnerstag war dann der Tag der Feedback-Runden, Reviews und natürlich auch der Abreise. Wir haben in der kurzen Zeit einiges geschafft, aber leider nicht soviel, wie es ohne technische und Kommunikationsprobleme möglich gewesen wäre. Aber der Lernertrag war auf jeden Fall sehr groß. Wir haben neue Erfahrungen bei der Umsetzung von Projekten dieser Größe gewonnen.  Zudem haben wir erstmals mit dem TFS gearbeitet und nach Scrum entwickelt. Besonders für die GPM und PM kamen die Erfahrungen in Bereichen des Projektmanagements dazu. Und ich denke, dass alle ihre Arbeit gut gemacht haben, auch wenn nicht alles perfekt lief. Denn der beste Gewinn war doch die Erkenntnis, wie man etwas besser machen bzw. sich selbst verbessern kann. Und auch die Organisatoren wissen jetzt, dass dieser Workshop ein vorbereitendes Event gebraucht hätte. Dann hätte man schneller einsteigen und einige Probleme wären vll. nicht aufgetreten.</p>
<p>Was bleibt ist dennoch die Erinnerung an 4 coole Tage zusammen mit dem Kurs und den 3 Herrschaften von AntMe. Mir hats jedenfalls Spaß gemacht. Und ungeachtet aller Probleme muss man auch hervorheben, dass es in einem Bereich problemlos lief: Unser Special-Operations-Team Flocki und Thorsten in der Küche hat eine perfekte Arbeit abgeliefert! Sie haben uns 4 Tage lang mit leckerem Essen und frischem Kaffee versorgt. Das war einfach spitze! Auch die Mengenkalkulation war im Vorfeld sehr gut. Vielleicht kann ich ja demnächst nochmal eine kleine Liste nachreichen, von welchen Mengen hier gesprochen wird, um die Leistung nochmals hervorzuheben. Denn 31 Leute zu versorgen, da gehört was dazu.</p>
<p>Was ich auch noch nachreichen möchte: Einige Fotos von diesen 4 Tagen. Zudem haben Tom, Patric und Dominik Interviews und andere Dinge auf Video aufgezeichnet. Sobald ich die Links habe, werd ich mich nochmal melden.</p>
<p>So, nun genieß ich mal das Osterwochenende hier unten am Bodensee. Das Wetter ist traumhaft.</p>
<p>Viele Grüße</p>
<p>Maddin</p>
]]></content:encoded>
			<wfw:commentRss>http://endedesinter.net/2009/hutten-review-ameisen-invasion-in-osterreich-216/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>3&#8230;2&#8230;1&#8230;</title>
		<link>http://endedesinter.net/2009/321-90/</link>
		<comments>http://endedesinter.net/2009/321-90/#comments</comments>
		<pubDate>Sun, 01 Mar 2009 12:06:48 +0000</pubDate>
		<dc:creator>Maddin</dc:creator>
				<category><![CDATA[Technik]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[HTC Touch Diamond]]></category>
		<category><![CDATA[Ideen]]></category>
		<category><![CDATA[Pocket PC]]></category>
		<category><![CDATA[Smart Phone]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[System Power States]]></category>
		<category><![CDATA[Timer]]></category>
		<category><![CDATA[Windows Mobile]]></category>

		<guid isPermaLink="false">http://endedesinter.net/?p=90</guid>
		<description><![CDATA[Hallo zusammen!
Nein, ich habe keineswegs die Absicht den Werbeslogan eines gewissen Online-
Auktionshauses zu kopieren. Der Titel hat rein praktische Bedeutung und bezieht sich auf meine neueste Spielerei mit dem Windows Mobile 6 Professional SDK.
Es handelt sich dabei um einen kleinen Timer. Bevor jetzt einige vor Erstaunen gleich vom Bürostuhl fallen, möchte ich doch kurz die [...]]]></description>
			<content:encoded><![CDATA[<p>Hallo zusammen!</p>
<p>Nein, ich habe keineswegs die Absicht den Werbeslogan eines gewissen Online-</p>
<div id="attachment_55" class="wp-caption alignright" style="width: 160px"><img class="size-thumbnail wp-image-55" title="Windows Mobile Logo" src="http://endedesinter.net/wp-content/uploads/2009/02/wm6_logo-150x150.png" alt="Windows Mobile Logo" width="150" height="150" /><p class="wp-caption-text">Windows Mobile Logo</p></div>
<p>Auktionshauses zu kopieren. Der Titel hat rein praktische Bedeutung und bezieht sich auf meine neueste Spielerei mit dem Windows Mobile 6 Professional SDK.</p>
<p>Es handelt sich dabei um einen kleinen Timer. Bevor jetzt einige vor Erstaunen gleich vom Bürostuhl fallen, möchte ich doch kurz die Hintergründe erläutern.</p>
<p>Mein HTC Touch Diamond besitzt alle möglichen Spielereien und Tools, die das mobile Leben leichter machen sollen. Jedoch ein simpler Timer, z.B. um mich zu erinnern, wann der Tee fertig gezogen ist oder ein Teig genügend geruht hat, den gibt es nicht. <span id="more-90"></span>Natürlich brauch man nur die entsprechenden Schlagworte bei Google eintippen und findet entsprechende Timer kostenlos zum Download. Aber zum Einen dachte ich mir: &#8220;Hey, so schwer kann das net sein!&#8221; und zum Anderen stellte es genau die richtige Schwierigkeitsstufe für einen weiteren Schritt beim Erkunden der Windows Mobile Programmierung dar. Ein dritter Grund ist der, dass der einfache Timer nur die Grundlage für ein recht nützliches Tool sein soll, das schonmal alle wichtigen Schlüsseltechniken besitzt.</p>
<p>So, was hab ich nun getan? Zunächst einmal galt es eine einfache und übersichtliche GUI zu erstellen. Mit Microsoft Visual Studio 2008 war auch gar kein Problem. Die grundlegenden Eventhandlings für die einzelnen Menüpunkte stellte auch keine große Schwierigkeit dar. Der Timer bietet die Möglichkeit eine Zeit einzustellen, auszuwählen, ob man nach deren Ablauf per Vibration oder Klingeln erinnert werden möchte, sowie eine Resetfunktion.</p>
<p>Doch betrachten wir mal die Kernfunktion. Die eingestellte Zeit soll sekundenweise herunterzählen, bis man bei 00:00:00 angelangt ist. Demnach benötigt man ein Ereignis, das im Intervall von einer Sekunde auftritt. Das .NET-Framework bietet dazu die Klasse System.Windows.Forms.Timer, deren Instanzen mit einer Intervalllänge konfiguriert werden können. Sobald eine Timer-Instanz in den Zustand &#8220;Enabled&#8221; gesetzt wurde, wird immer im konfigurierten Intervall ein entsprechendes Event gefeuert. Den Eventhandler, der dieses Ereignis behandeln soll, kann man bei der Konfiguration angeben.</p>
<div id="attachment_105" class="wp-caption aligncenter" style="width: 203px"><img class="size-medium wp-image-105" title="Zeiteinstellung beim Timer" src="http://endedesinter.net/wp-content/uploads/2009/02/timeset-193x300.png" alt="Zeiteinstellung beim Timer" width="193" height="300" /><p class="wp-caption-text">Zeiteinstellung beim Timer</p></div>
<p>Damit ist schonmal das erste Grundproblem gelöst, denn nun kann man den eingegebenen Wert in eine Menge von Sekunden umrechnen und diesen im Eventhandler der Timer-Instanz dekrementieren. Wenn er den Wert 0 erreicht, soll dann eine Vibration oder ein Sound ausgelöst werden. Doch da ergibt sich das nächste Problem: Wie?</p>
<p>Das Thema Sound hatte sich relativ schnell erübrigt, da es passende Beispiele im Internet gibt. Ich habe eine separate Sound-Klasse nach <a title="Ein Beispiel zum Abspielen von Sounds auf Windows Mobile Geräten" href="http://globetech.wordpress.com/2007/12/09/playing-sounds-in-windows-mobile/" target="_blank">diesem Beispiel</a> erstellt. Diese greift direkt über DLL-Import auf die CoreDLL zu. Nach außen (zu meinem SimpleTimer) bietet sie eine einfache Schnittstelle, der man den Dateinamen übergeben kann. Schwieriger war die Handhabung der Vibration. Hierbei kam ich nach einem Studium entsprechender Blogeinträge zu dem Schluss, dass ich mich eines zusätzlichen SDKs bedienen sollte.</p>
<p>Das <a title="OpenNETCF-Homepage" href="http://www.opennetcf.com/" target="_blank">OpenNETCF SDK</a> bietet für derartige Bedürfnisse eine weitere umfangreiche Klassenbibliothek. Die entsprechende Bibliothek muss in Visual Studio verständlicherweise in die References hinzugefügt werden, damit die entsprechenden dll-Dateien beim Release mit in den Ordner gepackt werden. Allerdings hatte ich nun das Problem, dass ich verschiedene Beispiele fand. Zum Einen benutzte man die Vibrate-Klasse unter OpenNETCF.WindowsMobile. Dies probierte ich auch zunächst aus. Der Erfolg blieb aus. Ein <a title="Hilfreiches Beispiel zur Ansteuerung der Vibration" href="http://weimenglee.blogspot.com/2007_01_01_archive.html" target="_blank">anderes Beispiel</a> nutze eine virtuelle Notification-LED. In Klassen ausgedrückt heißt das: OpenNETCF.WindowsCE.Notification.Led</p>
<p>Mit einer Instanz dieser Klasse konnte ich über vier simple Zeilen meine Vibration auslösen und stoppen.</p>
<blockquote><p>OpenNETCF.WindowsCE.Notification.Led vibra = new OpenNETCF.WindowsCE.Notification.Led();<br />
vibra.SetLedStatus(1, OpenNETCF.WindowsCE.Notification.Led.LedState.Blink);<br />
System.Threading.Thread.Sleep(1000);<br />
vibra.SetLedStatus(1, OpenNETCF.WindowsCE.Notification.Led.LedState.Off);</p></blockquote>
<p>Hierbei sei angemerkt, dass die 1 die ID der LED darstellt. Gegebenenfalls muss man etwas probieren, bis man die richtige LED ermittelt hat.</p>
<div id="attachment_106" class="wp-caption aligncenter" style="width: 204px"><img class="size-medium wp-image-106" title="Menüstruktur des Timers" src="http://endedesinter.net/wp-content/uploads/2009/03/menstruk-194x300.png" alt="Menüstruktur des Timers" width="194" height="300" /><p class="wp-caption-text">Menüstruktur des Timers</p></div>
<p>Mit diesem  scheinbar fertigen Timer machte ich nun einen Praxistest. Ich habe Nudeln gekocht und die angegebene Kochzeit eingestellt. Als mein Handy noch ca. 5 verbleibende Minuten (von ursprünglich 10) anzeigte, war meine Pasta aber schon Al-Dente. Das machte mich etwas stutzig. Eingehende Tests (natürlich nach dem Essen) brachten die Erkenntnis: sobald sich das Handydisplay ausschaltet, wechselt das Handy in eine Art Ruhezustand, die Berechnung des Timers stoppt.</p>
<p>Am Abend des selben Tages habe ich mich nun eingehend mit den System Power States unter Windows Mobile 6 Professional beschäftigt. Dank der <a title="MSDN Library" href="http://msdn.microsoft.com/en-us/library/default.aspx" target="_blank">MSDN Library</a> fand ich auch die passenden Informationen. Der Übeltäter nannte sich &#8220;Suspended State&#8221;. Ein Systemzustand, in dem keine Threads laufen. Dank der übersichtlichen Zustandstabelle fand ich dann auch den Zustand, den ich brauchte: &#8220;Unattended State&#8221;. Dieser ist für Threads die Berechnungen durchführen, die keine direkte Userinteraktion erfordern. Ähnlich der Sound-Klasse hab ich mir eine PowerManager Klasse geschrieben, die mir die nötige Schnittstelle in die CoreDLL bietet. Dies funktionierte auch ganz gut, wenn nicht dann trotzdem irgendwann das Handy im Suspended State gelandet wäre. Ich schaute nun nochmal in die <a title="Übersicht über Power States und Transitions" href="http://msdn.microsoft.com/en-us/library/aa929251.aspx" target="_blank">&#8220;State Transition&#8221;</a>-Tabelle. Der SystemIdle Timeout war schuld, dass mein Timer dennoch stoppte. Doch eine Zeile darunter war die Lösung auf dem Silbertablett: Mittels SystemIdleTimerReset kann man diesen Timeout verhindern.</p>
<p>Somit habe ich in meinen PowerManager eine weitere Funktion eingefügt, die diesen Reset ausführt. Diese Funktion wird von meinem EventHandler der Timer-Instanz alle 30 Sekunden aufgerufen. Nun läuft der Timer problemlos auf 0 herunter. Das Display schaltet sich dabei aber auch nicht mehr vollständig ab, sondern reduziert nur das Backlight auf ein Minimum.</p>
<p><object width="425" height="344" data="http://www.youtube.com/v/8MWJCyM1FQA&amp;hl=de&amp;fs=1" type="application/x-shockwave-flash"><param name="src" value="http://www.youtube.com/v/8MWJCyM1FQA&amp;hl=de&amp;fs=1" /><param name="allowfullscreen" value="true" /></object></p>
<p>Nun gibt&#8217;s hier im Blog eine Software-Sektion ähnlich <a title="Sourcewalker.Net Software-Bereich" href="http://sourcewalker.net/software/" target="_blank">dieser</a> einfüge, wo ihr euch dann auch direkt den Timer als Quellcode herunterladen könnt. Oben am rechten Rand findet ihr den Link &#8220;<a title="Software Sektion von endedesinter.net" href="http://endedesinter.net/software/" target="_self">Software</a>&#8220;.</p>
]]></content:encoded>
			<wfw:commentRss>http://endedesinter.net/2009/321-90/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>I say: &#8220;Hello mobile World!&#8221;</title>
		<link>http://endedesinter.net/2009/i-say-hello-mobile-world-53/</link>
		<comments>http://endedesinter.net/2009/i-say-hello-mobile-world-53/#comments</comments>
		<pubDate>Sun, 01 Feb 2009 17:18:34 +0000</pubDate>
		<dc:creator>Maddin</dc:creator>
				<category><![CDATA[Technik]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[HTC Touch Diamond]]></category>
		<category><![CDATA[Pocket PC]]></category>
		<category><![CDATA[Smart Phone]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Windows Mobile]]></category>

		<guid isPermaLink="false">http://endedesinter.net/?p=53</guid>
		<description><![CDATA[Dem Einen oder Anderen habe ich es breits erzählt, nun gibt es auch den ersten &#8220;offiziellen&#8221; Bericht zu meiner neuen Freizeitspielerei.
Ich bin seit Mitte September im Besitz eines T-Mobile MDA Compact IV (HTC Touch Diamond), welches bekanntlich Windows Mobile 6.1 als Betriebssystem verwendet. Damit bietet das Smart Phone (bitte nehmt es mir nicht übel, aber [...]]]></description>
			<content:encoded><![CDATA[<p>Dem Einen oder Anderen habe ich es breits erzählt, nun gibt es auch den ersten &#8220;offiziellen&#8221; Bericht zu meiner neuen Freizeitspielerei.</p>
<div id="attachment_55" class="wp-caption alignright" style="width: 160px"><img class="size-thumbnail wp-image-55" title="Windows Mobile Logo" src="http://endedesinter.net/wp-content/uploads/2009/02/wm6_logo-150x150.png" alt="Windows Mobile Logo" width="150" height="150" /><p class="wp-caption-text">Windows Mobile Logo</p></div>
<p>Ich bin seit Mitte September im Besitz eines T-Mobile MDA Compact IV (<a title="HTC Touch Diamond" href="http://www.htc.com/de/product.aspx?id=45928" target="_blank">HTC Touch Diamond</a>), welches bekanntlich Windows Mobile 6.1 als Betriebssystem verwendet. Damit bietet das Smart Phone (bitte nehmt es mir nicht übel, aber ich sag trotzdem Handy) natürlich viel mehr Möglichkeiten, um eigene Programme für das Handy zu schreiben, als es ein normales Handy bot. Dort musste man auf JavaME zurückgreifen. Windows Mobile 6 bietet dagegen ein eigenes auf .NET basierendes SDK und vereinfacht so die Software Entwicklung.</p>
<p><span id="more-53"></span>Zudem fand ich <a title="Using HTC Diamond’s Accelerometer/Sensor SDK from Managed Code" href="http://blog.enterprisemobile.com/2008/07/using-htc-diamonds-sensor-sdk-from-managed-code/">Berichte</a>, dass bereits findige Entwickler, die aus der HTCSensorSDK.dll die entsprechende API über Reverse Engineering verfügbar gemacht haben. Der Gedanke, mit diesen Möglichkeiten mal zumindest etwas herumzuspielen, sodass vielleicht auch später brauchbare Dinge dabei herauskommen, war schnell geboren. Allerdings hinderte dann diverse zeitliche und technische Probleme mich daran, diesen Gedanken umzusetzen.</p>
<p>Gestern habe ich nun endlich mit der Umsetzung begonnen und das <a title="Windows Mobile 6 Professional SDK im Microsoft Download Center" href="http://www.microsoft.com/downloads/details.aspx?familyid=06111A3A-A651-4745-88EF-3D48091A390B&amp;displaylang=en#filelist" target="_blank">Windows Mobile 6 Professional SDK</a> installiert. Als Entwicklungsumgebung nutze ich Microsoft Visual Studio 2008 und schreibe meine Programme in C#. Das SDK bringt eine umfangreiche Dokumentation und Beispielprogramme mit, um jedem einen guten Einstieg zu ermöglichen. Grundkenntnisse der Programmierung in C# sind natürlich empfehlenswert. Ein für das Debugging der geschriebenen Software unerlässliches Feature ist der Windows Mobile 6 Device Emulator.</p>
<div id="attachment_58" class="wp-caption aligncenter" style="width: 205px"><img class="size-medium wp-image-58" title="Emulator für ein Windows Mobile 6 Professional Gerät" src="http://endedesinter.net/wp-content/uploads/2009/02/emulator-195x300.png" alt="Windows Mobile 6 Emulator" width="195" height="300" /><p class="wp-caption-text">Windows Mobile 6 Emulator</p></div>
<p>Auf dieser Emulation des tatsächlichen Smartphones kann man die geschriebene Software deployen und ausführen. In Verbindung mit Visual Studio 2008 ist auch das gewohnte Step-by-Step Debugging möglich, sodass sich Fehler einfach identifizieren lassen sollten. Zudem verhindert der Emulator, dass man eine fehlerhafte Software auf seinem Handy ausführt und so gegebenfalls Daten vernichtet oder andere Schäden am System verursacht werden.Für meinen ersten Versuch ein lauffähiges Programm zu schreiben, habe ich mich erstmal vom oben genannten SensorSDK ferngehalten. Erstmal sollen ja die Basics stehen.</p>
<p style="text-align: left;">Jeder, der schon einmal ein Lehrbuch zum Erlernen einer neuen Programmiersprache in der Hand gehabt hat, weiß, wie das erste Programm in aller Regel ausschaut: <strong>&#8220;Hello World!&#8221;</strong>. Da für mich die Sprache C# an sich nicht neu ist, sondern nur die Umgebung, auf der die Software läuft, war ich so frei, diesen Standardsatz in <strong>&#8220;Hello mobile World!&#8221; </strong>zu modifizieren. Ich wollte es aber auch nicht bei einer banalen Ausgabe belassen, sondern ein ganz klein wenig Funktion sollte schon da sein. Deshalb wird bei Start des Programms neben der Weltbegrüßung noch <em>&#8220;Application started at &lt;date/time&gt;&#8221;</em> ausgegeben. Am unteren Bildschirmrand erscheinen 2 Menüeinträge: <em>&#8220;Change Color&#8221;</em>, <em>&#8220;Quit&#8221;</em>. Während ich sicher niemandem erzählen muss, welchen Zweck der Quit-Button erfüllt, ist auch der andere Button selbsterklärend. Bei Betätigung wird die unten dargestellte Farbänderung vorgenommen und anstatt<em> &#8220;Application started&#8230;&#8221;</em> wird<em> &#8220;Colors changed at &lt;date/time&gt;&#8221;</em> ausgegeben.</p>
<div id="attachment_62" class="wp-caption aligncenter" style="width: 310px"><a title="Klicken zum Vergrößern" href="http://endedesinter.net/wp-content/uploads/2009/02/123.png" target="_self"><img class="size-medium wp-image-62" title="Hello World Application" src="http://endedesinter.net/wp-content/uploads/2009/02/123-300x154.png" alt="Hello World Application" width="300" height="154" /></a><p class="wp-caption-text">Hello World Application</p></div>
<p style="text-align: left;">Das sind Screenshots vom Emulator, als mein Hello World Programm lief. Aber ich habe es auch schon auf meinem Handy getestet und auch da funktioniert es. Ein erster Erfolg, wenn gleich das Programm nix besonderes ist.</p>
<p><object width="425" height="344" data="http://endedesinter.net/wp-content/uploads/2009/02/hellomobileworld_play.swf" type="application/x-shockwave-flash"><param name="src" value="http://endedesinter.net/wp-content/uploads/2009/02/hellomobileworld_play.swf" /><param name="allowfullscreen" value="true" /></object></p>
<p>Ich hoffe mal, dass ich baldigst mit weiteren Berichten dazu aufwarten kann, dann hoffentlich auch mit funktional umfangreicheren Programmen.</p>
<p>Zusammenfassend lässt sich jedoch sagen, dass das SDK sich gut handhaben lässt und C# natürlich auch eine sehr bequeme Sprache für die Entwicklung ist.</p>
<p>Maddin</p>
<p style="text-align: left;">
]]></content:encoded>
			<wfw:commentRss>http://endedesinter.net/2009/i-say-hello-mobile-world-53/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
