2/3/2008

Last thursday I received my project description from Dr. Pankratz. the first impressions of my project are very positive. I have a lot of different ideas I would like to try and implement. I'm going to start out using C# to communicate with comports to ensure I have access to my gps device. If everything goes as planned I eventually would like to get it to run on my cell phone.

Today I ordered a usb gps device to work with my mac. since I am using a Mac, and not a PC, I also must purchase vmware fusion so I can run visual studio 2008. Right now I have to put the actual coding on hold until these two things arrive, but will continue to get things down on paper in the meantime.

2/12/2008

Last week I ordered my GPS navstick, hoping it would arrive by the end of the week. The next day I got an email saying it was no longer available. Since just about every other site I went to was also out of stock or back ordered, I ended up buying one on ebay. After the small delay i received the GPS yesterday. I am happy to report that it came with a great drivers disk and is relatively simple to pull GPS readings out of. I wrote a small program in C# to read in the GPS coordinates. I was surprised to find out that the gps seems to think west de pere is green leaf. I think it might have to do with being in buildings, and not getting good readings. In the next few days i am planning on taking my laptop in my car to try to get some better readings.

While I was waiting for my GPS I developed two other smaller programs. One to play video that I will use to show the inside of the buildings of interest, and one that functions as a picture slide show that I will also use to show the interior of the buildings.

I also started what will be my main program, and began to integrate code from the smaller working programs. If all goes well I hope by next week that I can be integrating some GPS coordinates into my main program, and begin to plot out points of interest on the campus.

2/19/2008

As I stated last week I thought the GPS was having some problems finding correct coordinates. I found the GPS was sending data in degrees, minutes, and seconds instead of just a straight latitude, and longitude. Therefore when I typed what I thought was the straight latitude and longitudes into map quest, my data was slightly off. After some minor calculations I was able to convert the minutes and seconds, and get exact locations. Now when I go to map quest I am able to see even the slightest moves in my location.

Another thing I figures out this week was that by placing a usb extension cable on my laptop then hooking the gps into it that I get readings quicker when I am in locations with a lot of interference. I think by keeping the gps away from my laptop it avoids any interference my laptop could have been giving off.

I would have liked to begin to plot points on campus this week but because of the snow storm, cold weather, high winds, and the fact that I had the flu half of the week I didn't find it fitting to be wondering around outside with my laptop. So my tasks for this weekend and next week are to get some points plotted and hopefully get the program to recognize when I enter certain areas of the campus and display proper messages.

2/26/2008

Since the weather still isn't the best this week I haven't gotten outside to plots some coordinates and test out my GPS more, but I did manage to get some necessary things accomplished. I met with Dr. Pankratz on Wednesday and we went over my project plan which can be viewed in my project plan. We also ordered three "female USB to male Mini-USB" adaptors. With these adaptors I am going to try and get my phone to read the GPS. If I can do that I want to go ahead and write a small C# mobile application just to read the GPS in to prove my concept that my phone can do the same as the computer. Eventually I would like to implement more features on my mobile application, but i got to start simple.

Tomorrow (Friday) I plan to go out and take pictures of the buildings around campus. I figured it was either I take them after the fresh snow fall we had tonight or wait till Spring, and at this rate I don't know if spring will be coming anytime soon!

After studying my diagrams I created for my project plan, I think I have developed a pretty good way to go about reading the GPS to determine if I am close to a building or not. As of right now I am going to plot points in a square around each building of interest. As GPS readings come in I am going to check the location compared to each box and determine from there if I am close enough to that building and then display an appropriate dialog containing information about that building including video and pictures.

I think I am starting to make a lot of good progress on my project, and am right about where I want to be as far time. I also updated my project portion of my web site to contain diagrams of my project, and screen shots.

3/5/2009

This week I encountered my first real problems so far during the project. Late last week I ordered a few mini-male usb to female usb connectors for my phone. These connectors were suppose to allow me to plug the GPS into my cell phone. The problem is when I plug the GPS into my phone the GPS never powers up. I'm guessing that the port in my phone isn't providing enough power or power at all to the GPS. After reading a few articles online I found that the most common way people were hooking GPS up to my phone was through a blue tooth GPS device. Since blue tooth is battery powered this would make sense, but it still seems odd to me that i can't hook directly into the phone. I plan to keep trying different sites to try and find a better answer/solution.

