Old English, so serify!

August 12, 2010 Leave a comment

Categories: pixels

Visual Studio gets Windows Mobile SDK location wrong.

November 29, 2008 1 comment

After a good run of Windows Mobile (WM6) development on my x86 Vista laptop I started seeing the following when building any WM6 project:

1>—— Rebuild All started: Project: WMBattery, Configuration: Debug Windows Mobile 6 Professional SDK (ARMV4I) ——
1>Deleting intermediate and output files for project ‘WMBattery’, configuration ‘Debug|Windows Mobile 6 Professional SDK (ARMV4I)’
1>Compiling…
1>stdafx.cpp
1>e:\dev\projects\wm_battery\wmbattery\stdafx.h(14) : fatal error C1083: Cannot open include file: ‘ceconfig.h’: No such file or directory
1>Build log was saved at "file://e:\dev\projects\WM_Battery\WMBattery\Windows Mobile 6 Professional SDK (ARMV4I)\Debug\BuildLog.htm"
1>WMBattery – 1 error(s), 0 warning(s)
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

Normal Win32 C++ applications and C# applications had no problems building– it was just my WM6 projects. (and didn’t have the WM5 SDK installed to see if those builds were broken as well).  If I included the directory where "ceconfig.h" existed– C:\Program Files\Windows Mobile 6 SDK\PocketPC\Include\Armv4i – to the project’s "Additional Includes Directories" (which otherwise would make sense for such an error) I then saw:

1>—— Build started: Project: WMBattery, Configuration: Debug Windows Mobile 6 Professional SDK (ARMV4I) ——
1>Compiling…
1>stdafx.cpp
1>Compiling…
1>main.cpp
1>Battery.cpp
1>Generating Code…
1>Compiling resources…
1>Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
1>Copyright (C) Microsoft Corporation.  All rights reserved.
1>.\WMBatteryppc.rc(11) : fatal error RC1015: cannot open include file ‘windows.h’.
1>Build log was saved at "file://e:\dev\projects\WM_Battery\WMBattery\Windows Mobile 6 Professional SDK (ARMV4I)\Debug\BuildLog.htm"
1>WMBattery – 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Alright, something’s going on here because projects shouldn’t be having a problem finding “windows.h.”  It was at this point that I remembered I had received the following dialog out of the blue prior to these problems starting

 

which hinted strongly that in some way my Visual Studio settings had gotten borked and since I had been running on “default” settings that maybe VS just forgot where the WM SDK was. 

I opened the default CurrentSettings.vssettings (%USERPROFILE%\My Documents\Visual Studio 2008\Settings) and compared it to another CurrentSettings.vssettings from another x86 box with the WM6 SDK installed.  Of the relatively few differences, the most notable was in the “Visual C++ Project System Package” ToolOptionsSubCategory node where I noticed that my Windows Mobile include/lib paths were pointing to "Program Files (x86)".  However this is a 32-bit system so there isn’t a “Program Files (x86)”.  So I cleaned up the XML .settings file (easier to edit if you open in VS, Edit>Advanced>Format Document (CTRL-K, CTRL-D)) ala:

  • IncludeDirectories Before:
    • <PropertyValue name="IncludeDirectories">Win32|$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)\include;$(FrameworkSDKDir)include|Pocket PC 2003 (ARMV4)|$(VCInstallDir)ce\include;$(VSInstallDir)SmartDevices\SDK\PocketPC2003\include;$(VCInstallDir)ce\atlmfc\include;$(VSInstallDir)SmartDevices\SDK\SQL Server\Mobile\v3.0;|Smartphone 2003 (ARMV4)|$(VCInstallDir)ce\include;$(VSInstallDir)SmartDevices\SDK\SmartPhone2003\include;$(VCInstallDir)ce\atlmfc\include;$(VSInstallDir)SmartDevices\SDK\SQL Server\Mobile\v3.0;|Windows Mobile 6 Professional SDK (ARMV4I)|$(VCInstallDir)ce\include;C:\Program Files (x86)\Windows Mobile 6 SDK\PocketPC\include\ARMV4I;C:\Program Files (x86)\Windows Mobile 6 SDK\PocketPC\include;$(VCInstallDir)ce\atlmfc\include;$(VSInstallDir)SmartDevices\SDK\SQL Server\Mobile\v3.0</PropertyValue>
  • IncludeDirectories After:
    • <PropertyValue name="IncludeDirectories">Win32|$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)\include;$(FrameworkSDKDir)include|Pocket PC 2003 (ARMV4)|$(VCInstallDir)ce\include;$(VSInstallDir)SmartDevices\SDK\PocketPC2003\include;$(VCInstallDir)ce\atlmfc\include;$(VSInstallDir)SmartDevices\SDK\SQL Server\Mobile\v3.0;|Smartphone 2003 (ARMV4)|$(VCInstallDir)ce\include;$(VSInstallDir)SmartDevices\SDK\SmartPhone2003\include;$(VCInstallDir)ce\atlmfc\include;$(VSInstallDir)SmartDevices\SDK\SQL Server\Mobile\v3.0;|Windows Mobile 6 Professional SDK (ARMV4I)|$(VCInstallDir)ce\include;C:\Program Files\Windows Mobile 6 SDK\PocketPC\include\ARMV4I;C:\Program Files\Windows Mobile 6 SDK\PocketPC\include;$(VCInstallDir)ce\atlmfc\include;$(VSInstallDir)SmartDevices\SDK\SQL Server\Mobile\v3.0</PropertyValue>

