Monday, 14 December 2009

Windows Embedded CE touch driver consideration

Hi folks,

As you might have noticed, the Windows Embedded CE touch driver uses TWO interrupts. One interrupt (SYSINTR_TOUCH) to wait for the user to touch the screen, while the other interrupt is a timer (SYSINTR_TOUCH_CHANGED). Upon its expiration the touch driver determines if the touch is still pressed, if so the coordinates are measured and the timer is reset; if not the touch driver switches back to the first interrupt to wait for the user to press the screen.

This is a relict from Windows CE versions prior to 3.0 when the systemtick was still 20ms. Hence the systemtick was too long to be used as a timer for the touch screen.

However, this implementation sometimes leads to unexplainable behavior/errors due to the fact that interrupt events are queued differently in your system then regular events. An interrupt service thread (IST) should therefore only consist of ONE (and only ONE) WaitForSingleObject() as well as ONE (and only ONE) InterruptDone()! Unfortunately this implementation uses TWO WaitForSingleObject() calls in its IST!

On top of that, it also utilized unnecessary resources namely the extra timer.

An elegant solution would be to get rid of the extra timer and use a Sleep() in its stead:


static ULONG TouchPanelpISR(PVOID Reserved)
{
...

static BOOL fStartIST = TRUE;

...

while(!bTerminate)

{

if(CurrentDown)

{

...

Sleep(5); // use appropriate value here

}

else

{

// don't call InterruptDone the first time

// as this is done by InterruptInitialize

if (!fStartIST)

{

InterruptDone( gIntrTouch );

...

}

else

{

fStartIST = FALSE;

}

WaitForSingleObject( hTouchPanelEvent, gdwTouchIstTimeout );

}

...

}

...

}

Stay tuned for part II!

Have Fun!
Read more! Post this to a friend!

Friday, 11 December 2009

LAST Microsoft Windows Embedded CE! Live chat –> in this year :)

MS is hosting a live chat about Windows Embedded CE. Do you have tough technical questions regarding Windows Embedded CE for which you're seeking answers? Then join the upcomming chat!

This is a great opportunity to chat with members of the Windows CE development team and give us a great opportunity to communicate with MS and ask questions about development issues.

So don't forget to put the date in your schedule and join it.

Title: Windows Embedded CE Live Chat!
Date: Tuesday, December 15, 2008 18:00 - 19:00 CET

To join this chat, please log on via the main MSDN chat page at:
http://www.microsoft.com/communities/chats/default.mspx

Have fun!


Read more! Post this to a friend!

Thursday, 10 December 2009

Windows CE QFEs for month of November 2009 arrived

the latest Windows CE updates have been recently released and are available for download (the Download Site is up-to-date :) ) .
Some issues (especially the compiler fix for Windows CE 6.0) have been resolved, no time to loose and get them now! More information for each update is provided in the Readme document available after the individual update(s) has been installed.

Windows CE 5.0 Monthly Update (November 2009)

Follow this link and download the set of updates for Windows CE 5.0 released during the period of November 1 - November 30, 2009.

Fixes made in this update:

Component: COMM

  • 091123_KB974907 - Closing sockets may cause exceptions in some processes such as device.exe or the TCP/IP

Windows CE 6.0 Monthly Update (November 2009)

Follow this link and download the set of updates for Download this set of updates for Windows Embedded CE 6.0 R3 environment.

Component: Compilers

  • 091130_KB950561 - Compiler may incorrectly issue C4819 warning about invalid multi byte characters.

Component: FSD

Component: Menu

  • 091113_KB977404 - This update addresses the issue with the main Menu item not getting highlighted when selected.

Component: .NET CF 2.0 SP2

Component: Pictor

  • 091118_KB977315 - This update addresses the issue with the scroll bar that may occur when connecting to Windows Embedded CE 6.0 device from desktop computer using Network Projector.

Component: SQLCE

Component: WININET

  • 091130_KB975804 - Updated files: The system may get slow when using the WinInet APIs to download files from network.

Keep your OS up to date!


Read more! Post this to a friend!

Monday, 7 December 2009

Missing Wince 5.0 QFE Link for October 2009

Hello guys,

Unfortunately Microsoft seems still to have problems with updating their Download Site, but there is a very important quickfix for all (Wince 5.0) ATL users in the october update:

A memory leak may occur when calling IDispatch::Invoke(). The file(s) with the new source code changes for this component can be found in the directory %_WINCEROOT%\:
others\atl\include\atlcom.h

Download this set of updates for Windows CE 5.0 released during the period of October 1 - October 31, 2009.

You can find the October 2009 Update here.

Keep your OS up to date!


Read more! Post this to a friend!

EB delivers Satellite-Terrestrial Smartphones

If you have been following our blog you may have read the different posts around Terrestar's project for a Sattelite-Terrestrial Service. The last news around this was during the middle of this year when Terrestar successfully deployed a satellite allowing the first calls to be made (read and watch here).

As of next year "EB will be responsible for delivering complete products to TerreStar based on the EB-designed satellite-terrestrial reference device" running Windows Mobile® 6.5.

Read the full news here and here.

So long and thanks for all the fish!
Read more! Post this to a friend!

Friday, 4 December 2009

What's wrong with the KITL_RETAILMSG() output?

When you setup a new BSP, your first challage will be getting KITL to work.
Some debug outputs might be helpful. But some of the KITL_RETAILMSG() "%" outputs are wrong and therefore will not appear on your terminal.
A look at the source code reveals the truth;
KITLOutputDebugString() doesn't support all the printf() format placeholders:

* @func void | KITLOutputDebugString | Simple formatted debug output string routine
*
* @rdesc none
*
* @parm LPCSTR | sz,... |
* Format String:
*
* @flag Format string | type
* @flag u | unsigned
* @flag d | int
* @flag c | char
* @flag s | string
* @flag x | 4-bit hex number
* @flag B | 8-bit hex number
* @flag H | 16-bit hex number
* @flag X | 32-bit hex number
*

Replace e.g. "%08x" by "%X" and the numbers are fine!

Tschüß Holger
Read more! Post this to a friend!

Thursday, 3 December 2009

Embedded Software Engineering Kongress 2009 vom 08. – 10.12.2009 in Sindelfingen

Hallo zusammen,

es ist mal wieder so weit: vom 08. bis zum 10. Dezember 2009 findet der ESE Kongress in Sindelfingen statt. Mit 90 Fachvorträgen und 10 Kompaktseminaren aus Entwicklung, Forschung, Lehre und Management bietet der ESE Kongress reichlich Stoff für neue Ideen, Lösungswege und angeregte Diskussionen.


In diesem Rahmen werde ich am 10. Dezember um 9:45 einen Vortrag zum Thema: „Einsichten in die Entwicklung mit Windows Embedded CE 6.0 R3“ halten. Darin werde ich unter anderem die für Embedded Lösungen so wichtige Real-Time Fähigkeit von Windows Embedded CE erörtern. Außerdem werde ich auf dem Stand von Microsoft anzutreffen sein.

Ich hoffe Sie sind neugierig geworden. Lassen Sie mich in den Kommentaren einfach wissen, ob Sie mich auf dem ESE Kongress treffen möchten um über Windows Embedded oder sonstige Themen zu reden. Ich freue mich auf Sie!

Have fun!
Read more! Post this to a friend!