Friday, July 29, 2005

Failure!

Initial tests resulted in complete failure. Not because of the microphone, not because of the dongle, not caused by too much noise, but the stinkin' remote desktop conenction. For what ever reason I could not keep a stable remote desktop connection long enough to copy the blue tooth install over and run it. Finally I got the dongle installed and had to reboot, but after that never made another remote desktop connection. I could not set up the mic to connect. Oh well, guess I will just have to suffer one more trip with out the ability to chaneg songs. Hopefully I will be able to get it to work on Monday when I get back.

Wednesday, July 27, 2005

Success

The new microphone is a success. For once, I actually had to read the instructions. I never would have guessed that holding down the button on the microphone for 4 seconds turned it on and 10 seconds put it in roaming mode to connect to the PC. So far I have only tested it inside using my laptop. It has a pretty high quality reception. The only thing I am worried about is it seems to pick up everything in the room some. Hopefully this will not be a problem in the car. So far it seems like the perfect solution to go with my software. I am going to be taking a small road trip this weekend so hopefully I can get it all up and running tomorrow after work in teh car for a long weekend test. I will let you know the results for my first in car tests tomorrow night.

Tuesday, July 26, 2005

Hard Drive

A box arrived today. It was my hard drive. I was a bit sad that I have yet to recieve my bluetooth headset, but it is scheduled to arrive tomorrow. I own a bunch of these Maxtor hard drives and they all perform wonderfully. This one is no exception. It has already been installed adn being loaded with back ups from multiple computers. Come back tomorrow for my first impressions of the bluetooth microphone and dongle.

Thursday, July 21, 2005

Online Shopping

Once you get me going, I can't stop. I just found this great deal on a Hard drive, 200GB for $70 with OUT REBATES. Can't beat that. Check it out. http://shop2.outpost.com/product/3492233
I am going to use it for backups. All to ofton files get lost to a failing hard drive, but not any more :-)

Credit Card + Paycheck = $$$

After my desire last night to have a good quality microphone to pair up with my car computer, I ran into the bluetooth head set below. After a bit of thinking today I decided why not and ordered it a few minutes ago coupled with the Linksys Bluetooth dongle seen here.

Being home for the summer working sure make me more willing to buy a few fun things here and there. I still can't seem to get myself to spend $300+ for a touch screen though. Thats ok as this will compliment my voice recognition software front end nicely. I have a feeling my future posts are going to turn more towards the software updates as I test this puppy out. Don't worry, a review of the device will be posted as soon as it gets here. Well, time to get some more work done to help pay for this thing.

Mic Noise

In the description of my carpc application, I mention voice activation. Since i do not own a touch screen, I am attempting use voice control for the majority of the functions. Coding for this has been relatively easy, it has come down to the mic wiring that stinks. Massive amounts of moise are being introduced into the wire, making any distinguishable words disappear. That is why I am now looking at this:


http://www.newegg.com/Product/Product.asp?Item=N82E16826106934


I has been debating purchasing a bluetooth mic to use with the system. This will allow wireless connectivity to the PC and the mic to be very close to my mouth.


My other option is to purchase a usb microphone. This will hopefully also lower the interference that is ruining my voice rec. experience. Hopefully I can reach a decision soon and post results.

Tuesday, July 19, 2005

Heat = Bad

As the title says, heat is bad. Summers in southern Illinois don't get extremely hot, but temperatures in the high 90's is not rare. part of the car computer is being able to access the internet and local wireless network from within the car. This is used to transfer files, remote desktop for service, and access the internet. As seen in the post below, I placed my linksys wifi adapter in the rear against the back window. This allowed me to have high signal strength while living in my college apartment. I was able to have a good signal parked a block away. Since moving back home, the summer heat has set in. That pretty wifi adapter has taken a new shape...





As you can see, it is not quite the shape you would expect.







The whole side was split open and the top was sitting lose.







From the side you can get a better idea of how the once flat surface have been molded by the summer sun.









On a side note, the computer could care less about the added heat. I have never had a problem during the summer. The only weather related problem I have encountered was last winter while visiting Michigan. It dropped to sub zero temperatures. Power on resulted in a loud sound coming from the hard drive as it attempted to spin up. A few days sitting in the warm house and all was good.

Monday, July 18, 2005

MySunfire.Com

Yahoo! MySunfire.com is now the official link for this site. After countless years of designing web sites of other people, I finally have purchased my first domain name for personal use. I am not quite sure why I have never done it before, but it sure is nice having a real address to give to people. Spread the word and more updates to come in the next few days.

Sunday, July 17, 2005

Newsletter & Xml Feed

Sign up to recieve the weekly new letter that contains information on the updates that had occured over the previous week.

The sign up form is located at the bottom of this page.


I also added an Atom Xml Feed link for MySunfire.Com.
You can subscribe to it here: http://mysunfire.com/atom.xml

