PublishICS

Warning: Technical details inside 😉

… is de naam van mijn meest recente creatie.

Samenvatting

Wat een korte post moest worden werd een compleet verhaal. Vandaar dus hier een kleine samenvatting:

Ik heb een lange tijd geprobeerd om een programma te maken voor mijn PDA waarmee ik mijn agenda kon synchroniseren met mijn laptop en PC. Normaal gesproken kan dat, maar alleen met Outlook… En ik ben weer vervelend; ik gebruik geen outlook.
Eergister ben ik maar eens opnieuw begonnen aan dit programma omdat het oude een zooitje werd. Resultaat: in 1 dag heb ik het complete programma herschreven en het werkt beter dan ooit!

Wat er aan vooraf ging
PocketPC kan alleen met outlook syncen en daar nam ik geen genoegen mee. Een half jaar geleden ongeveer liep ik tegen Embedded Visual C++ aan. Deze was gratis te downloaden van de Microsoft website en wordt gebruikt om applicaties te ontwikkelen voor Windows Mobile 2003.

Ik gebruik geen Outlook maar Thunderbird. Thunderbird kan met een plugin (Lightning) kalenders beheren van het iCal formaat. Het is op deze manier zelfs mogelijk om de kalenders op een webserver te plaatsen (via WebDAV).

Het programma wat ik probeerde te maken moest mijn kalender uit mijn PDA synchroniseren via WebDAV met een iCal kalender op mijn webserver… Ik ben dan misschien niet de beste programmeur maar dit lukte mij niet echt. De laatste status van mijn applicatie SyncICS was dat hij kon exporteren naar iCal, een iCal bestand kon inlezen (niet verwerken) en verder nog niets… Alle vorm van communicatie over internet ontbrak dus en van synchroniseren was nog geen sprake.

Maar toen…
Het hele project leek dus nooit af te komen… Tot ik eergister in mijn hoop bestanden ineens Visual Studio 2005 tegenkwam (ja legaal, nog een licentie overgehouden van de fontys en dus te gebruiken voor non-commerciele doeleinden).

In Visual Studio werd het ineens mogelijk om in C# te programmeren, dit is voor mij al even geleden maar is toch een heel stuk fijner als C++.

Ik kwam al snel tot de conclusie dat het aanspreken van de outlook objecten op mijn PDA niet rechtstreeks vanuit C# gedaan kon worden. Hiervoor moest je gebruik maken van een DLL die je moest maken met… Jawel Embedded Visual C++. Gelukkig had Microsoft een sample online staan waar zo ongeveer de complete broncode voor de DLL bij zat en was dit probleem snel getackeld.

Hierna was het een kwestie van het oude idee in een nieuw jasje steken (herschrijven van oude code naar C#) en met de functies uit het .NET Compact Framework hadden we binnen no-time een HTTP koppeling om onze ICS file op de server weg te kunnen schrijven.

Resultaat

Ik had de lat gister wat lager gelegd, er komen bij het synchroniseren toch nog wel een paar andere problemen kijken welke er voor zorgen dat er meer werkt in gaat zitten. Mijn doel voorlopig is dan ook het kunnen exporteren en importeren van iCal calenders. Ook hoeft mijn applicatie geen WebDAV te kunnen babbelen, hij zet met een POST request zijn data op de server waar deze door een klein php script in een iCal file wordt weggeschreven.

Wordt vervolgt…

Leave a Reply

You must be logged in to post a comment.