He cogido el ejemplo del foro ingles:
Code: Select all
#include "FWCE.ch"
#define GENERIC_READ 0x80000000
#define GENERIC_WRITE 0x40000000
#define GENERIC_REWRITE 0xC0000000
#define OPEN_EXISTING 3
#define FILE_ATTRIBUTE_NORMAL 0x00000080
function Main()
local oWnd, oTimer, oChk
local hPort
local nPollTime := 1000
local lOnOff := .T.
hPort := CreateFile( "COM4:",GENERIC_REWRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL )
if hPort == -1
MSGALERT("No Puedo abrir el puerto...")
return -1
else
MSGALERT(hPort)
endif
DEFINE WINDOW oWnd TITLE "BlueTime"
@ 2, 2 BUTTON "GPS On/Off" SIZE 80, 30 ACTION (lOnOff := OnOff( hPort, oTimer, lOnOff ), oChk:refresh)
@ 10, 2 CHECKBOX oChk VAR lOnOff PROMPT "On/Off" OF oWnd SIZE 80, 20
if hPort != -1
DEFINE TIMER oTimer OF oWnd;
INTERVAL nPollTime;
ACTION ReadGPS(hPort, oTimer)
endif
ACTIVATE WINDOW oWnd
CloseHandle( hPort )
return nil
function ReadGPS( hPort, oTimer )
local nChr := 1
local cText := ""
local n := 1
oTimer:DeActivate() // stops timer - waits for data
do while nChr > 0 .and. n < 21
nChr := ReadByte( hPort )
cText := cText + Chr( nChr )
n++
end do
msginfo( cText )
oTimer:Activate() // restarts timer
return nil
function OnOff( hPort, oTimer, lOnOff )
if hPort != -1
if lOnOff
oTimer:DeActivate() // stops timer
else
oTimer:Activate() // starts timer
endif
endif
return !(lOnOff)
1) Tengo que hacer algo en la pda para que me lea la informacion del gps, por ejemplo hay que iniciarlo. He leido que si otra aplicacion utiliza el puerto ya no puedo leer la informacion. Pero lo raro es que veo que con el TomTom tarda en leer la informacion del GPS, y con el programa me la da inmediatamente pero mal por lo que se ve.
2) Existe en la pda algo similar a los dispositivos de hardware de windows donde te informa que puertos de comunicaciones tienes.
3) Alguien ha hecho algo similar, solo quiero obtener las coordenadas del GPS, para integrarlas en mi aplicacion.