Sponsored links

Go Back   MP3Car.com > Mp3Car Technical > Software & Software Development > Front Ends > StreetDeck > DigitalMods (Scripts / API)


Reply
 
Share Thread Tools Display Modes
Old 08-13-2006, 04:57 PM   #1
Low Bitrate
 
aforget's Avatar
 
Join Date: Nov 2003
Location: Santa Cruz, CA, USA
Posts: 65
aforget is on a distinguished road
StreetDeck for a 1955 Buick

The Head Unit
The original “head unit” for my car was a 1 foot by 1 foot by 1 foot cube of vacuum tubes and gears. Welcome to the world of 1955 Buicks! I have shaved the face off of it and thrown away the rest. I have modified it to include a Phigit Text LCD that has a built in Phigit 8/8/8 interface (8 digital in, 8 digital out, and 8 analog in).


This picture shows a matrix orbital LCD instead of the new Phigit.




Here is how it look in my car today. I am rebuilding the whole system to use StreetDeck and some of the gear from Phigits.


The LCD

The Phigit LCD will sit just above the original 5 radio control buttons. I will cover the LCD with a clear thin glass or plastic. Paint the interior of this glass or plastic black except where the actual characters display. Leave clear area for the LED’s. We will label the buttons on the interior of the glass.


With the unit turned off, it should appear with only the alarm LED lit:


With the unit turned on:


Problem: How do I get notification from StreetDeck that a new artist/song has transpired so I can update the LCD?
4 Led’s
1. Red. Powered from Phigit LCD Display output. So I can send a warning. Use the phigit output ground and the #0 output channel.

Problem: How can I set some threshold on speed, rpm, etc so that I can sense when to turn this LED on? This is not critical. I really have no idea what event I would like to trigger this LED. I am sure something cool will turn up.

2. Green. Powered from 12 V power on. So I can see when the computer is on.
3. Green. Connected to long lead. Will connect at later point to power supply external indicator LED.
4. A Red LED that is currently under the dash associated with the alarm system.

3 Analog Inputs
1. “Volume” on outer left knob.
2. “Tone” on inner left knob.
3. Temperature probe.

Problem: What API do I use with StreetDeck to set volume at a specific level? When my volume knob is at 40%, I would like to set system volume at 40%.

Problem: I have this great tone analog input associated with the old 1955 Buick Sonomatic tone control. Any idea what I can do with it?

Problem: How do I set a variable in StreetDeck that represents my temperature so I can display it in a custom dynamic label? How do I update new temperatures to StreetDeck?

5 Digital Inputs
These will map directly to the 5 buttons on the face. The underlying switches can be normally open or normally closed. It doesn’t matter. Just make them all the same.

I understand that I can use the Windows SendMessage API to send messages to StreetDeck. No real problem here.

Power On/Off
The left knob has a power on/off associated with the volume control. This will be the signal to the computer to turn itself on /off. It is NOT fed by ACC. It will have always on 12V so I can play the thing with the key off.

Encoder
The right knob will connect to an encoder. In addition to unlimited clockwise and counter-clockwise movement, it has a press button capability. It is fed by USB.

Problem: I want to scroll down when the encoder is turned to the right and scroll up when turned to the left. I want to “select” when the encoder is pressed.

7 Button Face

The 7-button face has 7 buttons with integrated LEDs. The concept is that I can press the XM button and go to the satellite screen in StreetDeck. A Phigit 8/8/8 Interface Kit will control the 7 button face. It will detect when a button is pressed and light the appropriate LED and send a Windows SendMessage API to StreetDeck to go to the proper module.

Problem: I want to change the LED’s based upon input from the StreetDeck interface, also. To do this, I will need to know when StreetDeck changes modes. For example, if StreetDeck changes from XM to MP3, I need some sort of signal that this has happened so I can turn off the XM LED and turn on the MP3 LED.
__________________
Andy
55 Buick Carputer - http://www.55buick.com/Carputer/carputer.htm
aforget is offline   Reply With Quote
Advertisement
 
Advertisement
Sponsored links

Old 08-13-2006, 05:31 PM   #2
Raw Wave
 
god_of_cpu's Avatar
 