My second problem came about today. Since it was finally about 30 degrees outside I decided I would attempt to plot some coordinates around a few buildings on campus. I went out front of Cofrin Hall, and turned on my GPS. It took a little while to get original coordinates, but after a few minutes I got some. As I moved from one corner of the building to the other my GPS readings never changed. I even tried walking around back, and the coordinates never changed. At first I thought the GPS was frozen, or not getting readings, but when I tried the program that came with the GPS I found that the cords moved ever slightly as I got a good distance from the building. The sample program that came with the GPS is in Deg, Min, Sec, and the program I wrote I converted it into Lat and Long. This could be the reason for my loss in accuracy, but it still should have shown some movement when I moved far away from the building.

After talking with Steve, we came to the conclusion that the weather could be a possible factor. We had heavy cloud cover today which could cause the GPS to not get updated readings as quickly as we wanted or some readings to get lost. This could also be the reason it took me so long to get an initial reading. I hope to try the GPS out some more tomorrow, and come up with a few ideas if it doesn't work as planned.

3/12/2009

Unlike last week, this week seemed to be much better as far as progress on my project. Last week I reported that I was having a hard time getting correct coordinates when trying to plot buildings. This week I took a completely different approach to how I gather my coordinates In the past weeks I was using a timer to gather new coordinates, and the timer was firing every 300th of a second. The problem here is that the GPS sends more than just one line of data. If at the time the timer fires the correct line isn't in the buffer, it misses it chance to read the new coordinates So what I think was happening is that the coordinates weren't changing because it was taking to long to get the new coordinates in. I talked with Professor Blahnik and he suggested rather than using a timer, to use states. I found out that there is an event that can be fired when new data is received in the comport. I used this event handler to read in the buffer into an array of chars. From there I read each char and looked for the correct beginning of the NMEA statement that contains the latitude and longitude. For example I was looking for "$GPGGA". So to do this I had a state for each char. For example are you a $, okay now you can go to the next state, if you aren't you need to start over, and so on for each char. If it gets to the last state then its a valid NMEA line and I store the rest of the chars into a string. From there I now need to parse the string to get the coordinates out.

Another problem that was contributing to this was the way I was converting the latitude and longitude. The data comes in Determination Professor Blahnik suggested that I convert this into Degrees and fractional degrees, and this would give me six spots after the decimal giving me more accurate readings. I plan to implement this new conversion as so as I finish parsing out the NMEA string.

3/25/2009

The past week and half has proved to be the best so far in the development of my program. I implemented the new conversion to convert my latitude and longitude that I received from Mr. Blahnik. This new conversion is working a lot better than my original, and is giving me more accurate readings allowing me to more accurately plot buildings on campus. Monday this week I went outside to attempt to plot some points around Cofrin Hall. I went out there nervous because my last attempt failed, and if this one did to I was unsure what would be in store for my project. As I got outside and began to walk around, my readings began to change, what seamed to be about every 15 - 20 feet. Of course I was ecstatic, because this meant I could move forward with my project.

I then went to each corner of the building and plotted points using the small program that I wrote earlier which saved points and the label of the points in a text file. When plotting the points I made sure to include sidewalks that were close by since that is where people will most likely be walking when they are touring the campus, and I want to make sure the program will know what building they are looking at. I then went back home and incorporated these points into my main program. I had the GPS check if my current location was within the box I had just plotted and if it was I displayed the Cofrin Hall dialog.

Also during the past few days I took the time to make my final program a bit more visually appealing. I made graphics for both the main page and the Cofrin Hall page. I also added a dialog that allows you to see your current GPS location, and placed graphics in that dialog also. I am currently in the process of taking screen shots and putting them in a PDF so I can add them to my project page. In the mean time I have my first walk through with the class today, and hope to get some good feedback, and some suggestions and what they think I should add to make my project better.

4/2/2009

This week I was able to implement a few new features to add to the functionality and ease of usability to my program. The first thing I added was an interactive map on the main screen. Now when you first visit the program the GPS device is automatically disconnected and must be turned on via the menu strip at the top of the dialog. I decided to start with the GPS disconnected so that a user can not have the GPS plugged in and still use the program and all of its features. With my new interactive map a user simply mouses over a building on the map and it displays the name of the building. A user can then click on the building and the dialog will display the same way it would as if you were to walk near the building with the GPS device on. Another feature I added was a distance feature. This feature requires the GPS device to be activated and will tell you exactly how many feet you are from a building of interest. (ex Bemis, Cofrin, JMS) This can help users know exactly how far the next building of interest is away and can help them determine which building to visit next.