Thursday, July 14, 2005

Tail.Net Update

I have been using this program a lot at work over the last few days. It has really made my life a lot easier, but a few things could be improved upon. I added an open screen that will allow you to select a previous file in order of last viewed. This will make working through the folders to find the popular files a thing if the past. Another small update lets you see the time the file was last updated to the screen. This provides you this a quick way to see if the file has been updated recently. Also, A new icon was added to replace the ugly .Net default. You will have to check it out to see it! hehe. Download link is the same:

http://MySunfire.Com/Downloads/tail.zip

Sunday, July 10, 2005

Tail

On unix there are tons of little tools that are useful when working on a program. Tail shows the end of a file and tail -f will watch the file for changes and show them. This makes tail very yseful for watching file that are being written out to disk like logs files. I wanted a simple version of this tool for windows so I wrote one in VB.Net yesterday.


You can download the program from http://mysunfire.com/Downloads/tail.zip

The code for this program is very simple. It consists of a new win form project with a textbox set to dock fill.


Private FilePath As String
Private FileName As String
Private WithEvents Watcher As IO.FileSystemWatcher

Private Sub frmTail_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
'Open Dialog to ask for file to tail
Dim diag As New OpenFileDialog
diag.InitialDirectory = "c:\"
diag.ShowDialog()
FilePath = diag.FileName

'Show File
ShowFile()