Join Date: Jan 2004
Location: SilverSpring Maryland
Posts: 2,960
god_of_cpu has a reputation beyond reputegod_of_cpu has a reputation beyond reputegod_of_cpu has a reputation beyond reputegod_of_cpu has a reputation beyond reputegod_of_cpu has a reputation beyond reputegod_of_cpu has a reputation beyond reputegod_of_cpu has a reputation beyond reputegod_of_cpu has a reputation beyond reputegod_of_cpu has a reputation beyond reputegod_of_cpu has a reputation beyond reputegod_of_cpu has a reputation beyond repute
Quote: Originally Posted by aforget View Post
Problem: How do I get notification from StreetDeck that a new artist/song has transpired so I can update the LCD?

You need to create a new script project and add a scripted overlay to it. Then create 1 second timer and call app.GetDynamicStringValue for the current media title. You'll have to remember the current title each time and check if its changed.


Quote: Originally Posted by aforget View Post
Problem: How can I set some threshold on speed, rpm, etc so that I can sense when to turn this LED on? This is not critical. I really have no idea what event I would like to trigger this LED. I am sure something cool will turn up.

In that same timer you can also check NAV.GetSpeed(). Version 1.0.5.5 will also add a NAV.GetMetric() function that will let you get information like the distance to the next turn so you could set the light to come on when you get near a turn in your route.

Quote: Originally Posted by aforget View Post
Problem: What API do I use with StreetDeck to set volume at a specific level? When my volume knob is at 40%, I would like to set system volume at 40%.

Use App.SetVolume


Quote: Originally Posted by aforget View Post
Problem: I have this great tone analog input associated with the old 1955 Buick Sonomatic tone control. Any idea what I can do with it?

Lots of things. For example, you can set it as a nav zoom, page up / page down, or 3d module switching.

Quote: Originally Posted by aforget View Post
Problem: How do I set a variable in StreetDeck that represents my temperature so I can display it in a custom dynamic label? How do I update new temperatures to StreetDeck?

You add a label to your scripted overlay you created earlier, then just update it in the overlay script whenever you need to.

Quote: Originally Posted by aforget View Post
Problem: I want to scroll down when the encoder is turned to the right and scroll up when turned to the left. I want to “select” when the encoder is pressed.

Just use the phidgets encoder plugin and configure it as shown here:
http://www.mp3car.com/vbulletin/streetdeck-f-q/68228-streetdeck-input-plugins-remotes-steering-wheel-controls-etc.html




Quote: Originally Posted by aforget View Post
Problem: I want to change the LED’s based upon input from the StreetDeck interface, also. To do this, I will need to know when StreetDeck changes modes. For example, if StreetDeck changes from XM to MP3, I need some sort of signal that this has happened so I can turn off the XM LED and turn on the MP3 LED.

You can't quite do this one now, but I will add a function to 1.0.5.5 called App.GetCurrentModuleName() that will return the name of the current module. In the same timer event in your Overlay, you will have to check the current module name against the names of the modules you want it to light up on and set the appropriate light.
__________________
StreetDeck.com Developer (I am Chuck)
Get StreetDeck at http://www.streetdeck.com
The Official StreetDeck Forums have moved, please visit us at http://www.streetdeck.com/forum for official support for Streetdeck.

Last edited by god_of_cpu; 08-13-2006 at 05:37 PM.
god_of_cpu is offline   Reply With Quote
Old 01-02-2007, 10:58 AM   #3
Low Bitrate
 
aforget's Avatar
 
Join Date: Nov 2003
Location: Santa Cruz, CA, USA
Posts: 65
aforget is on a distinguished road
Quote: Originally Posted by god_of_cpu View Post
You can't quite do this one now, but I will add a function to 1.0.5.5 called App.GetCurrentModuleName() that will return the name of the current module. In the same timer event in your Overlay, you will have to check the current module name against the names of the modules you want it to light up on and set the appropriate light.

I don't see this in the current API. Is there another method to get the current module name?
__________________
Andy
55 Buick Carputer - http://www.55buick.com/Carputer/carputer.htm
aforget is offline   Reply With Quote
Old 01-02-2007, 11:59 AM   #4
Raw Wave
 
god_of_cpu's Avatar
 
