Out of interest, what is involved in developing applications for the iPhone? Is there an IDE that you can use?Quote:
Originally Posted by mendhak
Printable View
Out of interest, what is involved in developing applications for the iPhone? Is there an IDE that you can use?Quote:
Originally Posted by mendhak
The closest that I have got so far is:Quote:
Originally Posted by mendhak
$GPGGA,082531.5,,,,,0,,,,,,,,*70
Is this even remotely close to what is needed?
I still get nothing when I start in non Verbose mode.
Gary
If you are developing webapps, you only need safari. Full iPhone app development requires a x86 mac and XCode.Quote:
Originally Posted by gep13
http://developer.apple.com/safari/mobile.php
http://developer.apple.com/iphone/
I just tested the latest version of this app on Windows Mobile 5, running on a Symbol MC70+GPS (http://motorola.com/mc70). I had to disable the option "Manage GPS automatically" in the system GPS settings to get it to work. I was having problems trying to get TomTom software integrated with another winmobile app until i noticed that checkbox option :thumb:
One thing that this app could use is an "exit" menu item. Clicking the [x] on the main screen just hides the application and returns to the 'Today' screen.
The program doesn't seem to use the baudrate value from the config file when first going into the settings screen. It just uses the default 4800. Other settings such as com port and logfile location are read from the config file.
Is there any particular reason why the polling rate doesnt go below 60 seconds?
"Save to text file" option doesn't seem to work. I tried saving to "\Storage Card\gps.txt".
No feedback. :cry:Quote:
Originally Posted by gep13
Although we did get one guy asking a question which had been answered on the main page already.
Whoops, tr333, sorry for the late reply.
Surprised and glad that it worked on WinMo5! Still sorry to see it not work on gep's phone. Unfortunately this:
only means that you're getting a satellite time (08:25:31.5), with 0 data.Quote:
$GPGGA,082531.5,,,,,0,,,,,,,,*70
The polling rate has been purposely set to a minimum fo 60 seconds to avoid battery drain. I had originally tested it out at 1 second intervals but it's really really fast. Since it's a logger, I felt a minute is a good minimum interval.
It shouldn't ignore your COM port settings or any of the other settings. If your COM port is, say, COM1, and you change it to COM7, it should stop working. Try that out, if it stops working then it is reading values from the settings screen.
The unfortunate bit about saving to text file is that you're asked for a file name but it only uses the folder path from it; there is no folder dialog box in the .NET CF, so we had to use the file browser dialog. You need to create or pick a folder that's either inside \storage card\ or in \my documents\. In other words, you need to give it something like
\storage card\gpslogs\anything.blah
or
\my documents\gpslogs\whatever.haha
I agree about that the exit thing, we should add it in there. I've created a work item for it here:
http://gpstracka.codeplex.com/WorkIt...orkItemId=1289
I am stumped about gep's phone - Google Maps works for him but GPSTracka, which is immensely superior, doesn't. I feel the need to actually come over and test it out on your phone in person :D
Gep, do you have any way of brute-testing it? By that, I mean, set it in verbose mode and leave it 'outside' (but not where someone will nick it :p) for about 30 minutes. If you have a balcony, that's a good place, else leaving it in any place where you know you get GPS reception (anywhere Google Maps responds and doesn't start choking). Leave it there for 30 minutes in verbose mode and then come back to it, clear your screen, then try again. I remember when I went to greece, I had to run it in verbose for a good 18 minutes before it finally realized where it was.
No balcony, but I see what you are saying. I see what I can do.Quote:
Originally Posted by mendhak
Gary
I'm not surprised that there's no data there. It's almost impossible to get a decent gps signal from an office building window. I'll try the config file setting again.Quote:
Originally Posted by mendhak
I also have a Motorola MC35 (winmob5) that I could test on, but I have no idea what COM port and baud rate settings I should be using. Can't really just check all combinations if there's no satellites to see.
Fantastic application! I have been using quite a few GPS loggers, and this easily beats them all: simple, straight to the job, low battery consumption, and the killer feature... works in suspended mode!
I have a few suggestions to improve it, and give it even more of an edge:
-1- smart mode
By this, I mean a way to reduce battery consumption further, by intelligently detecting when a new gps poll is required. I can think of 2 ways to achieve it:
* track the phone cells signals; not for triangulation, but only to get a rough idea of a location change since the last gps poll. If no movement is detected, I would suggest to either skip the gps poll until the next scheduled poll, or recheck again in a set interval.
* when polling gps, check current speed (and direction)? If movement is detected, faster than a configurable minimum (to account for gps innacuracy), then the next gps poll should be mandatory and override the cell tracking.
-2- autostart
Option to autostart the application with phone, with automatic logging. If the suggestion -1- is workable, and proves to reduce battery drain even more, there is no reason why we could not have the application always running in the background.
-3- minimum interval forced gps poll
The idea behind this, is to make sure the phone can (almost) always do a hot gps fix, by, for example, making sure we get a gps fix every 2h45m. This should override the poll skipping in smart mode. However, we have to be careful to use a different time interval from the regular polling: if I had my device to poll every min, I would not want to try to force the poll (indoor and unsuccessfull) after 3h, and then try again every min, therefore draining the battery. That means another time interval needed for repeat forced gps poll.
-4- give up
When there is no fix after a certain amount of time, it should give up, until the next attempt. Does it behave this way already?
-5- scheduler
For example, disable gps tracking at night. This could also be done by making the application respond to command line switches, such as "/suspend" and "/resume", and then use any favourite third party scheduler (eg: G-Profile), to control it.
-6- log last gps position in separate file
This could be used to develop further functionality, such as cell phone remote tracking, etc ... and allow other people to use it, taking advantage of the well designed, low power, gps tracking.
-7- separate the gui from the backend
If the application is really suitable for background running, it would be better to reduce it to the bare essentials, therefore minimising resource usage, and run it hidden. The configuration, future fancy front-end, scheduler, or 3rd party tool can then just run in the user space, only when needed.
HOLY MOLY!!! Feedback! Real user!!! Hello!
Thank you for the feedback! I'm genuinely very excited to hear back from someone 'out there' about this! Notice all the exclamation marks I'm using! :afrog:
Right, I'm going to go through your suggestions properly but overall, we need to keep in mind that there is going to be a sacrifice somewhere. It was initially created to run with very low memory consumption (I had it down to 430k!) but because it's new and we're all new to this, it's easy to get carried away, so we ended up adding more and more things.
Just today, on my way home, I was thinking of a 'send' menu option which sent the data to a web page via HTTP GET so that I could, for example, have a subdomain whereis.mendhak.com which could show the last location I sent data from. So you see what I mean - each new bit will add to the memory consumption (and therefore drain) of the phone.
Anyways, I'll have a proper read through your post. If you're a developer, you can join us too.
Yep, just try verbose. I know that we could add a feature in to automatically determine the port but that'd be rather expensive... so I figured, since we're all technical, we could figure it out ourselves :DQuote:
Originally Posted by tr333
You shouldn't need to change baud rates. Change COM ports and go verbose each time. If you see anything on the screen, then that's the right port.
FYI:
MC70+GPS and MC35 both operate on COM8.
I totally agree with you. That's why separating the core gps logging service from the frontend would be beneficial. It makes features it possible to add features, like sending gps position to email, without bloating the core, by running them as separate apps.Quote:
Originally Posted by mendhak
IMHO the single biggest improvement to the core, which should not significantly affect the program footprint, would be the smart mode.
I wish I could help developing, but I don't think I am at the level yet. However, I can review the logic or write good algorithms if needed.
Quote:
Originally Posted by mendhak
1. Got it to work on COM4
2. logged ok
3. I use WinMo version 6.1 (PPC)
4. On a Palm Treo Pro
5. see attached
For some reason the screen on my phone looks different then the picture you posted. I have a simpler screen with 2 options "Start" and "Options". but I don't care. It is small and it works (so far)..
I am planning a trip to Mongolia and since there are no roads or maps, the best way to document my route is an app such as this one.
I like the way it works with Google Earth, really cool. Thanks!
Hi, welcome to VBF to you too.
Oh right, the original screenshots are from an older build. I should probably update it. Good to know it's working for you and Mongolia's definitely the type of place I'd use it.
It pleases me to know that you like it. I've gone through your post now...Quote:
Originally Posted by arman68
The second bit should be possible. The first bit depends on the presence of cellphone masts and to be honest I don't know how to get the current signal strength to detect distance in the compact framework. I think I'll start adding these as work items on the GPSTracka codeplex page.Quote:
-1- smart mode
By this, I mean a way to reduce battery consumption further, by intelligently detecting when a new gps poll is required. I can think of 2 ways to achieve it:
* track the phone cells signals; not for triangulation, but only to get a rough idea of a location change since the last gps poll. If no movement is detected, I would suggest to either skip the gps poll until the next scheduled poll, or recheck again in a set interval.
* when polling gps, check current speed (and direction)? If movement is detected, faster than a configurable minimum (to account for gps innacuracy), then the next gps poll should be mandatory and override the cell tracking.
http://gpstracka.codeplex.com/WorkItem/List.aspx
If I'm not mistaken, that is a registry entry. The only problem is that when it autostarts, it'll come into the foreground; running applications in the background in Compact Framework is quite difficult. The concept of services doesn't exist, and you have to go to a level lower than what the compact framework provides.Quote:
-2- autostart
Option to autostart the application with phone, with automatic logging. If the suggestion -1- is workable, and proves to reduce battery drain even more, there is no reason why we could not have the application always running in the background.
On the other hand, I also want the user to have control over this so I suppose I could allow them to change whether it autostarts or not.
Didn't understand thisQuote:
-3- minimum interval forced gps poll
The idea behind this, is to make sure the phone can (almost) always do a hot gps fix, by, for example, making sure we get a gps fix every 2h45m. This should override the poll skipping in smart mode. However, we have to be careful to use a different time interval from the regular polling: if I had my device to poll every min, I would not want to try to force the poll (indoor and unsuccessfull) after 3h, and then try again every min, therefore draining the battery. That means another time interval needed for repeat forced gps poll.
It doesn't, it waits... the give-up option should be added, I'd consider this important actually. I've just been stopping it myself. An interval of... 15 minutes or 20 should be good.Quote:
-4- give up
When there is no fix after a certain amount of time, it should give up, until the next attempt. Does it behave this way already?
This may actually take considerable rework since the entire application runs in a single thread. I'll probably do this later later (as in, later :afrog: )Quote:
-5- scheduler
For example, disable gps tracking at night. This could also be done by making the application respond to command line switches, such as "/suspend" and "/resume", and then use any favourite third party scheduler (eg: G-Profile), to control it.
It's a GPX file in an XML format, so retrieving the last GPS location isn't going to be very hard. I don't see a need to move it to another file.Quote:
-6- log last gps position in separate file
This could be used to develop further functionality, such as cell phone remote tracking, etc ... and allow other people to use it, taking advantage of the well designed, low power, gps tracking.
With the compact framework, it's all-together. A memory footprint consists of the entire form and assemblies referenced by it in a single memory space even if they aren't used. In order to reduce it to the bare minimum, we'd need a separate application that consists of, say, a blank form that reads from the config file. Anyways, I can look at this too but I don't know how far we'll get on this.Quote:
-7- separate the gui from the backend
If the application is really suitable for background running, it would be better to reduce it to the bare essentials, therefore minimising resource usage, and run it hidden. The configuration, future fancy front-end, scheduler, or 3rd party tool can then just run in the user space, only when needed.
Gep, I'm guessing it still hasn't worked for you? :(
I think I should add an issue tracker for you :p
Only thing is, aside from what I told you (the balcony thing), I don't know how else this can be troubleshooted. You're getting a signal of some sort, you're on the right port, that's as far as I can go. I wonder if there are any satellites over Aberdeen :p
Hey,
Nope still haven't got it working, although I be fair, I still haven't tried the saturation test that you mentioned, have been in a position to do it yet.
There are definitely satellites over Aberdeen, it isn't that remote a place :) although, you would think that with some of the nightmare stories I have had with getting packages delivered. We are the oil capital after all :)
Gary
There, I created an issue for you in TFS. :D
http://gpstracka.codeplex.com/WorkIt...orkItemId=1332
Ha ha!!!
I feel so special!!!
Hey,
A little off topic, but PeteVick over in the Mobile Development Forum has just pointed me at some very useful applications for Monitoring the Performance of Windows Mobile Applications, so I thought I would share it here:
http://www.vbforums.com/showthread.php?t=560692
May come in useful.
Gary
ive been developing cf for quite a few years now., hopefully you still need help.,
are you using any third party cf libraries? for the gps stuff?
Thanks gep, downloading it now. I wonder if I need to run this on the phone or the PC (eqatec).
zxed, yes, we're using the OpenNetCF library to read from the GPS port, it raises the events such as position found, among others. You're welcome to join if you like or just offer advice/help. List of issues here:
http://gpstracka.codeplex.com/WorkItem/List.aspx
I suppose the most difficult one right now - option to autostart. Is there a way to autostart the app with the phone quietly, in the background?
Haven't got as far as playing with it yet. One of the applications I wrote last year is starting to play up, so going to need to use the apps soon. From what I read they seem fairly easy to use though.Quote:
Originally Posted by mendhak
Gary
i will probably join., just need to find the time :) too much stuff going on..Quote:
Originally Posted by mendhak
you have probably thought about this already., but how about a listner/helper app that checks to see if your main app i running?
Of course, I wouldn't impose :)
The problem with that one is the helper app needs to autostart, and since we're looking up autostart, may as well start the main app. I'm currently playing with outputting KML formats on the app. Once I check it in, I can move on to autostart.
KML is bad. I feel like ranting about KML. Perhaps I will do this in Chit Chat. But the summary is, KML is bad.
for some reason i saw that as "auto-restart............. :)Quote:
Originally Posted by mendhak
Defining the "Autostart" requirement:
Once application has been installed on a device, configuration shall allow the user to specify that the application autostart.
If autostart has been enabled, the application shall start it self when:
1. device is restarted/powered on
2. device is woken from sleep/powersave mode and the application is not running.
would that be correct?
Yeah, #1 is right. The GPS app currently works in powersave mode so we're alright there. I guess the main thing here is if there's a way to get it to start with the application itself.
Any keywords I can search on? Maybe an API or registry key to mess with?
have a look at this example
REG FILE:
[HKEY_CURRENT_USER\Software\Symbol\Startup\Programs\Prog10]
"Name"="\windows\wceldcmd.exe"
"Command"="\Windows\netcf.all.wce4.armv4.cab"
"Continue"=dword:0
"ColdBootOnly"=dword:1
i am not sure if wceldcmd.exe is the correct command, or that if command can contain an exe... dont have a mob device near me at the moment...
another thought., when installing the cab., why not just put a shortcut in the startup folder?
Hey,
I know I haven't been back to this thread in a while, but I have just come across some ideas on how you can go about getting the application to start at particular times, or when the device starts up.
Have a look here:
http://msdn.microsoft.com/en-us/netf.../bb495180.aspx
Scroll down until you hit the State and Notification Broker section and you will find videos describing how to do the following:
How Do I: Automatically Start an Application on a System State Change?
How Do I: Auto-Start an Application?
How Do I: Schedule an Application to Run at a Specific Time?
How Do I: Get an Application to Automatically Start When a Mobile Device Wakes Up?
Hope that helps!!
Gary
Hey,
I think you are right on that one.
Given that GPSTracka, as it stands, runs on Windows Mobile 6, then I can't see any reason why this approach won't work. If GPSTracka is expanded to support older OSes, then a different solution will have to be found.
Gary
Hey Mendhak,
Not sure if you are still checking this thread or not, but I have just found something interesting in the Windows Mobile 6 SDK. Have a look at the following folder (or the equivalent depending on your installation path):
C:\Program Files\Windows Mobile 6 SDK\Samples\PocketPC\CS\GPS
I haven't tried it out yet, but looking at the source code, it seems to be a complete example of getting information from a GPS device without the need for a third party library. Obviously, there are lots of API calls, but just wondered if you had seen this before? I hadn't realised that there were complete examples like these built into the SDK's!!
Gary
Ah, yes that's what I was using at first (before SharpGps even) but when I tested it out on several phones, it failed dismally! It seems to work on a few phones like mine, but it didn't work on anyone else's.
I wonder if it's meant for yours :ehh:
Lots of things going on in the app right now, someone's made more source code contributions:
Which I'm testing out right now. That and it's also project crunch time, which is why I haven't been replying much here, but I *am* reading it :afrog:Quote:
Complete list of changes:
* Possibility to altitude (how high you are from see level); both GPX and KML
* Possibility to log track (i addition to distinct points); both GPX and KML
* Fixed number/time formatting in files and in log (text box) when local settings of device are non-English (Windows uses comma (,) as decimal separator, but GPX/KML must always contain dot (.))
* Fixed file XML (GPX/KML) issue when many elements has xmlns="" attribute
* Points in KML file are now in separate folder in order to turn them easily on/off in Google Earth
* Minimal allowed logging interval is 1 second (60 seconds originally)
* It is no longer possible to change file format when logging is running
* File name is now yyyyMMdd_HHmmss instead of yyyyMMdd. This allows easy experimenting with different incompatible settings as new file is created whenever you click Start (originally maximally one GPX and one KML file per day was generated)
* Removed unused <bounds/> element from GPX file
* UI changes in settings dialog to set up new features
** Added Log altitude check box
** Added Distinct points / Track radio buttons
* In source code:
** All changes in TrackerForm.cs marked with comments (search for word "Ðonny")
** Only changes files are TrackerForm.cs and TrackerForm.Designer.cs