Next start up of Visual Studio, however, resulted in the "Microsoft Visual Studio is configuring the environment for first time use” dialog and the WM build problems still continued.  I checked CurrentSettings.vssettings again and saw that Visual Studio had changed those WM includes/lib paths back to those containing " (x86)"! 

Trying to import my fixed settings (instructions here) didn’t help.  I thought maybe it was pulling in this “Program Files (x86)” location from somewhere in the registry but a search for keys/values/data with values "C:\Program Files (x86)\Windows Mobile 6 SDK\PocketPC\include", "C:\Program Files (x86)\Windows Mobile 6 SDK", "C:\Program Files (x86)\Windows Mobile 6 SDK", and “Program Files (x86)” turned up nothing.  Same went for a smaller search of file contents—only turning up my corrupted vssettings files.  Did some environment variable go bad?  `set` in a normal cmd window didn’t reveal anything unusual and a `Tools.Shell cmd /k set` in Visual Studio’s command window (View > Other Windows > Command Windows) didn’t reveal anything either.

Reinstalling Visual Studio/WM SDK’s likely would have been a waste of time.  My last option was to reset my user’s Visual Studio settings:

[Elevated CMD Prompt]> "Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe" /resetuserdata

Problem solved– new and previously existing WM6 projects now build.  I just never figured out what caused the WM location settings problem. grr.

To be complete, the IncludeDirectories after /ResetUserData and starting up VS and getting "configuring the environment for first time use":
<PropertyValue name="IncludeDirectories">Win32|$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)\include;$(FrameworkSDKDir)include|Pocket PC 2003 (ARMV4)|$(VCInstallDir)ce\include;$(VSInstallDir)SmartDevices\SDK\PocketPC2003\include;$(VCInstallDir)ce\atlmfc\include;$(VSInstallDir)SmartDevices\SDK\SQL Server\Mobile\v3.0;|Smartphone 2003 (ARMV4)|$(VCInstallDir)ce\include;$(VSInstallDir)SmartDevices\SDK\SmartPhone2003\include;$(VCInstallDir)ce\atlmfc\include;$(VSInstallDir)SmartDevices\SDK\SQL Server\Mobile\v3.0;|Windows Mobile 6 Professional SDK (ARMV4I)|$(VCInstallDir)ce\include;C:\Program Files\Windows Mobile 6 SDK\PocketPC\include\ARMV4I;C:\Program Files\Windows Mobile 6 SDK\PocketPC\include;$(VCInstallDir)ce\atlmfc\include;$(VSInstallDir)SmartDevices\SDK\SQL Server\Mobile\v3.0</PropertyValue>

Update 10/25/2009:

I started seeing the “ceconfig.h” problem again but this time I tried to directly handle it through global Options:

  • Tools > Options;
  • Projects and Solutions > VC++ Directories. 
  • Select your platform, e.g. “Windows Mobile 6 Professional SDK (ARMV4)” from the drop-down and then “Show directories for” > “Include files”. 
    • Include your include\ARMV4I directory, e.g. “C:\Program Files\Windows Mobile 6 SDK\PocketPC\Include\Armv4i”

Build again and it went further in the build process but as my library directories were incorrect I received:

1>LINK : fatal error LNK1181: cannot open input file ‘coredll.lib’

  • Tools > Options; Projects and Solutions > VC++ Directories; select your platform. 
  • This time select “Library files” from “Show directories for”.
    • Include your lib\ARMV4I directory, e.g. “C:\Program Files\Windows Mobile 6 SDK\PocketPC\lib\ARMV4I”

Build again.  At this point I no longer had any problems building. 

I likely have these problems as I keep my VS projects in sync between two systems with Live Mesh but the two systems are different architectures and also have different system drive letterings.  VS project settings are sensitive to their environment and I should know better but I’ve yet to find other ways of sharing project data so I will probably continue to see this.

Categories: Troubleshooting

Performance Testing of an HTC Touch Pro (AT&T Fuze) against an HTC TyTN (Cingular 8525)