Join Date: Jan 2004
Location: SilverSpring Maryland
Posts: 2,960
god_of_cpu has a reputation beyond reputegod_of_cpu has a reputation beyond reputegod_of_cpu has a reputation beyond reputegod_of_cpu has a reputation beyond reputegod_of_cpu has a reputation beyond reputegod_of_cpu has a reputation beyond reputegod_of_cpu has a reputation beyond reputegod_of_cpu has a reputation beyond reputegod_of_cpu has a reputation beyond reputegod_of_cpu has a reputation beyond reputegod_of_cpu has a reputation beyond repute
I just verfied with 1.0.6.3. App.GetCurrentModuleName() is exposed and working.
__________________
StreetDeck.com Developer (I am Chuck)
Get StreetDeck at http://www.streetdeck.com
The Official StreetDeck Forums have moved, please visit us at http://www.streetdeck.com/forum for official support for Streetdeck.
god_of_cpu is offline   Reply With Quote
Old 01-02-2007, 07:52 PM   #5
Low Bitrate
 
aforget's Avatar
 
Join Date: Nov 2003
Location: Santa Cruz, CA, USA
Posts: 65
aforget is on a distinguished road
You are so right! I have to say that the .Net Plugins/Addins are fantastic! My project is finally off the ground. I highly appreciate it.
__________________
Andy
55 Buick Carputer - http://www.55buick.com/Carputer/carputer.htm
aforget is offline   Reply With Quote
Old 06-01-2007, 04:17 PM   #6
Low Bitrate
 
aforget's Avatar
 
Join Date: Nov 2003
Location: Santa Cruz, CA, USA
Posts: 65
aforget is on a distinguished road
I thought it might benefit some people to see the plugin code to accomplish some cool things with this setup.