'Set up file watcher
Watcher = New IO.FileSystemWatcher(FilePath.Substring(0, FilePath.LastIndexOf("\") + 1))
Watcher.EnableRaisingEvents = True

'Sub string off file name
Filename = FilePath.Substring(FilePath.LastIndexOf("\") + 1)

Catch ex As Exception
MessageBox.Show("Error Opening file!")
Me.Close()
End Try
End Sub

Private Sub Watcher_Changed(ByVal sender As Object, ByVal e As System.IO.FileSystemEventArgs) Handles Watcher.Changed, Watcher.Deleted, Watcher.Created
'if file have changed then reload it
If e.Name = Filename Then
ShowFile()
End If
End Sub

Private Sub ShowFile()
Try
'Wait for the file to finish being saved byh other program
Threading.Thread.Sleep(10)

'Open file reader and load the end of the file
Dim rdr As New IO.StreamReader(FilePath)
Dim text As String = rdr.ReadToEnd
If text.Length > 10000000 Then
text = text.Substring(text.Length - 10000000)
End If

'Store it to the text box
txtFile.Text = text
rdr.Close()

'Scroll to the end so the bottom is always shown
txtFile.Select(txtFile.Text.Length, 0)
txtFile.ScrollToCaret()
Catch ex As Exception
'If the file was not accessable for what ever reason
End Try
End Sub

Thursday, July 07, 2005

Pictures Hot off the Camera! (Part 1)

Tonight instead of building the false floor, I decided to get everything cleaned up and working. Almost all of the wires are hidden from view and everything is in workign order. The amp is screwed down. The sub box is braced in the corner for now with small pieces of wood screw to the floor. The PC stays in place on its own to be honest but I added two large screws in front of it just to help hold it in place. I also tested out the red lights. they are both on top of each other right now for testing but light up the trunk pretty well as-is. Overall, tonight was pretty productive! Let me know what you think so far.




Pictures Hot off the Camera! (Part 2)





Wednesday, July 06, 2005

New Trunk Layout

I started rearranging the trunk tonight. I spent a good deal of time moving things around, searching for what I believe is the best layout possible that will look cool and still have maximum trunk space. This is my plan so far.


I have found that I can stand up the computer case in the far left corner in the space behind the wheel. If I remove one of the case side braces that it will not get hit by the trunk lid supports as the trunk closes.

The sub is now placed in the far back right corner. This will leave a large square space between the sub and left side to place bigger items in the trunk.

The amp is going to sit directly in from of teh amp, pushed to the right as far as possible. A false floor is going to be built up over the amp to hide all the wires, protect the amp from water when opening the trunk, and allow items to be placed onto of the false floor. The floor is outlined in green. the center square on the floor is going to be a window showing off the amp. there will also be vents and/or a fan to circulate the air on the left side of the box.

There is also going to be a change in lighting. I have a pair of red lights that will replace the stock trunk light. It is very dim and the 2 red lights should go nice with the red bass strength and red lights throughout my interior.

Before tonight I had the sub and amp installed but the wires were a mess. Tonight I reran all the wires behind the side wall carpet or under the floor carpet. It all looks sharp! Tomorrow will be the the making of the false floor and final mounting of the PC case. Finally, everything is comming together!

Tuesday, July 05, 2005

Car PC Pics

By Request: :-)


PC Sitting in my room




PC in car trunk



PC in car trunk zoom out for size


Linksys USB G Wifi Adapter


Microphone for voice input

The box is made of wood. Hopefully I am going to be making this all smaller and shove it back in the corner behind the tail light. Free time permitting....




Coding Objects

Well, as said long ago, I am writing my own program to control the computer placed in my car. It is written almost exclusively in vb.net with a few classes written in C#. I am very object oriented in my coding style. Everything is represented by string objects that wrap the waned functionality into an easy to use object. Here I will discuss a few of the classes and how they are designed.
The following is the layout for my description:

  • Project
    • Class
      • Object/Functionality
Well, here it goes...
  • Car Amp - Contains all the forms for the entire application
    • frmAddress
      • In the future will be a complete address book with Sync with MS Outlook 1/2 complete
    • frmAlbum
      • Access Music library via album
    • frmArtist
      • Access Music library via artist
    • frmEmail
      • Send/Recieve Email
    • frmExit
      • Closing menu with options to exit, shutdown, hibernate, or suspend
    • frmLauncher
      • Launch external application
    • frmMapPoint
      • Give embedded control to MamPoint maps
    • frmMenu
      • Main menu to access all other forms
    • frmMiniMode
      • Small screen mode
    • frmPictureViewer
      • Integrated Picture slideshow
    • frmPlaylist
      • Edit current playlist
    • frmProgress
      • Custom progress bar for loading unknow size/length item
    • frmSkin
      • Select the current skin to be used
    • frmSync
      • Control all aspects of the file sync options
    • frmVoiceCommands
      • Edit voice rec. preferences
    • frmWeather
      • Recieve weather updates via web
    • Main
      • Init of all items
    • PluginInterfaceImplementation
      • .Net Remoting Remote Control Interface
  • Custom Controls
    • Clock
      • Custom Clock Control
    • PictureButton
      • Custom picture box to be a skinnable button with mouse down effects
    • TextButtom
      • Custom buttom with mouse down effects
  • FileSync
    • FileFunctions
      • Handles file copy other misc functions
    • FileLoctions
      • Class to hold sync source, destination and other options
    • FileSync
      • FileSync object
    • FileSyncOptions
      • Options for the sync class
    • FileSycWatcher
      • Custom file watcher to watch for a drive to be come available
  • GeneralClasses
    • DeleteFuctions
      • Delete files/directories even if readonly
    • FreeMemory
      • Gets the amount of free main memory
    • Log
      • Advanced Logging Class
    • SpeedTimer
      • Used to time different functions for speed performance
  • ImagePoints
    • Bacis Skin Utility
  • KBTextbox
    • Custom Textbox that uses the custom buttom to show an onscreen keybpard when a textbox is clicked on
  • Mp3Tag (C#)
    • Used to modify mp3 tags
  • Music File
    • AudioCD
      • USed to play Audio CD's put in the cdrom
    • DirectXMusic
      • Class used to handle the directx playing of a audio file
    • DirectXVideo
      • Class used to handle the directx playing of a video file
    • Player
      • Media player Logic that combines all teh other classes in this project
    • Playlist
      • Contains a list of Song objects and has various functions
    • Song
      • Object of a single song
    • State
      • The current state of a player instance
  • PluginInterface
    • ICarPlugin
      • Contains the .Net Remoting interface for remote control of the Car Media Player
  • PluginTest
    • Test Plugin implementing the ICarPlugin interface
  • SpeechEngine
    • SpeakText
      • Wrapper for SAPI text to speech
    • SpeechEngine
      • Controls the voice detection and handles the events
  • XmlLibFunctions
    • Used to create Xml Playlists and the xml catalog of all music files
    • Contains advanced xml file access functions
  • RemoteCarWS
    • Proof of concept web service able to control the car player over the ICarPlugin interface
    • EX: WebPage -> RemoteCarWS -> ICarPlugin -> CarPlayer
To be added from other project
  • CarRipper
    • Rips CD inserted into Mp3 Format
    • FreeDb Lookup on CD info
  • Mp3 Retaggings service
    • Creates a fingerprint of an mp3 song, looks up the tag information and corrects it on the local machine.


Well, these features are all between 90-100% complete. When I stared this I didn't expect it to turn out so long but it helsp to explain how the application is structured and a few things that will be added in the future.

Wiring

So, have you been wondering how this all is wired into the car. Well, thats a story of its own.
Red = +
Black = -
Blue = + Accessory

As you can see, two wires have been run directly from the battery. First a 10 guage wire was run from the battery, fused with a 30 amp fuse, controlled by a relay, and attached to a second cigarette lighter plug. This controls the radar detector and switches it on and off with the car. My stock plug in powered on all the time.

Next, 4 guage wire was run to the trunk. This is fused with a 60amp fuse. It connects to a distribution block to divide the wire in two for the computer and amplifier. The blue accessory wire also runs along the side of the car to switch on the amp and teh relay that controls the computer. The computer is set to power on when power becomes present provided by the inverter.

Overall this system has turned out to be great! Tons of music and an Amazing sound system!