November 17, 2008 2 comments

 

With my previous Windows Mobile phones– Audiovox SMT5600 and an HTC TyTN (Cingular 8525)– I did not do much in the way of changing WM registry settings to try to improve WM performance or otherwise configure the device beyond basic application settings (ringers, power, other standard stuff).  This time around– with the HTC Touch Pro (AT&T Fuze)– I figured it was worth my time to see 1) how much the AT&T customizations affected device performance, 2) how much enabling Exchange email sync and running TouchFlo would affect performance, and 3) if the HTC Advanced Configuration settings I was applying were doing anything.

The following programs are available to test performance on WinCE-Windows Mobile platforms (all are free for personal use):

 

Here are just the results from running Spb Benchmark on my old HTC TyTN (Cingular 8525) and new HTC Touch Pro (AT&T Fuze) in various configurations:

*Y1: running programs: TouchFlo. Adv Config Cust: Perf>FSCacheSize=2MB, Perf>FSFilterCache=4096, and a few other minor settings which shouldn’t affect the tests.

*Y2: running programs: TouchFlo, ActiveSync (corp email sync). Events/Notifications on, Adv Config Cust: Perf>FSCacheSize=2MB, Perf>FSFilterCache=4096, and a few other minor settings which shouldn’t affect the tests.

*"Pocket World document open" test skipped as it Failed in all configurations even though it appears on the device as if the test is running properly.

Findings:

1) AT&T Customizations which include enabling TouchFlo (as it’s not run by default in the Base ROM), don’t hurt device performance much and help in other areas.  I only ran Spb Benchark a total of three times for each configuration, so it’s possible with more runs the numbers would smooth out more and more accurately reflect the configuration.

2) Through some arrangement of the settings my phone has arrived at, I have somehow hurt file I/O in a major way.  Without digging into it more it’s hard to say how– is it Exchange email sync?  Is it the HTC Advanced Configuration changes?

3) As for how effective any HTC Advanced Configuration changes are, that’ll have to wait for another time as I didn’t want to spend too much time on this activity.

Photos and geotags: Web-albums and mapping of them

May 25, 2008 Leave a comment

 

While you are out taking photos, your GPS device you brought with you is keeping track of where you’ve been.  Later when you’re back at your computer, tools like GeoSetter or Microsoft Pro Photo Tools will automatically assigned each photo a location based on the time you took the photo and where on the GPS trail that time occurs or when it’s off you can manually adjust the location yourself.  After that you will have a collection of geotagged JPEGs.  

 

To make the most of them you want to upload them to a web-album and share with others the path (GPS track) and your photos taken along the path.  EveryTrail seems to match that feature-wise, but I’d like to be able to use services I’m already using, like Flickr and Live Maps.

 

Here’s what I’ve found so far:

 

·         Picasa works well.  The desktop software is slick for organizing your photos.  Uploading them to new or existing web-albums is seamless and mapping your geotagged photos in the web album is as easy as clicking "View Map"– http://picasaweb.google.com/ryancr/GPSTest/photo#map.  But there’s no ability to add GPX track information (so you can get a line on your map showing your path) and the map view doesn’t zoom close enough to comfortable switch between photos taken close to each other but it’s nice that the arrows above each photo on the map cycles through them based on when they were taken.  The real win is that each web-album has a “View in Google Earth” link which provides a KML container of your photos which can be used in Live Maps or Google Maps.

·         Flickr should work well.  As a photo-sharing site it’s great: the community sharing and tagging features are established and meet my needs.  Photos uploaded with geotags can be displayed with Flickr’s built-in mapping feature and existing non-tagged photos can be tagged manually through the site.  But when viewing geotagged photos through the site’s built-in mapping application, the image that pops up in the map’s photo-bar is really small and the mapping application itself is lame when compared to Live Maps or Google Maps. (plus the map view doesn’t actually seem to work in IE8)  Flickr supports KML and KML_NL feeds, but the feed will only contain photos that were uploaded geotagged already, e.g. this, rather than also showing photos geotagged through Flickr.  Also the URL used needs to be of the http://api.flickr.com/services/feeds/geo/ type else you will wind up with parsing errors from Live Maps/Google Maps when it tries to grok the photo feed.   No ability to create photo-trails and upload GPX track information.

·         Live Spaces doesn’t do anything with my geotagged photos and creating a Live Maps Collection with pushpins to my Spaces photos is tedious.  But Live Maps is cool because I can upload my GPX path directly into Live Maps and display it along with my photo pushpins. e.g. http://maps.live.com/?v=2&encType=1&cid=EA3E56FF46082C90!231

 

The above conclusions are likely incomplete and premature so will be edited when I find better solutions or methods.