Code:
using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; using System.Windows.Forms; using Phidgets; using Phidgets.Events; namespace BuickPhidget { [ GuidAttribute("69CECAE8-7125-4cf4-8726-AF40503CC406"), ProgId("StreetDeck.BuickPhidget"), ComVisible(true) ] public class Class1 : StreetDeck.IDualStreetDeckAddin { const int headUnitId = 22284; const int relayId = 29584; const int numheadUnitOptions = 16; const int refreshRate = 1000; // Clock time to check for updates. Time in mils enum buttonPanelValues:int { Home = 0, MP3 = 1, GPS = 2, XM = 3, Engine = 4, DVD = 5, AMFM = 6, Phone = 7 } enum musicMode : int { nowPlaying = 0, queue = 1, albums = 2, artist = 3, musicHome = 4, playlist = 5 } musicMode currentMusicMode = musicMode.nowPlaying; int numMusicModeOptions = 6; StreetDeck.StreetDeckApp app; StreetDeck.ScriptOverlay overlay; Timer Clock; string lastModule = ""; string lastArtist = ""; string lastSong = ""; InterfaceKit ifkit1, headUnit; InterfaceKit ifkit2, buttonPanel; InterfaceKit ifkit3, relay; Phidgets.Encoder enc; TextLCD lcd; int lastEncodedValue = 0; int lcdMode = 0; int insideTemperature = 0; int fuelLevel = 0; int dashboardDim = 0; string currentHeadUnitMode = ""; //This OnConnection event is where we create all of the modules and overlay streetdeck needs //This example creates one module and one overlay void StreetDeck.IDualStreetDeckAddin.OnConnection(object o, StreetDeck.enumAddinConnectMode e) { //Save a pointer to the StreetDeck App object for future reference app = (StreetDeck.StreetDeckApp)o; //Create an overlay that will contain the other controls. Overlays are global and will be shown //above every other module overlay = app.CreateOverlay("OverlayTest"); Clock = new Timer(); Clock.Interval = refreshRate; Clock.Start(); Clock.Tick += new EventHandler(Timer_Tick); // Get our first InterfaceKit going ifkit1 = new InterfaceKit(); ifkit1.Attach += new AttachEventHandler(ifkit_Attach); ifkit1.Detach += new DetachEventHandler(ifkit_Detach); ifkit1.open(); // Get our second InterfaceKit going ifkit2 = new InterfaceKit(); ifkit2.Attach += new AttachEventHandler(ifkit_Attach); ifkit2.Detach += new DetachEventHandler(ifkit_Detach); ifkit2.open(); // Get our third InterfaceKit going ifkit3 = new InterfaceKit(); ifkit3.Attach += new AttachEventHandler(ifkit_Attach); ifkit3.Detach += new DetachEventHandler(ifkit_Detach); ifkit3.open(); // Load the encoder enc = new Phidgets.Encoder(); enc.Attach += new AttachEventHandler(enc_Attach); enc.Detach += new DetachEventHandler(enc_Detach); enc.InputChange += new InputChangeEventHandler(enc_InputChange); enc.PositionChange += new EncoderPositionChangeEventHandler(enc_PositionChange); enc.open(); // Load the LCD lcd = new TextLCD(); lcd.Attach += new AttachEventHandler(lcd_Attach); lcd.Detach += new DetachEventHandler(lcd_Detach); lcd.open(); } void StreetDeck.IDualStreetDeckAddin.OnDisconnect() { //Unregister the events ifkit1.close(); ifkit2.close(); //module.OnExec -= new StreetDeck.IModuleEvents_OnExecEventHandler(module_OnExec); } public void Timer_Tick(object sender, EventArgs eArgs) { try { if (sender == Clock && lcd.Attached) { // See if the module has changed string currentModule = app.GetCurrentModuleName(); if (currentModule != lastModule) { lastModule = currentModule; //lcd.rows[0].DisplayString = currentModule; // The module has changed... We need to change the // status lights on the button pannel. string shorModuleName = currentModule.Substring(0,3); if (shorModuleName == "CMu") moduleChange(buttonPanelValues.MP3); else if (shorModuleName == "CNa") moduleChange(buttonPanelValues.GPS); else if (shorModuleName == "CXM") moduleChange(buttonPanelValues.XM); else if (shorModuleName == "CVe") moduleChange(buttonPanelValues.Engine); else if (shorModuleName == "CDV") moduleChange(buttonPanelValues.DVD); else if (shorModuleName == "CRa") moduleChange(buttonPanelValues.AMFM); else if (shorModuleName == "CBl") moduleChange(buttonPanelValues.Phone); } updateDisplay(); } } catch {} // If the phidget is not attached we don't want errors } void updateDisplay() { switch (lcdMode) { case 0: // Music currentHeadUnitMode ="Now Playing"; string currentArtist = app.GetDynamicStringValue(StreetDeck.enumDynamicLabelType.eDLTMediaArtist); if (currentArtist != lastArtist) { lastArtist = currentArtist; lcd.rows[0].DisplayString = currentArtist; } string currentSong = app.GetDynamicStringValue(StreetDeck.enumDynamicLabelType.eDLTMediaTitle); if (currentSong != lastSong) { lastSong = currentSong; lcd.rows[1].DisplayString = currentSong; } break; case 1: // Time Left currentHeadUnitMode = "Media Time Left"; lcd.rows[0].DisplayString = "Media Time Left"; lcd.rows[1].DisplayString = app.GetDynamicStringValue(StreetDeck.enumDynamicLabelType.eDLTMediaTimeLeft); break; case 2: // media Type currentHeadUnitMode ="Media Type"; lcd.rows[0].DisplayString = "Media Type"; lcd.rows[1].DisplayString = app.GetDynamicStringValue(StreetDeck.enumDynamicLabelType.eDLTMediaType); break; case 3: // Distance currentHeadUnitMode = "Distance to Destination"; lcd.rows[0].DisplayString = "Distance to Destination"; lcd.rows[1].DisplayString = app.GetDynamicStringValue(StreetDeck.enumDynamicLabelType.eDLTNAVDistanceToDest); break; case 4: // direction currentHeadUnitMode = "Heading"; lcd.rows[0].DisplayString = "Heading"; lcd.rows[1].DisplayString = app.GetDynamicStringValue(StreetDeck.enumDynamicLabelType.eDLTNAVHeading); break; case 5: // Navigation Turn currentHeadUnitMode = "Next Turn"; lcd.rows[0].DisplayString = "Next Turn"; lcd.rows[1].DisplayString = app.GetDynamicStringValue(StreetDeck.enumDynamicLabelType.eDLTNAVNextStreet); break; case 6: // Speed currentHeadUnitMode = "Speed"; lcd.rows[0].DisplayString = "Speed"; lcd.rows[1].DisplayString = app.GetDynamicStringValue(StreetDeck.enumDynamicLabelType.eDLTNAVSpeed); break; case 7: // Temperatrue lcd.rows[0].DisplayString = "Temperature"; currentHeadUnitMode = "Temperature"; lcd.rows[1].DisplayString = Convert.ToString(insideTemperature)+"F"; //app.GetDynamicStringValue(StreetDeck.enumDynamicLabelType.eDLTHWStatusTemperature); break; case 8: // City State Location lcd.rows[0].DisplayString = "Location"; currentHeadUnitMode = "Location"; lcd.rows[1].DisplayString = app.GetDynamicStringValue(StreetDeck.enumDynamicLabelType.eDLTNAVCityStateZip); break; case 9: // Current Module currentHeadUnitMode = "Module"; lcd.rows[0].DisplayString = "Module"; lcd.rows[1].DisplayString = app.GetCurrentModuleName(); break; case 10: // Time Left currentHeadUnitMode = "Media Duration"; lcd.rows[0].DisplayString = "Media Duration"; lcd.rows[1].DisplayString = app.GetDynamicStringValue(StreetDeck.enumDynamicLabelType.eDLTMediaDuration); break; case 11: // Time currentHeadUnitMode = "Current Heading"; lcd.rows[0].DisplayString = "Heading"; lcd.rows[1].DisplayString = app.GetDynamicStringValue(StreetDeck.enumDynamicLabelType.eDLTTime); break; case 12: // Time currentHeadUnitMode = "Time to Destination"; lcd.rows[0].DisplayString = "Time to Destination"; lcd.rows[1].DisplayString = app.GetDynamicStringValue(StreetDeck.enumDynamicLabelType.eDLTNAVTimeToDest); break; case 13: // Logo currentHeadUnitMode = "Nineteen fifty-five Buick special"; lcd.rows[0].DisplayString = " 1955"; lcd.rows[1].DisplayString = " BUICK SPECIAL"; break; case 14: // Fuel currentHeadUnitMode = "Fuel Level"; lcd.rows[0].DisplayString = "Fuel"; lcd.rows[1].DisplayString = Convert.ToString(fuelLevel); // Read from Voltage sensor. break; default: lcdMode = 0; break; } } void buttonPanel_InputChange(object sender, InputChangeEventArgs e) { if (e.Value) // We don't want to run this on up and down push of hte button { switch ((buttonPanelValues)e.Index) { case buttonPanelValues.Home: //inputCheckBox0.Checked = e.Value app.SendFunction(StreetDeck.enumSDFunctions.eFunctionHome); lcd.rows[0].DisplayString = "Home"; break; case buttonPanelValues.MP3: app.SendFunction(StreetDeck.enumSDFunctions.eFunctionMusic); lcd.rows[0].DisplayString = "MP3"; currentMusicMode = (musicMode)((int)((int)currentMusicMode + 1) % numMusicModeOptions); switch (currentMusicMode) { case musicMode.nowPlaying: overlay.Exec("CMusicNowPlayingModule"); break; case musicMode.queue: overlay.Exec("CMusicNowPlayingModule"); break; case musicMode.albums: overlay.Exec("CMusicAlbumStringColModule"); break; case musicMode.artist: overlay.Exec("CMusicArtistStringColModule"); break; case musicMode.musicHome: overlay.Exec("CMusicModule"); break; case musicMode.playlist: overlay.Exec("CMusicPlaylistModule"); break; default: break; } break; case buttonPanelValues.GPS: app.SendFunction(StreetDeck.enumSDFunctions.eFunctionNavigation); lcd.rows[0].DisplayString = "GPS"; break; case buttonPanelValues.XM: app.SendFunction(StreetDeck.enumSDFunctions.eFunctionXMRadio); lcd.rows[0].DisplayString = "XM"; break; case buttonPanelValues.Engine: app.SendFunction(StreetDeck.enumSDFunctions.eFunctionVehicle); overlay.Exec("CVehicleGraphOBDIIModule"); lcd.rows[0].DisplayString = "Engine"; buttonPanel.outputs[(int)buttonPanelValues.Engine] = true; break; case buttonPanelValues.DVD: app.SendFunction(StreetDeck.enumSDFunctions.eFunctionDVD); lcd.rows[0].DisplayString = "DVD"; break; case buttonPanelValues.AMFM: app.SendFunction(StreetDeck.enumSDFunctions.eFunctionRadio); lcd.rows[0].DisplayString = "AM/FM"; break; case buttonPanelValues.Phone: app.SendFunction(StreetDeck.enumSDFunctions.eFunctionBluetoothModule); lcd.rows[0].DisplayString = "Phone"; break; default: break; } moduleChange((buttonPanelValues)e.Index); } } void moduleChange(buttonPanelValues v) { // first turn everything off for (int i = 0; i < 8; i++) buttonPanel.outputs[i] = false; // Now, turn on the specific value buttonPanel.outputs[(int)v] = true; // Then, light up the music/satalite/DVD button if they are playing string mediaType = app.GetDynamicStringValue(StreetDeck.enumDynamicLabelType.eDLTMediaType); if (mediaType == "Music") buttonPanel.outputs[(int)buttonPanelValues.MP3] = true; if (mediaType == "Satelite") buttonPanel.outputs[(int)buttonPanelValues.XM] = true; if (mediaType == "DVD") buttonPanel.outputs[(int)buttonPanelValues.DVD] = true; lastModule = app.GetCurrentModuleName(); // so we won't detect amodule change. // make sure the radio anteana is up if we are in radio mode if (v == buttonPanelValues.AMFM) relay.outputs[0] = true; else relay.outputs[0] = false; } // There are currently no sensors on this interface kit. void buttonPanel_SensorChange(object sender, SensorChangeEventArgs e) { } void headUnit_InputChange(object sender, InputChangeEventArgs e) { if (e.Value) // We don't want to run this on up and down push of the button { switch (e.Index) { case 0: //Togle display mode lcdMode = (lcdMode + 1) % numheadUnitOptions; // lcd.rows[0].DisplayString = "LcdMode " + Convert.ToString(lcdMode); lastArtist = ""; // force redisplay of current artist lastSong = ""; updateDisplay(); app.SpeechController.Speak(currentHeadUnitMode); break; case 1: app.SendFunction(StreetDeck.enumSDFunctions.eFunctionTogglePause); app.SpeechController.Speak(app.GetDynamicStringValue(StreetDeck.enumDynamicLabelType.eDLTMediaState)); break; case 3: app.SendFunction(StreetDeck.enumSDFunctions.eFunctionNext); app.SpeechController.Speak("Next"); break; case 2: app.SendFunction(StreetDeck.enumSDFunctions.eFunctionPrevious); app.SpeechController.Speak("Previous"); break; case 4: app.SendFunction(StreetDeck.enumSDFunctions.eFunctionFF); app.SpeechController.Speak(app.GetDynamicStringValue(StreetDeck.enumDynamicLabelType.eDLTMediaState)); break; default: break; } } } void headUnit_SensorChange(object sender, SensorChangeEventArgs e) { switch (e.Index) { case 0: //Volume Knob uint vol = (uint)(1000 - e.Value) / 10; app.SetVolume(StreetDeck.enumVolumeTypes.eVTMaster, vol); break; case 1: // Inner Tone knob if (e.Value < 500) app.SendFunction(StreetDeck.enumSDFunctions.eFunctionSetNightMode); else app.SendFunction(StreetDeck.enumSDFunctions.eFunctionSetDayMode); break; case 2: // Temperature insideTemperature = (9 / 5) * ((e.Value - 200) / 4) + 32; break; case 3: //Fuel Sensor fuelLevel = (e.Value - 553) / (739-553) * 100; //739 ; //app.SetVolume(StreetDeck.enumVolumeTypes.eVTMaster, vol); break; case 7: // Dashboard light dimmer dashboardDim = (e.Value - 553) / (739 - 553) * 100; break; default: break; } } void ifkit_Detach(object sender, DetachEventArgs e) { } private void ifkit_Attach(object sender, AttachEventArgs e) { InterfaceKit phid = (InterfaceKit)sender; switch (phid.SerialNumber) { case headUnitId: // Head Unit phid.SensorChange += new SensorChangeEventHandler(headUnit_SensorChange); phid.InputChange += new InputChangeEventHandler(headUnit_InputChange); headUnit = phid; break; case relayId: // The relay relay = phid; break; default: // The button pannel phid.SensorChange += new SensorChangeEventHandler(buttonPanel_SensorChange); phid.InputChange += new InputChangeEventHandler(buttonPanel_InputChange); buttonPanel = phid; // Turn everything on to show that we are working for (int i = 0; i < 8; i++) buttonPanel.outputs[i] = true; break; } } // If you rotate the encoder, then do function up or down. void enc_PositionChange(object sender, EncoderPositionChangeEventArgs e) { switch (e.Index) { case 0: if (enc.encoders[0] > lastEncodedValue) app.SendFunction(StreetDeck.enumSDFunctions.eFunctionUp); else app.SendFunction(StreetDeck.enumSDFunctions.eFunctionDown); lastEncodedValue = enc.encoders[0]; break; default: break; } } // If you press the encoder in, then emit "OK". void enc_InputChange(object sender, InputChangeEventArgs e) { switch (e.Index) { case 0: app.SendFunction(StreetDeck.enumSDFunctions.eFunctionOk); break; default: break; } } void enc_Detach(object sender, DetachEventArgs e) { } void enc_Attach(object sender, AttachEventArgs e) { Phidgets.Encoder phid = (Phidgets.Encoder)sender; } void lcd_Detach(object sender, DetachEventArgs e) { } void lcd_Attach(object sender, AttachEventArgs e) { Phidgets.TextLCD phid = (Phidgets.TextLCD)sender; lcd.rows[0].DisplayString = " 1955"; lcd.rows[1].DisplayString = " BUICK"; } } }

As always with software, this is version 0.1. I still have to add support for my HQCT-eA. That should be fun!
__________________
Andy
55 Buick Carputer - http://www.55buick.com/Carputer/carputer.htm
aforget is offline   Reply With Quote
Old 06-01-2007, 04:36 PM   #7
Constant Bitrate
 
sharpmat007's Avatar
 
Join Date: Nov 2006
Location: Washington, DC
Posts: 211
sharpmat007 is an unknown quantity at this point
Nice...ever since I put an infill t3 in my dash I lost most of the functions of the stock lcd display(06 eclipse). I was planning on getting the phigidts lcd display (http://www.phidgets.com/index.php?mo...emview&IID=116), but knew I had some work to with coding. You are gonna save a lot of people some work!!!

Got any pics/vids of the everything in action?
__________________
Mitsubishi Eclipse 2006 GT
Infill T3 running StreetDeck
sharpmat007 is offline   Reply With Quote
Old 06-01-2007, 07:26 PM   #8
Low Bitrate
 
aforget's Avatar
 
Join Date: Nov 2003
Location: Santa Cruz, CA, USA
Posts: 65
aforget is on a distinguished road
There is nothing like pushing a button. Touch screens are cool, but I'm old fashioned as far as needing to push buttons! The Phidget LCD is still sitting in the front seat waiting for me to have time to tear my dash apart and put it in (about 4 hours) and then put it back together (another 4 hours).

Here is a blurry photo from today:



I need to quit drinking so much coffee!
__________________
Andy
55 Buick Carputer - http://www.55buick.com/Carputer/carputer.htm
aforget is offline   Reply With Quote
Sponsored links
Advertisement
 
Advertisement
Old 06-02-2007, 11:46 AM   #9
Low Bitrate
 
aforget's Avatar
 
Join Date: Nov 2003
Location: Santa Cruz, CA, USA
Posts: 65
aforget is on a distinguished road
Better photo.
__________________
Andy
55 Buick Carputer - http://www.55buick.com/Carputer/carputer.htm
aforget is offline   Reply With Quote
Old 07-29-2007, 02:01 PM   #10
Low Bitrate
 
aforget's Avatar
 
Join Date: Nov 2003
Location: Santa Cruz, CA, USA
Posts: 65
aforget is on a distinguished road
Ok, I have a video of the complete system.

http://www.youtube.com/watch?v=9Idu9XyAnmQ
__________________
Andy
55 Buick Carputer - http://www.55buick.com/Carputer/carputer.htm
aforget is offline   Reply With Quote
Sponsored links
Advertisement
 
Advertisement
Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
StreetDeck Input Plugins (Remotes, Steering Wheel Controls, etc.) god_of_cpu StreetDeck F.A.Q. 15 08-21-2007 04:46 PM
Streetdeck Now Available for Purchase god_of_cpu StreetDeck 46 01-02-2007 11:58 AM
StreetDeck Fonts god_of_cpu DigitalMods (Scripts / API) 1 02-16-2006 06:21 PM
StreetDeck File Extentions (.sdu and .sdz) god_of_cpu StreetDeck F.A.Q. 0 01-22-2006 11:26 PM
StreetDeck in Blogs Fiberoptic StreetDeck 2 01-16-2006 10:57 AM



All times are GMT -5. The time now is 05:16 AM.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.3.2
Copyright © 1999 - 2008 Mp3Car.com Inc.Ad Management by RedTyger
Message Board Statistics