Also this week I ordered another GPS device. This time I decided to go with a Bluetooth device so that my phone can pick it up and use it. I am hoping that a lot of my code is portable over to my phone since it is the same manufacturer and same NMEA v3.00 standard. I hope to have some test applications on my phone towards the end of next week or earlier the following week depending on when the GPS gets here.

4/9/2009

This week I received my bluetooth GPS. I'm currently looking into how to create/load programs for my specific model of phone. I have made a connection with my phone and installed windows live which gives me maps and shows me my current location. I plan on creating a small program for my phone that will show a user their currently location, and distances to buildings around the campus. I believe that by showing distances to buildings will prove a concept that the GPS is reading your location and changing the distances as you approach the building.

This week I also took more pictures for my project to add to each buildings dialogs. Since it is nice out I am currently working to change how I plotted my buildings locations. I want to add a few "in between" areas that will tell you that a building is on your left and another on your right instead of trying to have a fine line between buildings which can put a user in one building when they are technically in between two. To do this I will have to take several readings around buildings instead of just the four corners, but in the end I think it will add to the functionality.

4/16/2009

As I stated last week I received my bluetooth GPS. During the course of this week I developed a program that utilized both my GPS and my cell phone. I was able to write the program using a C# mobile project. It doesn't have all the features a regular C# project has, but it is very similar. I did encounter a few problems when trying to code in the mobile environment. I found that I am not able to invoke a control inside a worker thread. To get around this and be able to update things like text boxes and labels I was forced to use delegates which added to the length of my code. After getting past this minor annoyance I was able to get the program to display a current GPS reading, and also give the user the option to open another dialog which displayed the distances to a few buildings on campus from the current location. Another annoyance I found was how I had to continually deploy the program to my cell phone. I was forced to compile the program in C#, then deploy it to my phone using active sync (which comes with my phone). The annoyance here is once I closed the program it couldn't be reopened unless I deployed it again from my PC. The way around this is creating a .cab file which installs the program onto the phone.

Since I now have GPS on my phone this made it much more convenience to plot buildings. I added a feature on my phone that allowed me to save coordinates to a text file and label those coordinates similar to how I plotted them on my PC. Now if I decide I want to change the readings for a building and get some new readings I don't have to drag my laptop around the campus.

Another discovery I had this week was readings on a cloudy day. I've said this before but I still think that when it comes to the usb powered GPS and a cloudy day there just isn't enough power going to the GPS to get good readings. I tried to plot some buildings on Monday which was a windy over cast day and I had a very hard time getting the coordinates to change. I still think this has to do with the lack of power the usb port is putting out to my GPS device. Later in the week it was a nice sunny day and I didn't have any problems at all. This monday is suppose to be another overcast day and I am interested to see how the bluetooth device acts because it is running off a rechargeable batter instead of the power from my usb port.

4/23/2009

Next week we are presenting our final projects to our peers and professors. As this week comes to an end I am starting to tie up lose strings. I thoroughly commented both my pc version of my campus tour system, and my phone version of my campus tour system. I am beginning to to gather information for my presentation and decide on a format for it. I am unsure how I am going to do a live demonstration, since for the GPS portion to work you have to be moving around campus. I will probably end up taking video to prove that it works. I do have the non-GPS part which does the same as the GPS other than the user must open the dialogs for the building they desire.

The things I finished up as far as programming are very minor. I plotted coordinates for the two remaining buildings (JMS, Bemis), and also got coordinates for the front doors of the two buildings so I could get the distance to that building. I also finished up taking video of all three buildings, edited the video, and placed it into my dialogs. The only thing I really have left is taking video of the project working for my presentation, and gathering more information for my defense and presentation.

5/1/2009

On Thursday I presented my project to the CS faulty and students. Throughout the week I had a few minor preparations I had to go through. I added a change comport dialog so any computer, and any comport can be used. I also created my power point for my presentation which can be viewed here.

Since this will be my last entry I just like to say I enjoyed doing this project throughout the semester. As you can see my reading my pervious journal entire's I had several ups and downs with my project but the end product makes it all worth it. I'd like to say thanks to all the CS faculty and fellow students who helped me get through this project and provided input