A tady je jeste upraveny cyklus s "dirty" prevodem na wchar, mensim bufferem a s ukoncenim cyklu pouze pri chybe. Ted jsem si na HTC Touch Pro overil, ze bez problemu ziskavam z $GPRMC sentence informaci o fixu pozice a bez problemu koexistuju s TomTomem.
Kód:
void CheckGPS()
{
HANDLE hFile = ::CreateFile(_T("COM4:"),
GENERIC_READ,
NULL,
NULL,
OPEN_EXISTING,
NULL,
NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
return;
}
CHAR buffer[BUFFER_SIZE];
WCHAR wbuffer[BUFFER_SIZE];
ZeroMemory(buffer, BUFFER_SIZE);
ZeroMemory(wbuffer, BUFFER_SIZE * sizeof(WCHAR));
BOOL result = FALSE;
DWORD count = 0;
do
{
result = ReadFile(hFile,
buffer,
BUFFER_SIZE - 1,
&count,
NULL);
if (result && count > 0)
{
buffer[count] = '\0';
//Prevest na WCHAR, Zpracovat, pokracovat
MultiByteToWideChar(CP_OEMCP, 0, buffer, count + 1, wbuffer, BUFFER_SIZE);
MessageBox(m_instance, wbuffer, _T(""), MB_OK);
}
}while(result);
CloseHandle(hFile);
}