quick sequence Results

Page 1 of 2.
Results 1...20 of 33

Sponsored Links:

General Set-Up: windows 7 64 bit. Samsung 23 inch 1920x1080 lcd monitor. Downloaded 64 bit driver from samsung. (2) BFG nforce G275 in SLI. XFXnForce 790iUltraSLI sys. board. CPU: Intel aQ9650. 8GB Corsair dominator RAM matched to board specs.
On power up there is no screen display at all until 'welcome/password'. Neither does the screen show 'press 2' to enter set-up or the quick display of my Raid 1 status with the drive numbers showing etc.
On install all of this showed. I can enter my RAID thru XFXnforce790iSLI Ultra utilities, and see RAID 1 status. or SLI STATUS. I just can't enter the bios with a screen prompt, I am 'flying blind' at the moment. Thank you.

Hi all

Can anyone tell me if they know of some quick alternative to the "Tools... Options... Mail Format" dialogue sequence for switching between Outlook stationeries (or disabling it temporarily)? Outlook has a macro creation facility, but as it doesn't "record" like other Office apps, it's beyond my expertise.

As always, I'd be most grateful for the wisdom of the Loungers.



0,1,0,1,1,1,0,2,1, ????????

If 3**5 = 27 but 5**3 = 35

4++8 = 20 but 8++4 = 16

Then what is the result of (8**7)++9?

Which number comes next in this sequence?

1, 3, 9, 33, 153, 873, 5913, ?

I am a word of eight letters. Can you figure me out from the clues given?

My 3, 4, 5, 8 is part of a boot.
My 2, 8, 1, 3, 7 is in the zoo.
My 7, 6, 2, 1 is in a band.
My 2, 4, 6, 7 is a sporting event.
My 3, 5, 1, 7, 8 is bluish gray.
My 2, 5, 6, 8, 3 is a music type.
My 2, 4, 5, 7 is a door lock.

The shortest of its brothers,
Twelve of them in all.
Once in every four,
It grows an inch more tall.
A large heart in the middle.

How would you arrange four 3's so that they equal 5 using any of the following operations: addition, subtraction, multiplication or divide?

A word I know, six letters it contains. Subtract just one, and twelve is what remains.

You are given 6 pencils all the same length.

Your task is to arrange them into equilateral triangles. What is the maximum number of equilateral triangles that you can make? Each side is the length of a single pencil.

Provide the final number in the following sequence:

8 5 4 9 1 7 6 10 3 2 ?

So my computer is down, not 100% sure what it is still, but figured one of you could help me. Here’s the way it went down:
OS: Windows 7 RC 64-bit, System Specs below.

1) Computer was in “sleep” mode. I hit a key to wake it up just so I could see if there were any CDs in the drives. There were none, but before I could even close them back up, I get a BSOD: “IRQL_NOT_LESS_OR_EQUAL” … 0x0000000A(,,,,) [didn’t write down the rest of the #s].

2) So I did a Reboot -> My RAID 0 Boot array all the sudden shows as degraded, so I turned the comp off, gave it a sec to stop misbehaving.

3) Cold Boot -> Disc array now shows healthy again. I opened the Nvidia RAID after POST to examine the array, and both discs look fine in the array, doesn’t look desync’d or anything. Exited this menu. Now, it proceeds thru POST fine, attempts to load from both CD drives, none there, then one line below the “Boot from CD:” line, there’s a permanent blinking cursor for about 5min.

4) Reboot a couple times. Same thing. I went into BIOS to check that RAID settings were still intact, and also took CDs out of Boot Sequence just in case. (All usb storage devices are unplugged by the way).

5) Reboot. No more “boot from CD” line (expected), just a blinking cursor after “Verifying DMI etcetc” line. Each time this happens, the HD is still spinning furiously, almost like it’s trying to find what/where to boot from. So this time I left it on for a while. Come back 1/2hr later to a blank screen, but HD still workin hard. So I left it overnight.

6) In the morning: Blank Screen still, so I rebooted again -> This time, I get the “Windows did not shut down properly” screen, giving me startup options: Safe Mode, Safe Mode with Networking, Safe Mode with Command Prompt, or Normal.

7) I selected safe mode. It loaded through files, like normal, but stopped at “disk.sys”. HD is still spinning, left it for 10min -> BSOD quick flash, then instant automatic reboot. I couldn’t make out the BSOD code, it was too fast.

8) Windows Startup selection screen again, so I picked “Normal”. The windows 7 logo comes up, and is “flowing” or moving, showing that it’s not frozen. Left it for like 10min -> BSOD quick flash again, auto reboot.

That was my last attempt. All of this is over the course of 24hrs or so, had to go to work in between and such. I had no warning signs to this failure, and have never experienced anything like this with this setup.

I figure my next line of attack is to pop the Windows7 CD in and try to do a repair installation. If that doesn’t work, then I’m totally stuck and don’t really know where to go from there.

Any ideas, diagnosis, or suggestions? I would’ve tried to assess the dump file, but I can’t get into windows to access it.

System Specs:
OS: Windows7 RC 64-bit
Processor:Intel C2Q Q6600 G0 2.4GHz
Motherboard:eVGA 680i SLI 122-CK-NF68-A1
Cooling:Thermalright Ultra-120 eXtreme (Push+Pull: Silverstone 120mm), (2) Thermalright HR-09 IFX/SLI NB&SB
Memory:4GB Crucial Ballistix 1066MHz
Video Card:eVGA 8800GTX 768MB
Harddisk:(2) WD Raptor 150GB SATA BOOT[RAID 0], (4) Seagate Barracuda 320GB SATA [RAID 0+1]
CD/DVD Drive:(2) Lite-On 20X DVD±RW IDE
CRT/LCD Model:Acer 20" - AL2017, Acer 22"W - AL2216WBD
Case:Thermaltake Armor w/ 25cm Fan & Extra Front iCage
Sound Card:OnBoard PSU:Silverstone 1000W - ST1000

Hi, hope someone can help me with this. Having a problem that is almost worse than a program crashing. (At least I would get an error so I can see what is the cause of the problem.) Anyhow this is the sequence of events.

In the morning I "woke" up my pc from sleep and had no problems (basically surf web and read email, play some fb games ). I went to work. Coming home I woke up my pc again, and noticed some of my browser windows were no longer open, then I realized it looked like my machine rebooted. The desktop was showing, but the normal apps that remain open during start up were not present. I looked at the status bar?(the area that shows active apps like, sound volume, network connection, USB devices, New updates available, Microsoft Security Essentials...) and noticed only about 1/3 of the icons were showing. I naturally wanted to start up ie to search for this problem, but ie did not start up. Meaning, I double clicked on the icon and nothing showed up. I tried applications listed below.

ie does not start
Google Chrome does not start
Firefox does not start
Command Shell starts, able to ping externally so probably isn't network related?
word does not start
Notepad works, but doesn't help me much
Windows Update does not start

same problem in safe mode

Rebooted back to normal mode (not safe mode) and noticed Windows gadgets start to appear about 3 minutes after desktop appears.

performed a scandisk (had to reboot of course)

Started Microsoft Security Essentials, got it uptodate, ran quick scan, nothing found.

I eventually found out internet explorer 64 bit works! I searched and found this forum. Using problem identification guidelines posted.
1) rebooted to capture beginning of ev log. on boot up eventviewer (after 2 minutes comes up)

The server {E10F6C3A-F1AE-4ADC-AA9D-2FE65525666E} did not register with DCOM within the required timeout.
The Peer Name Resolution Protocol cloud did not start because the creation of the default identity failed with error code: 0x80630801.
The Peer Name Resolution Protocol service terminated with the following error: %%-2140993535Session "Microsoft Security Client OOBE" stopped due to the following error: 0xC000000D
A timeout was reached (30000 milliseconds) while waiting for the Akamai NetSession Interface service to connect.A timeout was reached (30000 milliseconds) while waiting for the Apple Mobile Device service to connect.

2) Device Manager shows no yellow triangles

3) permon /report shows (as expected from ev log)
Diagnostic Results/Warnings:
Symptom: A service is reported as having an unexpected error code
Cause: One or more services has failed. The service did not stop gracefully, suggesting the service may
have crashed or one of its components stopped in an unsupported way.
Details: Service exited with code not equal to 0 or 1077
Resolution: Restart the service
Related: Performance Diagnosis

I'm not sure what else is relevent in the report. It does show under Anti-Virus Information that a Query
of rootSecurityCenter:SELECT * FROM AntiVirusProduct resulted in 0x0.

4) "Find and Fix" did not have any thing for my problem

5) n/a did not upgrade from Vista, was a new install 2 years ago?

Properties(right clicking and selecting Properties) on Computer does nothing.

Running dxdiag does nothing (from Run option and cmd.exe)

Edit Added:
It's looking like 32 bit applications do not start, but 64 bit applications do. For example programs in the Program Files (x86) will not start, but programs in the Program Files (assuming these are 64 bit) do start.

Also I've used msconfig and found same results when booting with no startup items, and no Services started.

So is there an system application that runs the 32 bit applications on windows 64 bit? It seems that program does not work on my machine now. Is there any way to replace it?

Begin Edit Morning of June 9th, 2012
I've tried system restore and it failed during the restore, and then windows failed to boot. I was able to get it back to the same state? now with windows repair, sfc, and replacing reported bad files from windows 7 install disk.
End Edit Jun 9th 2012

Begin Edit June 10th, 2012
I'm 90% sure it's just 32 bit applications that don't start.
- Application Verifier does not start
- Application Verifier (x64) does start
- Internet Explorer (Program Files x86) does not start
- Internet Explorer (Program Files) does start
End Edit June 10th, 2012

Any ideas where go to from here?


The HP Printer Display Hack is a simple background application that periodically checks the current price of a selected stock and sends it to the display of HP (and compatible) laser printers.

This app is based on an old hack from back to at least 1997 that uses the HP Job control language to change the text on the LCD status display. Some background on this hack can be found here: http://www.irongeek.com/i.php?page=s...rinterhacking. There are various versions of the hack code out there, and typically they all work the same way: you specify the address of the printer and the message to send, open a TCP connection to the printer over port 9100, and then send a command to update the display.
This app is a variation of that hack. Its a tray application that periodically checks the stock price for a company and then sends a formatted message of the stock symbol and price to a specified printer.
To get the current stock price, we retrieve the data from Yahoo! through finance.yahoo.com. The data comes back in CSV format. To save a step in parsing the CSV columns, we use YQL, the Yahoo! Query Language. Yahoo! created YQL to provide a SQL-like API for querying data from various online web services. YQL! can return XML or JSON data, and well take the XML and use LINQ to parse the data.

How to Use the App

The first time you run the app, the main form will appear and you'll be able to enter in the stock symbol and the IP address of your printer. Click the Get Printer button to view a dialog listing the available printers connected on port 9100.
There are two checkboxes. The first one is labeled Start with Windows. When this setting is saved, the following code is executed to tell Windows whether to start the app when user logs in:


private void StartWithWindows(bool start) { using (RegistryKey hkcu = Registry.CurrentUser) { using (RegistryKey runKey = hkcu.OpenSubKey(@"SoftwareMicrosoftWindowsCurrentVersionRun", true)) { if (runKey == null) return; if (start) runKey.SetValue(wpfapp.Properties.Resources.Code4FunStockPrinter, Assembly.GetEntryAssembly().Location); else { if (runKey.GetValue(wpfapp.Properties.Resources.Code4FunStockPrinter) != null) runKey.DeleteValue(wpfapp.Properties.Resources.Code4FunStockPrinter); } } } }

Private Sub StartWithWindows(ByVal start As Boolean) Using hkcu As RegistryKey = Registry.CurrentUser Using runKey As RegistryKey = hkcu.OpenSubKey("SoftwareMicrosoftWindowsCurrentVersionRun", True) If runKey Is Nothing Then Return End If If start Then runKey.SetValue(My.Resources.Code4FunStockPrinter, System.Reflection.Assembly.GetEntryAssembly().Location) Else If runKey.GetValue(My.Resources.Code4FunStockPrinter) IsNot Nothing Then runKey.DeleteValue(My.Resources.Code4FunStockPrinter) End If End If End Using End UsingEnd SubThe enabled checkbox is used so that you can pause the sending of the stock price to the printer without having to exit the app. When you press the Start button, you are prompted to save any changed settings and the app hides the main form, leaving just the system tray icon. While the app is running, it will check the stock price every 5 minutes. If the price has changed, it tells the printer to display the stock symbol and price on the display.
A DispatcherTimer object is used to determine when to check the stock price. Its created when the main form is created and will only execute the update code when the settings have been defined and enabled.
If an unexpected error occurs, the DispatcherUnhandledException event handler will log the error to a file and alert the user:


void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e) { // stop the timer _mainWindow.StopPrinterHacking(); // display the error _mainWindow.LogText("Sending the stock prince to the printer was halted due to this error:" + e.Exception.ToString()); // display the form ShowMainForm(); // Log the error to a file and notify the user Exception theException = e.Exception; string theErrorPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "PrinterDisplayHackError.txt"; using (System.IO.TextWriter theTextWriter = new System.IO.StreamWriter(theErrorPath, true)) { DateTime theNow = DateTime.Now; theTextWriter.WriteLine(String.Format("The error time: {0} {1}", theNow.ToShortDateString(), theNow.ToShortTimeString())); while (theException != null) { theTextWriter.WriteLine("Exception: " + theException.ToString()); theException = theException.InnerException; } } MessageBox.Show("An unexpected error occurred. A stack trace can be found at:n" + theErrorPath); e.Handled = true; }

Private Sub App_DispatcherUnhandledException(ByVal sender As Object, ByVal e As System.Windows.Threading.DispatcherUnhandledExceptionEventArgs) ' stop the timer _mainWindow.StopPrinterHacking() ' display the error _mainWindow.LogText("Sending the stock prince to the printer was halted due to this error:" & e.Exception.ToString()) ' display the form ShowMainForm() ' Log the error to a file and notify the user Dim theException As Exception = e.Exception Dim theErrorPath As String = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) & "PrinterDisplayHackError.txt" Using theTextWriter As System.IO.TextWriter = New System.IO.StreamWriter(theErrorPath, True) Dim theNow As Date = Date.Now theTextWriter.WriteLine(String.Format("The error time: {0} {1}", theNow.ToShortDateString(), theNow.ToShortTimeString())) Do While theException IsNot Nothing theTextWriter.WriteLine("Exception: " & theException.ToString()) theException = theException.InnerException Loop End Using MessageBox.Show("An unexpected error occurred. A stack trace can be found at:" & vbLf & theErrorPath) e.Handled = TrueEnd Sub
The User Interface

The application currently looks like this:

Pressing the Get Printer button opens a dialog that looks like this:

The UI was designed with WPF and uses the basic edit controls as well as a theme from the WPF Themes project on CodePlex. On the main form, the stock symbol, printer IP address, and the check boxes using data bindings to bind each control to a custom setting are defined in the PrinterHackSettings class.
The settings are defined in a class descended from ApplicationSettingsBase. The .NET runtime will read and write the settings based on the rules defined here.
The big RichTextBog in the center of the form is used to display the last 10 stock price updates. The app keeps a queue of the stock price updates, and when the queue is updated its sent to the RichTextBox with the following code:


public void UpdateLog(RichTextBox rtb) { int i = 0; TextRange textRange = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd); textRange.Text = string.Empty; foreach (var lg in logs) { i++; TextRange tr = new TextRange(rtb.Document.ContentEnd, rtb.Document.ContentEnd) { Text = String.Format("{0} : ", lg.LogTime.ToString("hh:mm:ss")) }; tr.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.DarkRed); tr = new TextRange(rtb.Document.ContentEnd, rtb.Document.ContentEnd) { Text = lg.LogMessage + Environment.NewLine }; tr.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.Black); } if (i > 10) logs.Dequeue(); rtb.ScrollToEnd(); }

Public Sub UpdateLog(ByVal rtb As RichTextBox) Dim i As Integer = 0 For Each lg As LogEntry In logs i += 1 Dim tr As New TextRange(rtb.Document.ContentEnd, rtb.Document.ContentEnd) With {.Text = String.Format("{0} : ", lg.LogTime.ToString("hh:mm:ss"))} tr.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.Red) tr = New TextRange(rtb.Document.ContentEnd, rtb.Document.ContentEnd) With {.Text = lg.LogMessage & Environment.NewLine} tr.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.White) Next lg If i > 10 Then logs.Dequeue() End If rtb.ScrollToEnd()End Sub

Displaying a notification trace icon

WPF does not provide any functionality for running an app with just an icon in the notification area of the taskbar. We need to tap into some WinForms functionality. Add a reference to the System.Windows.Form namespace to the project. In the App.xaml file, add an event handler to the Startup event. Visual Studio will wire up an Application.Startup event in the code behind file. We can use that event to add a WinForms.NotifyIcon and wireup a context menu to it:


private void Application_Startup(object sender, StartupEventArgs e) { _notifyIcon = new WinForms.NotifyIcon(); _notifyIcon.DoubleClick += notifyIcon_DoubleClick; _notifyIcon.Icon = wpfapp.Properties.Resources.Icon; _notifyIcon.Visible = true; WinForms.MenuItem[] items = new[] { new WinForms.MenuItem("&Settings", Settings_Click) { DefaultItem = true } , new WinForms.MenuItem("-"), new WinForms.MenuItem("&Exit", Exit_Click) }; _notifyIcon.ContextMenu = new WinForms.ContextMenu(items); _mainWindow = new MainWindow(); if (!_mainWindow.SettingsAreValid()) _mainWindow.Show(); else _mainWindow.StartPrinterHacking(); }

Private Sub Application_Startup(ByVal sender As Object, ByVal e As StartupEventArgs) _notifyIcon = New System.Windows.Forms.NotifyIcon() AddHandler _notifyIcon.DoubleClick, AddressOf notifyIcon_DoubleClick _notifyIcon.Icon = My.Resources.Icon _notifyIcon.Visible = True Dim items() As System.Windows.Forms.MenuItem = {New System.Windows.Forms.MenuItem("&Settings", AddressOf Settings_Click) With {.DefaultItem = True}, New System.Windows.Forms.MenuItem("-"), New System.Windows.Forms.MenuItem("&Exit", AddressOf Exit_Click)} _notifyIcon.ContextMenu = New System.Windows.Forms.ContextMenu(items) _mainWindow = New MainWindow() If Not _mainWindow.SettingsAreValid() Then _mainWindow.Show() Else _mainWindow.StartPrinterHacking() End IfEnd Sub
Getting the Stock Information

From the Yahoo Financial site, you get can download a CSV file for any specified stock. Here's a web site that documents the format needed to get the right fields: http://www.gummy-stuff.org/Yahoo-data.htm. We want to return the stock symbol and the last traded price. That works out to be s and l1, respectively.
If you open the following URL with a browser, a file named quotes.csv will be returned:
You should get a file like this:

The first field is the stock symbol and the second is the last recorded price. You could just read that data and parse out the fields, but we can get the data in more readable format.
Yahoo! has a tool called the YQL Console that will you let you interactively query against Yahoo! and other web service providers. While it's overkill to use on a two column CSV file, it can be used to tie together data from multiple services.
To use our MSFT stock query with YQL, we format the query like this:

select * from csv where url='http://download.finance.yahoo.com/d/quotes.csv?s=MSFT&f=sl1' and columns='symbol,price'You can see this query loaded into the YQL Console here.

When you click the TEST button, the YQL query is executed and the results displayed in the lower panel. By default, the results are in XML, but you can also get the data back in JSON format.
Our result set has been transformed into the following XML:

This XML document can be easily parsed in the application code. The URL listed below THE REST QUERY on the YQL page is the YQL query encoded so that it can be sent as a GET request. For this YQL query, we use the following URL:
This is the URL that our application uses to get the stock price. Notice the MSFT in bold facewe replace that hard coded stock symbol with a format item and just use String.Format() to generate the URL at run time.
To get the stock price from our code, we can wrap this with the following method:


public string GetPriceFromYahoo(string tickerSymbol) { string price = string.Empty; string url = string.Format("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20csv%20where%20url%3D'http%3A%2F%2Fdownload.finance.yahoo.com%2Fd%2Fquotes.csv%3Fs%3D{0}%26f%3Dsl1'%20and%20columns%3D'symbol%2Cprice'", tickerSymbol); try { Uri uri = new Uri(url); HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri); HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); XDocument doc = XDocument.Load(resp.GetResponseStream()); resp.Close(); var ticker = from query in doc.Descendants("query") from results in query.Descendants("results") from row in query.Descendants("row") select new { price = row.Element("price").Value }; price = ticker.First().price; } catch (Exception ex) { price = "Exception retrieving symbol: " + ex.Message; } return price; }

Public Function GetPriceFromYahoo(ByVal tickerSymbol As String) As String Dim price As String Dim url As String = String.Format("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20csv%20where%20url%3D'http%3A%2F%2Fdownload.finance.yahoo.com%2Fd%2Fquotes.csv%3Fs%3D{0}%26f%3Dsl1'%20and%20columns%3D'symbol%2Cprice'", tickerSymbol) Try Dim uri As New Uri(url) Dim req As HttpWebRequest = CType(WebRequest.Create(uri), HttpWebRequest) Dim resp As HttpWebResponse = CType(req.GetResponse(), HttpWebResponse) Dim doc As XDocument = XDocument.Load(resp.GetResponseStream()) resp.Close() Dim ticker = From query In doc.Descendants("query") , results In query.Descendants("results") , row In query.Descendants("row") _ Let xElement = row.Element("price") _ Where xElement IsNot Nothing _ Select New With {Key .price = xElement.Value} price = ticker.First().price Catch ex As Exception price = "Exception retrieving symbol: " & ex.Message End Try Return priceEnd Function
While this code makes the readying of a two column CSV file more complicated than it needs to be, it makes it easier to adapt this code to read the results for multiple stock symbols and/or additional fields.
Getting the List of Printers

We are targeting a specific type of printer: those that use the HP PJL command set. Since we talk to these printers over port 9100, we only need to list the printers that listen on that port. We can use Windows Management Instrumentation (WMI) to list the printer TCP/IP addresses that are using port 9100. The WMI class Win32_TCPIPPrinterPort can be used for that purpose, and well use the following WMI query:
Select Name, HostAddress from Win32_TCPIPPrinterPort where PortNumber = 9100
This returns the list of port names and addresses on your computer that are being used over port 9100. Take that list and store it in a dictionary for a quick lookup:


static public Dictionary GetPrinterPorts(){ var ports = new Dictionary(); ObjectQuery oquery = new ObjectQuery("Select Name, HostAddress from Win32_TCPIPPrinterPort where PortNumber = 9100"); ManagementObjectSearcher mosearcher = new ManagementObjectSearcher(oquery); using (var searcher = new ManagementObjectSearcher(oquery)) { var objectCollection = searcher.Get(); foreach (ManagementObject managementObjectCollection in objectCollection) { var portAddress = IPAddress.Parse(managementObjectCollection.GetPropertyValue("HostAddress").ToString()); ports.Add(managementObjectCollection.GetPropertyValue("Name").ToString(), portAddress); } } return ports; }

Public Shared Function GetPrinterPorts() As Dictionary(Of String, IPAddress) Dim ports = New Dictionary(Of String, IPAddress)() Dim oquery As New ObjectQuery("Select Name, HostAddress from Win32_TCPIPPrinterPort where PortNumber = 9100") Dim mosearcher As New ManagementObjectSearcher(oquery) Using searcher = New ManagementObjectSearcher(oquery) Dim objectCollection = searcher.Get() For Each managementObjectCollection As ManagementObject In objectCollection Dim portAddress = IPAddress.Parse(managementObjectCollection.GetPropertyValue("HostAddress").ToString()) ports.Add(managementObjectCollection.GetPropertyValue("Name").ToString(), portAddress) Next managementObjectCollection End Using Return portsEnd Function
Next, we get the list of printers that this computer knows about. We could do that through WMI, but I decided to stay closer to the .NET Framework and use the LocalPrintServer class. The GetPrintQueues method returns a collection of print queues of the type PrintQueueCollection. We can then iterate through the PrintQueueCollection and look for all printers that have a port name that matches the names returned by the WMI query. That gives code that looks like this:


public class LocalPrinter { public string Name { get; set; } public string PortName { get; set; } public IPAddress Address { get; set; } } static public List GetPrinters() { Dictionary ports = GetPrinterPorts(); EnumeratedPrintQueueTypes[] enumerationFlags = { EnumeratedPrintQueueTypes.Local }; LocalPrintServer printServer = new LocalPrintServer(); PrintQueueCollection printQueuesOnLocalServer = printServer.GetPrintQueues(enumerationFlags); return (from printer in printQueuesOnLocalServer where ports.ContainsKey(printer.QueuePort.Name) select new LocalPrinter() { Name = printer.Name, PortName = printer.QueuePort.Name, Address = ports[printer.QueuePort.Name] }).ToList(); }

Public Class LocalPrinter Public Property Name() As String Public Property PortName() As String Public Property Address() As IPAddressEnd ClassPublic Shared Function GetPrinters() As List(Of LocalPrinter) Dim ports As Dictionary(Of String, IPAddress) = GetPrinterPorts() Dim enumerationFlags() As EnumeratedPrintQueueTypes = { EnumeratedPrintQueueTypes.Local } Dim printServer As New LocalPrintServer() Dim printQueuesOnLocalServer As PrintQueueCollection = printServer.GetPrintQueues(enumerationFlags) Return ( _ From printer In printQueuesOnLocalServer _ Where ports.ContainsKey(printer.QueuePort.Name) _ Select New LocalPrinter() With {.Name = printer.Name, .PortName = printer.QueuePort.Name, .Address = ports(printer.QueuePort.Name)}).ToList()End Function

Sending the Stock Price to the Printer

The way to send a message to a HP display is via a PJL command. PJL stands for Printer Job Language. Not all PJL commands are recognized by every HP printer, but if you have an HP laser printer with a display, the command should work. This should work for any printer that is compatible with HPs PJL command set. For the common PJL commands, HP has an online document here.
We will be using the Ready message display PJL command. All PJL commands will start and end with a sequence of bytes called the Universal Exit Language or UEL. This sequence tells the printer that its about to receive a PJL command. The UEL is defined as
The format of the packet sent to the printer is be "UEL PJL command UEL". The Ready message display format is
To send the command that has the printer display Hello World, you would send the following sequence:
%-12345X@PJL RDYMSG DISPLAY=Hello World[]%-12345X[]
We wrap this up in a class called SendToPrinter and the good stuff gets executed in the Send method, as listed below:


public class SendToPrinter { public string host { get; set; } public int Send(string message) { IPAddress addr = null; IPEndPoint endPoint = null; try { addr = Dns.GetHostAddresses(host)[0]; endPoint = new IPEndPoint(addr, 9100); } catch (Exception e) { return 1; } Socket sock = null; String head = "u001B%-12345X@PJL RDYMSG DISPLAY = ""; String tail = ""rnu001B%-12345Xrn"; ASCIIEncoding encoding = new ASCIIEncoding(); try { sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP); sock.Connect(endPoint); sock.Send(encoding.GetBytes(head)); sock.Send(encoding.GetBytes(message)); sock.Send(encoding.GetBytes(tail)); sock.Close(); } catch (Exception e) { return 1; } int bytes = (head + message + tail).Length; return 0; } }

Public Function Send(ByVal message As String) As Integer Dim endPoint As IPEndPoint = Nothing Try Dim addr As IPAddress = Dns.GetHostAddresses(Host)(0) endPoint = New IPEndPoint(addr, 9100) Catch Return 1 End Try Dim startPJLSequence As String = ChrW(&H1B).ToString() & "%-12345X@PJL RDYMSG DISPLAY = """ Dim endPJLSequence As String = """" & vbCrLf & ChrW(&H1B).ToString() & "%-12345X" & vbCrLf Dim encoding As New ASCIIEncoding() Try Dim sock As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP) sock.Connect(endPoint) sock.Send(encoding.GetBytes(startPJLSequence)) sock.Send(encoding.GetBytes(message)) sock.Send(encoding.GetBytes(endPJLSequence)) sock.Close() Catch Return 1 End Try Return 0End Function
The Installer

The installer for this app was written with WiX, Windows Installer XML. WiX is an open source project created by Rob Mensching that lets you build Windows Installer .msi and .msm files from XML source code. I used the release candidate of WiX 3.6, but any recent version should work. Of course, you dont need an installer if you build the app yourself.
Setting InstalScope to perUser designates this package as being a per-user install. Adding the property WixAppFolder and set to WixPerUserFolder tells WiX to install this app under %LOCALAPPDATA% instead of under %ProgramFiles%. This eliminates the need for the installer to request elevated rights and the UAC prompt:

Because we are not touching any system settings, I eliminated the creation of a system restore point at the start of the installation process. This greatly speeds up the installation of the app, and is handled by adding a property named MSIFASTINSTALL with the value of 1:

I modified the UI sequence to skip over the end user license agreement. There is nothing to license here and no one reads EULAs anyways. To do this, I needed to download the WiX source code and extract a file named WixUI_Mondo.wxs. I added it to the installer project and renamed it to WixUI_MondoNoLicense.wxs. I also added a checkbox to the exit dialog to allow the user to launch the app after it been installed:

When you build the installer, it generates two ICE91 warning messages. An ICE91 warning occurs when you install a file or shortcut into a per-user only folder. Since we have explicitly set the InstallScope to perUser, we can safely ignore these two warnings. If you hate warning messages, you can use the tool settings for the installer project to suppress ICE91 validation checks:


I have had various versions of this app running in my office for over a year. Its been set to show our current stock price on the main printer in the development department. Its fun to watch people walk near the printer just to check out the current stock price.
If you want to try this out, the download link for the source code and installer is at the top of the article!
About The Author

I am a senior R&D engineer for Tyler Technologies, working on our next generation of school bus routing software. I also am the leader of the Tech Valley .NET Users Group (TVUG). You can follow me at @anotherlab and check out my blog at anotherlab.rajapet.net. I would list my G+ address, but I dont use it. I started out with a VIC-20 and been slowly moving up the CPU food chain ever since.
I would like to thank Brian Peek on the Coding4Fun team for his encouragement and suggestions and for letting me steal large chunks of the UI code from his TweeVo project .


By Joe Wilcox, Betanews

The other night, I got quite the shock. A good friend, who is a Windows enthusiast and IT administrator/consultant, informed me that he had dumped Windows 7 for Ubuntu. I didn't see that coming. For one, he's a Windows fan. For another, I would rate Windows 7 as nearly Microsoft's best operating system ever (sorry, even with the driver problems, Windows NT 4 still ranks as my fav; for its time -- 1996ish). My buddy contacted me by Skype, and I kept the transcript which I offer here with his permission.

Many of my questions were deliberately pointed, for three reasons. 1) As with all interviews, I strive for impartiality. 2) This friend, whom I'll call IT Guy for this post, is a good buddy. I know his personality enough to press hard about certain things. 3) I don't want to give some of Betanews' more rabid commenters cause to accuse of bias against Microsoft or Windows (I have none, but they accuse anyway). Hey, I'm just as surprised as you about my buddy's Ubuntu conversion. He had tried Linux years ago and didn't really like the experience, particularly because of driver problems and deficient or missing applications.

I don't see that IT Guy gave very good technical reasons for abandoning Windows 7. He mostly states what I consider to be perception problems -- that there are daily updates (which isn't the case), that there are massive security problems (because of the number of patches) and that Microsoft's anti-piracy mechanisms are harassing. These are actually emotional reasons, which is why I am posting the conversation. Even for experienced users, a purchase decision is still an emotional one. My friend didn't feel good about Windows 7. Microsoft doesn't want long-time loyal users like IT Guy going rogue and switching to Linux or Mac OS X.

With that introduction, I present the conversation, which has been edited in four places for flow (We asked and answered some questions out of sequence). The opening question reflects IT Guy contacting me by Skype, where my username isn't my real name. So he wasn't initially sure he was skyping me.

IT Guy: That you, Mr. Joe?
Joe Wilcox: Hey, bud. What's shakin?
IT Guy: Same ole same ole! And you?
Joe Wilcox: Working. Caught me at bad time.
IT Guy: I've tossed Windows7 Ultimate!
IT Guy: Ahhhh. sorry....
Joe Wilcox: Oh?
Joe Wilcox: Wait.
Joe Wilcox: Do tell.
Joe Wilcox: Tossed for what?
IT Guy: Yeah, moved back to Linux. Using Ubuntu.
Joe Wilcox: Because?
IT Guy: Very satisfied, very impressed!
IT Guy: Couldn't keep Win running with any speed.
Joe Wilcox: What about drivers? Software?
IT Guy: That's with 8 GB of RAM.
Joe Wilcox: Really. What's the system config again?
IT Guy: Everything including video if you want to vid chat.
Joe Wilcox: I can't vid chat now. Later perhaps.
IT Guy: It is a truly amazing system. Especially with the spec's I'm running.
Joe Wilcox: But give me some more details. Start with complete system specs.
IT Guy: Intel quad i7 proc.
IT Guy: 8 GB Ram
Joe Wilcox: Laptop?
IT Guy: Yes
Joe Wilcox: Just spell out specs in one sentence.
IT Guy: 500 GB HD
IT Guy: sorry
Joe Wilcox: Model and manufacturer too.
IT Guy: HP Pavilion DV6T. 1 GB dedicated vid ram, and the rest listed above. Came with win7 home, upgraded to Ultimate. Wireless internal of course.
Joe Wilcox: You ran Ultimate for how long?
IT Guy: Now running Ubuntu Desktop 10.04 Lucid Lynx. I ran Ultimate for about 3 mos.
Joe Wilcox: Why so little time?
IT Guy: Just got tired of fighting with it all the time with rights issues and such. A patch an hour somedays? Come on...
Joe Wilcox: What kinds of rights issues?
IT Guy: I've got some stuff I never want to lose, and with Windows I wasn't feeling warm and fuzzy anymore.
Joe Wilcox: Because?
IT Guy: Anytime installing anything from software to copying doc's localy folder to folder...
IT Guy: I understand some of that but come on. I upgraded to Ultimate to get access to some of my old db files created on XP.
Joe Wilcox: You couldn't access them?
IT Guy: No. Windows 7 Ultimate is the only version that will.
Joe Wilcox: Did you try and identify why? Use Microsoft Knowledgebase or forums?
IT Guy: They are up front about that though.
IT Guy: The KB for sure. Most didn't have the time of day.
Joe Wilcox: What about performance? Powerful system, should be plenty of oomph for Windows 7 Ultimate.
IT Guy: Yes it was at first. I could never keep it that way short of doing a sys restore.
Joe Wilcox: So what about performance?
IT Guy: Oddly enough, I came here from the Ubuntu forums
Joe Wilcox: Came here, meaning where?
IT Guy: A refreshing change from MS. Not only is the OS free, if you're kind in your approach on the forums, it's almost like free tech support as well!
IT Guy: I highly recommend Ubuntu.
IT Guy: In case you couldn't tell.
IT Guy: Been using it about a month.
Joe Wilcox: You still haven't answered question about Windows 7 Ultimate performance.
IT Guy: With NO problems!
IT Guy: The performance degraded as time went by.
Joe Wilcox: How so?
IT Guy:: I have no explanation why. That was the most frustrating part of the whole thing.
Joe Wilcox: What makes you sure Ubuntu won't degrade in another two months?
IT Guy: I consider myself, if not a 'computer guru', then pretty darn close.
IT Guy: With Linux today you can monitor and control everything the system is doing.
Joe Wilcox: So let's discuss that. You have how much IT experience?
Joe Wilcox: You've managed systems?
Joe Wilcox: Meaning, as I recall, your experience is broader than just an end user.
IT Guy: Started my first programming classes in 1983. Been working in the industry in one way or another ever since. You know that.
IT Guy: Went to Devry or however they spell it.
IT Guy: Ended up as a full time employee for my COBOL professor.
Joe Wilcox: OK. How about you give me three things you liked and also disliked about Windows 7 Ultimate?
IT Guy: It was pretty.
IT Guy: It was shallow!
IT Guy: Reminded me too much of a cheap woman! hehe
Joe Wilcox: Are you describing Windows or your first date?
IT Guy: Liked the new Aurora interface and how fast my games played.
Joe Wilcox: Cheap woman as in easy to get or hard to please?
IT Guy: I disliked that it has so many security flaws. There were literally patches per hour some day!
Joe Wilcox: Microsoft releases patches on second Tuesday of the month. There couldn't have been that many.
IT Guy: No stable OS should have to be updated continuously in order for the end user to have some sense of security.
Joe Wilcox: Apple regularly updates Mac OS X.
IT Guy: True enough.
Joe Wilcox: What about Ubuntu?
IT Guy: If I want the update yes.
Joe Wilcox: How often? More often in one month than Windows?
IT Guy: My kernel is protected and I only update it in the event of hardware change.
IT Guy: I've updated the kernel once since install.
Joe Wilcox: The Windows 64-bit kernel is pretty hardened. Did you run 64-bit Ultimate?
IT Guy: Yes I did.
Joe Wilcox: Could it be Microsoft is just more proactive about security?
Joe Wilcox: Crime goes up after cities put more cops on the street. It's a well-documented occurance. More cops means more crime recorded not an increase in actual crimes.
IT Guy: That is a possibility. I was thinking about it more from the disgusted end user perspective of 'what is so wrong that I have to have all these updates' feeling.
Joe Wilcox: So the updates generated fear -- that Windows isn't safe enough?
IT Guy: I just figured that as loaded up hardware wise as this laptop is, that I shouldn't have noticed any slowdown, or at the most it should have been imperceptible.
IT Guy: It wasn't so much a fear factor thing though it did weigh on me at times.
Joe Wilcox: Got it. OK, now to those three things you didn't like most about Windows 7 Ultimate.
IT Guy: The slow down, the security, and having it act like I was a new user every time I tried to do something at the sys level.
Joe Wilcox: OK. So what about Ubuntu? What three things do you like most or dislike most?
IT Guy: I like most the fact that when I turn on the laptop, I'm able to be editing my website live, in about a minute flat!
Joe Wilcox: How do the bootup times compare?
IT Guy: Three weeks later I like that it still is booting just as fast.
IT Guy: Ubuntu=1 minute up and able to start an app.
IT Guy: Windows 7 Ultimate=At the end about 4 and a half minutes before you could try to start an app..
Joe Wilcox: That's from bootup? What about sleep? I find Windows 7 Ulitmate to resume quickly on a much less powerful system than yours.
IT Guy: Ahhh, never used sleep.
Joe Wilcox: Really? I assume most everyone uses sleep.
IT Guy: I can't give you a good answer there because I just never used it.
IT Guy: I now do! Took Ubuntu for me to 'discover' the value of sleep mode.
Joe Wilcox: My experience is about 10-15 seconds from sleep.
IT Guy: With Win7?
Joe Wilcox: Yes.
IT Guy: Wow.
Joe Wilcox: That's hardcase scenario -- using Outlook. Outlook was super slow on Vista.
Joe Wilcox: From sleep.
IT Guy: Now I'm going to have to reinstall and look at it again. I used it hard as well. Outlook, Word, Access and typically a media player app of some kind running.
Joe Wilcox: What else do you like about Ubuntu? How is the UI and drivers?
IT Guy: The UI for Ubuntu is on a level with OS X.
Joe Wilcox: That's good?
IT Guy: As far as I'm concerned, it's the best, most intuitive UI I've ever had. The drivers are superlative and run everything very well.
IT Guy: I'm using Gnome, by the way.
IT Guy: KDE was just to much like windows for me. Seemed like there were two ways to do everything.
Joe Wilcox: OK. Driver installation compares how with Windows 7 Ultimate?
IT Guy: Ahhhh.
IT Guy: Are you talking initial install? Of Linux?
Joe Wilcox: Both for drivers.
Joe Wilcox: What if a device doesn't work? How easily can you get a new driver?
IT Guy: At present, I've not come across anything hardware wise that hasn't worked. I have intentionally reinstalled the nVidia drivers with no problems or issues.
Joe Wilcox: What about applications?
Joe Wilcox: Can you watch DVD movies? Make home movies, etc.?
Joe Wilcox: Microsoft has Windows Live Essentials, and there are plenty of good third-party apps. Apple has iLife and its pro products.
IT Guy: All my writing is done with OpenOffice, I watch movies with VLC, I've been happily burning my DVD's with Brassero, and so on and on...
IT Guy: All of the apps I use are free. Part of the OpenSource community.
Joe Wilcox: You do some photography. Have you got anything comparable to Adobe Lightroom?
IT Guy: I am using Gimp for all my photo needs.
Joe Wilcox: That's enough? Really?
IT Guy: Matter of fact the photo used on my twitter account was imported and edited with Gimp today.
IT Guy: It's a really awesome graphics program actually.
IT Guy: So far, I've found there is nothing I can't do with this OS that I was doing with Mac or Windows.
Joe Wilcox: And it handles your Nikon RAW files?
IT Guy: Very well.
IT Guy: Actually found a nikon driver for the camera that imports them directly to Gimp and then wants to know if I want to convert them to a different format.
Joe Wilcox: Would you recommend Windows 7 Ultimate to friends? Would you recommend Ubuntu to friends?
IT Guy: hmmm.
IT Guy: Yes to Ubuntu.
Joe Wilcox: And WIndows 7 Ultimate?
IT Guy: I don't think right now I'd recommend Windows. I mean Ubuntu is free, and you can do everything with it that you can do with Windows, so do the math!
IT Guy: Also, Linux tends to keep your skills honed. Windows seems to not want the end user to have any smarts!
Joe Wilcox: Skills honed how?
IT Guy: You can do a lot from the terminal. Learn basic commands to run in the terminal to maintain the overall health of the computer...
IT Guy: Stuff that harkens back to the Unix console days.
Joe Wilcox: Windows has a sophisticated command line feature.
IT Guy: It definitely does.
Joe Wilcox: But you prefer the Unix/Linux terminal?
IT Guy: Unless you know more or can do more than the basic old dos commands it is really limited compared to the console in Linux.
IT Guy: Especially compared to Unix...
IT Guy: So yes I prefer the Unix/Linux command line over Windows.
Joe Wilcox: And how many years have you used Windows?
IT Guy: Holy *^#*. since ver 1.0.

Copyright Betanews, Inc. 2010

Windows 7 - Linux - Operating system - Joe Wilcox - Microsoft Windows


I had Windows XP on one of my laptops and installed Windows 7 on a seperate partition to see how it would cope. Well.... it doesn't cope at all.
I have the dual boot screen when I start the laptop and the default is of course the last O/S system loaded. i.e. Windows 7.
Unless I am quick enough to change the bootup, it tries to load Windows 7. And when I say tries, I mean 'tries'. Windows will load after about 20 minutes but is unusable. Nothing will respond. Nothing will function.
I cannot change the boot sequence on XP. I have to 'be in' Windows 7 environment to edit the boot sequence, but I cannot get there.

How do I either competely uninstall 7 or at the very least change the boot sequence without 'loading' Windows 7?

Thanks guys

C9 Netduino Shield Series - Using Arduino Shields with a Netduino - Part II

In our previous article, we examined what an Arduino shield is, how to build a simple custom shield and discussed how to quickly identify shields that are good candidates for a Netduino adaptation versus shields that may not be.
In this article, well take a popular Arduino Logger Shield produced by Adafruit and well interface it with a Netduino / Plus microcontroller

The Arduino Logger Shield is an excellent one to start with because it offers immediate benefits to a Netduino / Plus user:

Time-keepingSD card storageTwo user-controllable LEDsA small prototyping areaAn onboard 3.3v voltage regulator for clean analog readings and power decoupling
In our C# data logging application, we'll interact with the time keeper, the SD card storage and its 'card detect' pin, the two LEDs as well as a temperature sensor (not included with the shield).
Before diving into the details associated with the hardware, you may want to take a look at the C# objects representing the hardware:

public static readonly string SdMountPoint = "SD";public static OutputPort LedRed = new OutputPort(Pins.GPIO_PIN_D0, false);public static OutputPort LedGreen = new OutputPort(Pins.GPIO_PIN_D1, false);public static InputPort CardDetect = new InputPort(Pins.GPIO_PIN_D3, true, Port.ResistorMode.PullUp);public static readonly Cpu.Pin ThermoCoupleChipSelect = Pins.GPIO_PIN_D2;public static DS1307 Clock;public static Max6675 ThermoCouple;and their initialization:

public static void InitializePeripherals() { LedGreen.Write(true); Clock = new DS1307(); ThermoCouple = new Max6675(); InitializeStorage(true); InitializeClock(new DateTime(2012, 06, 14, 17, 00, 00)); ThermoCouple.Initialize(ThermoCoupleChipSelect); TemperatureSampler = new Timer(new TimerCallback(LogTemperature), null, 250, TemperatureLoggerPeriod); LedGreen.Write(false);}The SD card, represented by the SdMountPoint string, communicates with the application over SPI. The presence of the SD card in the reader is determined through the CardDetect input pin.
The LEDs are simple outputs that we'll turn ON / OFF as the peripherals gets initialized and file I/Os take place with the SD card.
The clock communicates with the application over the I2C protocol. The clock's most important functions are accessed through the Set() and Get() methods respectively used to set the time once and to get updated time stamps afterward.
The thermocouple communicates over SPI with the application. It exposes a Read() method which caches a raw temperature sample accessed through the Celsius and Fahrenheit properties.
Note: the Netduino Plus already features a built-in microSD card reader, in which case, having another one on the shield is not really needed. Except for this hardware difference, everything else discussed within this article applies equally to the regular Netduino and the Netduino Plus.
Interfacing with the Arduino Logger shields hardware

Adafruit is pretty good about making usable products and generally provides Arduino libraries to use with their hardware. Indeed, the Arduino Logger Shield is well documented and comes with two C++ libraries: SD which implements a FAT file system and supporting low-level SD card I/O functions. RTCLib which wraps the I2C interface required to communicate with the DS1307 real time clock.
The SD Card Interface

Lets deal with the SD card reader and the file system first: a quick review of SD.h reveals two C++ classes:

class File : public Stream {} exposing standard read, write, seek, flush file access functions.class SDClass {} exposing storage management such as file and directory operations.
This is good news because the .NET Micro Framework on the Netduino already supports file streams and directory management through the use of the .NET MF System.IO assembly. This assembly comes with the .NET MF SDK port to the Netduino.

By the same token, interfacing with an SD card is provided by an assembly built by Secret Labs named SecretLabs.NETMF.IO which comes with the Netduino SDK.

SecretLabs.NETMF.IO provides two functions for 'mounting' and 'un-mounting' an SD card device and the associated FAT file system so that it can be made usable by the .NET MF through assemblies such as System.IO.
It's important to note that the SecretLabs.NETMF.IO assembly must not be deployed with an application targeting the Netduino Plus: on boot, the .NET Micro Framework implementation specific to the Netduino Plus automatically detects and mounts the SD card if one is present in its microSD card reader. This functionality is redundant with the MountSD / Unmount functions provided by the SecretLabs.NETMF.IO assembly which is only needed on Netduino SKUs without a built-in SD card reader.
How does the .NET MF interact with the SD card through the shield?

At this point, it's a good time to review the Arduino Logger Shield's pin-out and the shield's schematics:

As we know from our previous article, pins D10-D13 map to the SPI interface and pins A4-A5 map to the I2C interface of the Netduino. On the shield's schematics, the SPI interface leads us to the SD & MMC section of the diagram, connected through a 74HC125N logic-level shifter chip indicated as IC3A-D.
The role of the logic-level shifter is to ensure that logic voltages supplied to the SD card do not exceed 3.3v, even if they come from a microcontroller using 5v logic levels, such as the Arduino. When using an SD card with a Netduino, a level-shifter is not required since all logic levels run at 3.3v on the AT91SAM7x chip but it doesn't interfere with any I/O operations either when the voltage is already 3.3v.

The SD card reader in itself is just a passive connector, giving access to the controller built into the SD card. It also provides a mechanical means (i.e. switches) of detecting the presence of a card in the reader (see JP14 pin 1) as well as detecting if the card is write-protected (see JP14 pin 2). We'll make use of the card detection pin in the sample temperature logging application later on.
For background on how SD cards work, the following application note "Secure Digital Card Interface for the MSP430" is excellent and much easier to digest than the extensive 'simplified' SD card protocol specifications provided on the SD Card Association site. The following table taken from the "Secure Digital Card Interface for the MSP430" shows the pin out of an SD card and the corresponding SPI connections:

An SD standard-compliant card can support 3 distinct access modes, each one providing different performance characteristics:

SD 1-bit protocol: synchronous serial protocol with one data line, one clock line and one line for commands. The full SD card protocol command set is supported in 1-bit mode.SD 4-bit protocol: this mode is nearly identical to the SD 1-bit mode, except that the data is multiplexed over 4 data lines, yielding up to 4x the performance of SD 1-bit mode. The full SD card protocol command set is supported in 4-bit mode.SPI mode: provide a standard SPI bus interface (/SS, MOSI, MISO, SCK). In SPI mode, the SD card only supports a subset of the full SD card protocol but it is sufficient for implementing a fully functional storage mechanism with a file system.
As you might have guessed, the .NET Micro Framework on the Netduino makes use of the SD card in SPI mode (see DeviceCodeDriversBlockStorageSDSD_BL_driver.cpp). The block-oriented SD card I/Os are abstracted thanks to the FAT file system provided by the System.IO assembly (see DeviceCodeDriversFSFATFAT_FileHandle.cpp and FAT_LogicDisk.cpp).
The role of the SecretLabs.NETMF.IO assembly on the Netduino (or its built-in equivalent on the Netduino Plus) is to initialize the SD card in SPI mode during the 'mounting' process by sending the proper set of commands as defined in the SD Card protocol.
In the C# code of the AdafruitNetduinoLogger sample application, which we will review as a whole later on in the code walkthrough section, the following function takes care of the SD card initialization:

public static void InitializeStorage(bool mount) { try { if (mount == true) { StorageDevice.MountSD(SdMountPoint, SPI.SPI_module.SPI1, Pins.GPIO_PIN_D10); } else { StorageDevice.Unmount(SdMountPoint); } } catch (Exception e) { LogLine("InitializeStorage: " + e.Message); SignalCriticalError(); }}Once mounted, the file system is accessed through System.IO calls such as this:

using (var tempLogFile = new StreamWriter(filename, true)) { tempLogFile.WriteLine(latestRecord); tempLogFile.Flush();}Using the StreamWriter class in this context made sense for writing strings as used in the sample application:

However, there are many other file I/O classes available in System.IO that may be better suited depending on the scenario.
The DS1307 real time clock

Our next step is to examine the interface with the DS1307 real time clock (RTC). We'll start by extracting the most important parts of the DS1307 datasheet and reviewing how it's wired up on the shield's schematics.
DS1307 features

Real-Time Clock (RTC) Counts Seconds, Minutes, Hours, Date of the Month, Month, Day of the week, and Year with Leap-Year Compensation Valid Up to 210056-Byte, Battery-Backed, General-Purpose RAM with Unlimited WritesI2C Serial InterfaceProgrammable Square-Wave Output SignalAutomatic Power-Fail Detect and Switch CircuitryConsumes Less than 500nA in Battery-Backup Mode with Oscillator Running
Note: If you need to measure the time something takes in milliseconds, a time granularity that the DS1307 clock does not provide, you can use the Utility functions provided by the .NET Micro Framework like this:

var tickStart = Utility.GetMachineTime().Ticks;// var elapsedMs = (int)((Utility.GetMachineTime().Ticks - tickStart) / TimeSpan.TicksPerMillisecond);This timing method relies on the CPU's internal tick counter and is not 100% accurate due to the overhead of the .NET MF itself but may be sufficient in most scenarios. In addition, the internal tick counter rolls over every so often, something that should be taken into account in production code.
DS1307 register map

Accessing the clock's features comes down reading and writing to and from a set of registers as described on page 8 of the datasheet.

Page 9 of the DS1307 datasheet provides more details about the square wave generation function of the clock, which we will not be using here. The generated square wave signal is available on the shield through connector JP14 on pin 3 as you can see on the schematics below and can be used to provide a slow but reliable external clock signal to another device such as a microcontroller.

DS1307 I2C bus address

The final piece of the puzzle needed before we can use the DS1307 is the device's address on the I2C data bus and its maximum speed (specified at 100 KHz on page 10 of the datasheet). The device address is revealed on page 12 as being 1101000 binary (0x68) along with the two operations modes (Slave Receiver and Slave Transmitter) of the clock. The 8th bit of the address is used by the protocol to indicate whether a 'read' or a 'write' operation is requested.
Note: I2C devices sometime make use of 10-bit addresses. If you aren't familiar with the I2C data bus, you should read the section of the datasheet starting on page 10 which provides a good foundation for understanding how I2C generally works.
It can be summarized as follows:

I2C is a 2-wire serial protocol with one bidirectional data line referred to as SDA and one clock line, referred to as SCL.The I2C bus is an open-drain bus (i.e. devices pull the bus low to create a '0' and let go of the bus to create a '1'). To achieve this, I2C requires a pull-up resistor on the SCL and SDA lines between 1.8K ohms and 10K ohms. I2C devices do not need to provide pull-ups themselves if the bus already has them.The I2C master (i.e. the Netduino microcontroller) always provides the clock signal, generally between 100 KHz (or lower) for standard speed devices or 400 KHz for high-speed devices. There's also a 'Fast Mode Plus' allowing for speeds up to 1MHz on devices supporting it. There can be more than one master on the bus even though this is uncommon.An I2C device can have a 7-bit or 10-bit address, allowing for multiple I2C devices to be used on the same bus.I2C read and write operations are transactions initiated by the I2C master targeting a specific device by address. Some I2C slave devices can notify their master that they need to communicate using a bus interrupt.A transaction is framed by 'start' and 'stop signals, with each byte transferred requiring an acknowledgement signal.

At this point, we have all the pieces needed to communicate with the RTC using I2C transactions.
Using the I2C protocol with the .NET Micro Framework

On the Arduino, the library used with the shield to communicate with the DS1307 is a C++ library called RTClib. The header of the library declares a DateTime class, similar in functionality to the standard .NET Micro Framework DateTime class provided by System in the mscorlib assembly. We'll use the standard .NET MF data type to work with the clock instead.
The next declared class is RTC_DS1307 which implements the driver for the DS1307 chip using the Wire library to wrap the I2C protocol. The .NET Micro Framework also supports the I2C protocol through to the Microsoft.SPOT.Hardware assembly. Here again, we'll use the .NET MF implementation of I2C in order to communicate with the clock. However, the I2C transaction patterns implemented by the C++ driver can still provide a useful guide for writing a C# driver for the DS1307 when you don't know where to begin just based on the datasheet.
For instance, the following functions taken from RTClib.cpp shows the call sequence used with the Wiring API to address the date and time registers of the clock:

int i = 0; //The new wire library needs to take an int when you are sending for the zero registervoid RTC_DS1307::adjust(const DateTime& dt) { Wire.beginTransmission(DS1307_ADDRESS); Wire.write(i); Wire.write(bin2bcd(dt.second())); Wire.write(bin2bcd(dt.minute())); Wire.write(bin2bcd(dt.hour())); Wire.write(bin2bcd(0)); Wire.write(bin2bcd(dt.day())); Wire.write(bin2bcd(dt.month())); Wire.write(bin2bcd(dt.year() - 2000)); Wire.write(i); Wire.endTransmission();}DateTime RTC_DS1307::now() { Wire.beginTransmission(DS1307_ADDRESS); Wire.write(i); Wire.endTransmission(); Wire.requestFrom(DS1307_ADDRESS, 7); uint8_t ss = bcd2bin(Wire.read() & 0x7F); uint8_t mm = bcd2bin(Wire.read()); uint8_t hh = bcd2bin(Wire.read()); Wire.read(); uint8_t d = bcd2bin(Wire.read()); uint8_t m = bcd2bin(Wire.read()); uint16_t y = bcd2bin(Wire.read()) + 2000; return DateTime (y, m, d, hh, mm, ss);}The final class is RTC_Millis, a utility class converting time data into milliseconds, effectively providing the functionality of the DateTime.Millisecond property on the .NET MF.
Having assessed that the functionality of RTClib only handles date and time registers and knowing the role of the other clock registers, we can proceed with implementing a complete DS1307 C# driver, supporting the square wave and RAM functions, using the native I2C protocol support of the .NET Micro Framework.
The driver starts by defining key constants matching the clock registers according to the datasheet:

[Flags]// Defines the frequency of the signal on the SQW interrupt pin on the clock when enabledpublic enum SQWFreq { SQW_1Hz, SQW_4kHz, SQW_8kHz, SQW_32kHz, SQW_OFF };[Flags]// Defines the logic level on the SQW pin when the frequency is disabledpublic enum SQWDisabledOutputControl { Zero, One };// Real time clock I2C addresspublic const int DS1307_I2C_ADDRESS = 0x68;// Start / End addresses of the date/time registerspublic const byte DS1307_RTC_START_ADDRESS = 0x00;public const byte DS1307_RTC_END_ADDRESS = 0x06;// Start / End addresses of the user RAM registerspublic const byte DS1307_RAM_START_ADDRESS = 0x08;public const byte DS1307_RAM_END_ADDRESS = 0x3f;// Square wave frequency generator register addresspublic const byte DS1307_SQUARE_WAVE_CTRL_REGISTER_ADDRESS = 0x07;// Start / End addresses of the user RAM registerspublic const byte DS1307_RAM_START_ADDRESS = 0x08;public const byte DS1307_RAM_END_ADDRESS = 0x3f;// Total size of the user RAM blockpublic const byte DS1307_RAM_SIZE = 56;Next the driver defines an I2C device object representing the clock:

// Instance of the I2C clockprotected I2CDevice Clock;In the class constructor, the I2C clock device is initialized, specifying its address and speed in KHz:

public DS1307(int timeoutMs = 30, int clockRateKHz = 50) { TimeOutMs = timeoutMs; ClockRateKHz = clockRateKHz; Clock = new I2CDevice(new I2CDevice.Configuration(DS1307_I2C_ADDRESS, ClockRateKHz));}The driver retrieves the date and time from the clock through a Get function returning a DateTime object.

public DateTime Get() { byte[] clockData = new byte [7]; // Read time registers (7 bytes from DS1307_RTC_START_ADDRESS) var transaction = new I2CDevice.I2CTransaction[] { I2CDevice.CreateWriteTransaction(new byte[] {DS1307_RTC_START_ADDRESS}), I2CDevice.CreateReadTransaction(clockData) }; if (Clock.Execute(transaction, TimeOutMs) == 0) { throw new Exception("I2C transaction failed"); } return new DateTime( BcdToDec(clockData[6]) + 2000, // year BcdToDec(clockData[5]), // month BcdToDec(clockData[4]), // day BcdToDec(clockData[2] & 0x3f), // hours over 24 hours BcdToDec(clockData[1]), // minutes BcdToDec(clockData[0] & 0x7f) // seconds );}Let's break it down:

A 7-byte array is allocated which will receive the raw date and time data registers, starting at address DS1307_RTC_START_ADDRESS (0x00) and ending at DS1307_RTC_END_ADDRESS (0x06).An I2C transaction object is allocated, comprising two parameters:
A 'write' transaction object telling the DS1307 device which register address to start reading data from. In this case, this is DS1307_RTC_START_ADDRESS (0x00), the very first time-keeping register.A 'read' transaction object specifying where the clock's time-keeping data registers will be stored, implicitly defining the total number of bytes to be read and acknowledged.
Clock.Execute is the function calling into the .NET MF I2C interface to run the prepared transactions. The second parameter specifies a time out value expressed in milliseconds before the transaction fails, resulting in a generic exception being thrown.When the transactions succeed, a DateTime object is instantiated with the 7 time-keeping registers returned by the 'read' transaction. Each register is converted from Binary Coded Decimal form to decimal form using a custom utility function:

protected int BcdToDec(int val) { return ((val / 16 * 10) + (val % 16));}Conversely, the driver provides a Set function to update the clock's time-keeping registers. Because the driver doesn't expect a response from the DS1307 in this scenario, the I2C transaction is write-only. The fields of the DateTime parameter corresponding to the time -keeping registers are converted from decimal form to BCD form and stuffed in a 7-byte array before executing the transaction.

public void Set(DateTime dt) { var transaction = new I2CDevice.I2CWriteTransaction[] { I2CDevice.CreateWriteTransaction(new byte[] { DS1307_RTC_START_ADDRESS, DecToBcd(dt.Second), DecToBcd(dt.Minute), DecToBcd(dt.Hour), DecToBcd((int)dt.DayOfWeek), DecToBcd(dt.Day), DecToBcd(dt.Month), DecToBcd(dt.Year - 2000)} ) }; if (Clock.Execute(transaction, TimeOutMs) == 0) { throw new Exception("I2C write transaction failed"); }}The rest of the functions provided by the C# driver implement the other DS1307 features, such as

SetSquareWaveHaltSetRAMGetRAMThe [] operator used to access a specific clock registerWriteRegister
In all case, these functions are wrappers around the 'read' and 'write' I2C transaction model, involving the appropriate DS1307 registers as defined in the datasheet.
Using the Adafruit Arduino Logger Shield as a temperature logger

To illustrate the points discussed so far, we'll use the Adafruit Arduino Logger shield with a Netduino and a MAX6675 thermocouple amplifier for the purpose of recording ambient temperature samples at ten second intervals.
Each record includes a date, a time and the temperature expressed in Celsius and Fahrenheit. The records are written to daily files in CSV format for easy export to a spreadsheet, making the application easily adaptable for acquiring data from different sensors:
Date Time Celsius Fahrenheit 6/14/2012 15:35:00:05 18.75 65.75 6/14/2012 15:35:10:05 18 64.4 6/14/2012 15:35:20:05 18.5 65.29 6/14/2012 15:35:30:05 18 64.4 6/14/2012 15:35:40:05 18 64.4 6/14/2012 15:35:50:05 18.75 65.75
Device Connections

Instead of permanently soldering the temperature sensor to the prototyping area of the shield, female / female jumper wires were used to make connections between the shield's own pin headers as well as the thermocouple's male pin headers.

The following table enumerates these connections:
Shield Pin Destination Pin 3v (Power header) Max6675 VCC GND (Power or Digital I/O header) Max6675 GND D13 (Digital I/O header, SPI CLK) Max6675 CLK (SPI CLK) D12 (Digital I/O header, SPI MISO) Max6675 DO (SPI MISO) D2 (Digital I/O header, used as SPI /SS) Max6675 CS (SPI /SS) L1 (LEDS header) D1 (Digital I/O header) L2 (LEDS header) D0 (Digital I/O header) CD (SD card detect) D3 (Digital I/O header) Reading temperature using an Adafruit Max6675 Thermocouple amplifier breakout board

The Max6675 thermocouple amplifier chip on the breakout board is a read-only SPI device. When the CS pin (SPI /SS) of the device is asserted with a 1ms delay before reading, the chip returns a 12-bit value on its DO pin (SPI MISO) corresponding to the temperature measured by a K-type Thermocouple wire. The resulting C# driver for the Max6675 is short:

using System;using Microsoft.SPOT;using Microsoft.SPOT.Hardware;namespace Maxim.Temperature{ public class Max6675 : IDisposable { protected SPI Spi; public void Initialize(Cpu.Pin chipSelect) { Spi = new SPI( new SPI.Configuration( chipSelect, false, 1, 0, false, true, 2000, SPI.SPI_module.SPI1) ); } public double Celsius { get { return RawSensorValue * 0.25; } } public double Farenheit { get { return ((Celsius * 9.0) / 5.0) + 32; } } protected UInt16 RawSensorValue; protected byte[] ReadBuffer = new byte[2]; protected byte[] WriteBuffer = new byte[2]; public void Read() { RawSensorValue = 0; Spi.WriteRead(WriteBuffer, ReadBuffer); RawSensorValue |= ReadBuffer[0]; RawSensorValue = 3; } public void Dispose() { Spi.Dispose(); } ~Max6675() { Dispose(); } }}Temperature logger application walkthrough

Let's review the key parts of the temperature logging application code and how it interacts with the devices connected to the shield.

public static readonly string SdMountPoint = "SD";Defines an arbitrary string used to refer to the SD card when using StorageDevice.MountSD and StorageDevice.Unmount functions.

public static readonly int TemperatureLoggerPeriod = 10 * 1000; // millisecondsDefines the interval between temperature samples.

public static OutputPort LedRed = new OutputPort(Pins.GPIO_PIN_D0, false);Defines an output connected to pin D0 controlling the state of the red LED on the shield.

public static OutputPort LedGreen = new OutputPort(Pins.GPIO_PIN_D1, false);Defines an output connected to pin D1 controlling the state of the green LED on the shield.

public static InputPort CardDetect = new InputPort( Pins.GPIO_PIN_D3, true, Port.ResistorMode.PullUp);Defines an input connected to pin D3 used to determine if an SD card is inserted in the SD socket.

public static ManualResetEvent ResetPeripherals = new ManualResetEvent(false);Defines a manual reset event object that will be used in the main application loop to determine when to re-initialize the shield's peripherals.

public static readonly Cpu.Pin ThermoCoupleChipSelect = Pins.GPIO_PIN_D2;Defines D2 as the SPI chip select pin connected to the Max6675 Thermocouple board.

public static Timer TemperatureSampler;Defines an instance of a timer object which will drive temperature sampling.

public static DS1307 Clock;Defines an instance of the DS1307 real time clock driver.

public static Max6675 ThermoCouple;Defines an instance of the Max6675 thermocouple driver.

public static ArrayList Buffer = new ArrayList();Defines an array list instance which will be used as a temporary buffer when the SD card is removed from its socket.
The application's main loop is only concerned about the state of the peripherals:

It initializes the devices connected to the shieldIt waits indefinitely for a signal indicating that a hardware error occurredIt disposes of the current device instances and starts over

public static void Main() { while (true) { InitializePeripherals(); ResetPeripherals.WaitOne(); ResetPeripherals.Reset(); DeInitializePeripherals(); }}InitializePeripherals indicates that it is working by controlling the green LED on the shield. Its role is focused on object creation and initialization.

public static void InitializePeripherals() { LedGreen.Write(true); Clock = new DS1307(); ThermoCouple = new Max6675(); InitializeStorage(true); InitializeClock(new DateTime(2012, 06, 14, 17, 00, 00)); ThermoCouple.Initialize(ThermoCoupleChipSelect); TemperatureSampler = new Timer( new TimerCallback(LogTemperature), null, 250, TemperatureLoggerPeriod); LedGreen.Write(false);}If the initialization of a peripheral fails, the shield will quickly blink its LEDs, indefinitely:

public static void SignalCriticalError() { while (true) { LedRed.Write(true); LedGreen.Write(true); Thread.Sleep(100); LedRed.Write(false); LedGreen.Write(false); Thread.Sleep(100); }}The clock initialization function only sets the clock date and time when it is unable to find a file named 'clockSet.txt' on the SD card, ensuring that the initialization of the DS1307 only happens once in the InitializePeripherals function or until the file is deleted.

public static void InitializeClock(DateTime dateTime) { var clockSetIndicator = SdMountPoint + @"clockSet.txt"; try { if (File.Exists(clockSetIndicator) == false) { Clock.Set(dateTime); Clock.Halt(false); File.Create(clockSetIndicator); } } catch (Exception e) { LogLine("InitializeClock: " + e.Message); SignalCriticalError(); }}The LogTemperature function is the callback invoked by the Timer object every 10 seconds. The function indicates that it is working by turning the red LED on the shield ON and OFF.

public static void LogTemperature(object obj) { LedRed.Write(true);}The function reads the current time from the clock with Clock.Get() and takes a temperature sample with ThermoCouple.Read().

var tickStart = Utility.GetMachineTime().Ticks;var now = Clock.Get();ThermoCouple.Read();var elapsedMs = (int)((Utility.GetMachineTime().Ticks - tickStart) / TimeSpan.TicksPerMillisecond);Then, it concatenates a string containing the date, time and temperature expressed in Celsius and Fahrenheit, with each field separated by commas.

var date = AddZeroPrefix(now.Year) + "/" + AddZeroPrefix(now.Month) + "/" + AddZeroPrefix(now.Day);var time = AddZeroPrefix(now.Hour) + ":" + AddZeroPrefix(now.Minute) + ":" + AddZeroPrefix(now.Second) + ":" + AddZeroPrefix(elapsedMs);var celsius = Shorten(ThermoCouple.Celsius.ToString());var farenheit = Shorten(ThermoCouple.Farenheit.ToString());var latestRecord = date + "," + time + "," + celsius + "," + farenheit;To make the data more manageable, daily temperature files are created as needed, each one starting with the column headers expected for parsing the values in CSV format.

var filename = SdMountPoint + BuildTemperatureLogFilename(now);if (File.Exists(filename) == false) { using (var tempLogFile = new StreamWriter(filename, true)) { tempLogFile.WriteLine("date,time,celsius,fahrenheit"); }}The temperature sampling application lets the user remove the SD card from its socket so that the CSV files can be moved over to a PC for processing without losing data in the meantime. In order to do this, the application checks the state of the 'Card Detect' pin before attempting file system I/Os.
When the SD card is not present, the latest temperature record is preserved in the array list buffer until the SD card is put back in its socket. The array list data is then flushed to storage.

if (CardDetect.Read() == false) { using (var tempLogFile = new StreamWriter(filename, true)) { if (Buffer.Count != 0) { foreach (var bufferedLine in Buffer) { tempLogFile.WriteLine(bufferedLine); } Buffer.Clear(); } tempLogFile.WriteLine(latestRecord); tempLogFile.Flush(); }} else { LogLine("No card in reader. Buffering record."); Buffer.Add(latestRecord);}The temperature logging function expects to run out of memory if the array list buffer grows too large, in which case, all the records get purged. Other memory management strategies could be used to mitigate data loss in this case. However, this depends entirely on the requirements of the data logging application and is out of scope for this discussion.

catch (OutOfMemoryException e) { LogLine("Memory full. Clearing buffer."); Buffer.Clear();}The temperature logging function also handles file system exceptions caused by the removal of the SD card and reacts by signaling the ResetPeripherals event. In turn, this lets the application's main loop know that the peripherals, and most specifically the SD card, need to be recycled and initialized again in order to recover from the error.

catch (IOException e) { LogLine("IO error. Resetting peripherals."); Buffer.Add(latestRecord); ResetPeripherals.Set();}Conclusion

In this article, we took a shield designed for the Arduino and learned how to critically review the Arduino code libraries supporting it, drawing parallels with features offered by the .NET Micro Framework. This process allowed us to identify areas in the Arduino code which were not necessary to port over to C# such as SD card and file system handlers. It also allowed us to see the similarities in the way the Arduino and the Netduino handle I2C communications.
Most importantly, we also learned the importance of reviewing a device's schematics and component datasheets to ensure that important features have not been omitted and potentially incorrectly implemented when considering using an unknown library: in the case of RTClib, we saw that the implementation was limited to the basic date and time functions of the DS1307, leaving out other useful features such as the clock's built-in RAM and the square wave generation functions.
In our next article, we'll take on a much more complex shield and we will learn how to analyze Arduino libraries in depth before porting them from C/C++ to C#.

Fabien is the Chief Hacker and co-founder of Nwazet, a start-up company located in Redmond WA, specializing in Open Source software and embedded hardware design. Fabien's passion for technology started 30 years ago, creating video games for fun and for profit. He went on working on mainframes, industrial manufacturing systems, mobile and web applications. Before Nwazet, Fabien worked at MSFT for eight years in Windows Core Security, Windows Core Networking and Xbox. During downtime, Fabien enjoys shooting zombies and watching sci-fi.


When you have a Ferrari you might want to test drive it on a circuit, where there are none of the limitations of a town street. Well, when you have Internet Explorer 9 Beta you need a circuit on which to test it, something more than just your average Internet websites, applications and services.

Somewhere where you could really go pedal to the metal on IE9. Where the browser will show just what it is capable of.

Fortunately enough, a wide range of such sites designed for Internet Explorer 9 already exist, with a plethora of Microsoft partners introducing new IE9-related web projects with the launch of the Beta on September 15th, 2010.

The Beauty of the Web launch event for IE9 Beta earlier this week was a real show of force from Microsoft partners.

At the bottom of the screen I included a range of photos from the partner section of the event. Below you will also be able to find a list of links with some amazing IE9 websites from the software giants Beauty of the Web event.

Richer Web experiences can blend into the consumer's desktop experience comfortably and consistently. So, today we have an A to Z, literally, of Web sites, partners, live with Web experiences that take advantage of IE9, even more than the A to Z of the Web, revealed Dean Hachamovitch, Corporate Vice President, Internet Explorer, Microsoft earlier this week.

Users will be able to easily notice that IE9 can enhance the experiences associated with social networks such as Facebook, Twitter, and Netlog.

But there is additional bleeding edge content from various web design firms, and new perspectives on entertainment and news from BBC, CNN, Hulu, Vimeo, and Daily Motion.

Over 50 projects were on display in total, many of them built in very short time, just a matter of weeks, in preparation for the event.

But all of them extremely impressive, and all of them already live on the web, and available to testers around the world.

Its important to underline that although the Redmond company catalyzed the creation of the projects, it made sure to have them work not only across Internet Explorer 9, but also across rival browsers.

Superb projects such as Endless Mural will function in IE9, as well as any other browser that supports HTML5.

All the websites featured at the Beauty of the web event in fact, are set up to take advantage of modern web standards, such as HTML5, CSS3, SVG, etc.

And usage is in no way restricted to IE9, which is a brilliant move from Microsoft, showing its commitment to users, developers and partners alike, and a strong focus on driving the web forward by making the same markup vision a reality.

Today partners around the Internet join us in releasing new experiences for the Web. Over 70 top sites and brands that reach over two-thirds of active Internet users. Together that's over 800 million visitors whose Web experience just got better on Windows with IE9, Hachamovitch added on September 15th.

Here is the list of IE9 websites, with short descriptions from Microsoft:

1. Amazon - Amazon.com, Inc. seeks to be Earth's most customer-centric company.

By integrating the pinning and Jump List features enabled by Internet Explorer 9, Amazon continues to enhance the on-line shopping experience for customers by giving them easy access to Amazon.com favorites such as Gold Box Deals and Best Sellers as well as enabling customers to manage their accounts and check the status of orders quickly and effortlessly.

2. Agent 008 Ball by Pixel Lab - Agent 008 Ball is an addictive game that combines billiards with the high stakes world of international espionage. Cutting edge HTML5 features (like Audio and Canvas) supported by Internet Explorer 9, combined with stunning graphics draw you in as you attempt to beat a timer and avoid the nefarious tricks of the terrorist organization CHALK.

3. Always Beautiful by Big Spaceship - Using the new features included in Internet Explorer 9, Big Spaceship created Always Beautiful, an interactive visualization set to music.

Users manipulate colors and objects that adapt to the song's rhythm and structure. At the end of the song, the user is shown the high-resolution artwork they've created using the powerful SVG capabilities and improved JavaScript performance of Internet Explorer 9.

4. AP News Reader by Vectorform - The AP News Lab "Timeline Reader" is a collaboration between Vectorform and The Associated Press (AP) exploring new ways of visualizing and reading online news.

We sought out to create a fully featured online reader application that showcases the beautiful high-res imagery from the AP side-by-side with a full article reading experience.

Users can browse through all of their favorite news categories simultaneously in a timeline visualization that frames the days events in a complete chronological sequence. The site is also a showcase of the latest advances in HTML5 and CSS3 supported in modern web browsers.

Some of the new technologies utilized were the HTML5 canvas tag to create a fast loading and snappy intro animation/splash screen, HTML5 local storage to keep track of read articles and a reading queue, and CSS3 support for embedding web fonts.

5. AMD Space Command - AMD Space Command is a fun game that shows the graphics acceleration of Direct2D technology in the Internet Explorer 9 browser.

Shoot as many space attackers possible, and use the GPU capacitor to adjust the intensity of the game. AMD Space Command is built in HTML5, leveraging the GPU in your PC to improve graphics.

You can see this first hand by keeping track of the Frames Per Second (FPS) as you adjust your GPU capacitor!

6. BeatKeep by Archetype - Community and creativity are the driving forces behind Archetypes BeatKeep application.

BeatKeep allows drummers, musicians, and music enthusiasts to discover, create, and share beats of any genre. Through intuitive interactions and the power of HTML5 on Internet Explorer 9, BeatKeep allows users to create unique audio tracks and share them on social networks like Facebook.

7. Beautiful Explorer by Soleil Noir - Web is beautiful, spontaneous, ephemeral and so creative. The beauty of the web is the creative contents produced by everyday people. This website is a design trends daily overview. We hope you'll enjoy it.

8. BMW Vision by EMC - EMC Consulting and BMW have a created the BMW Car Configurator, a ground-breaking tool that shows off the extraordinary BMW Vision EfficientDynamics concept car.

The experience relies on the high performance of Internet Explorer 9, bringing together the awesome power of Chakra, its new JavaScript engine, and GPU acceleration to enable car enthusiasts to manipulate both the car and its environment with a fluid three-dimensional feel.

9. Brain Power by R2Integrated and Scientific America - R2integrated developed Brain Power, a website and interactive learning tool to introduce users to the many parts of the human brain and its functionality.

Brain Power uses HTML5, SVG, CSS3, and JavaScript. An animation layer produces real-time interactions with elements drawn within the HTML5 canvas.

The HTML5/CSS3 engine within Internet Explorer 9 makes full rich interactive applications practical for all new websites. In short, HTML5 and Internet Explorer 9 introduce end users to new levels of flexibility, capability, and expression.

10. Chinese Shadow Play by RedSAFI - Chinese Shadow Play is a traditional form of Chinese art. This demo lets users choose an iconic Chinese shadow puppets, play with puppets individually and organize the puppets in formations.

This demo shows off the power of the Internet Explorer 9 Canvas by featuring a physics engine and a bones system, as well as beautiful bitmap art to create an engaging viewing experience.

11. Also by RedSAFI: Chinese Kite Experiment - In this demo, a user can select a kite and choose a flight pattern.

The user can also add fans to the stage and add collision detection to alter the kites flight. This demo shows off Internet Explorer 9 Canvas performance by featuring a physics engine to create the flying environment.

12. Comicx Parallax by Steaw Design - As web technologies continue to evolve, we prepare to enter the age of HTML5. Created for Beauty of The Web in honor of the Internet Explorer 9 launch, Never Mind the Bullets offers the traditional comic strip experience enriched by parallax.

With a simple movement of the mouse, the strip is animated and the story comes to life. It unfolds at LongHorn Gush, a quiet town troubled by a band of outlaws, The Red Bandanas.

However, with the arrival of the famous Bill One Shot Collins, things are about to change.

13. Cracked.com by Demand Media - Pinning Cracked.com to your task bar allows you easier access to one of the fastest growing humor sites in the world.

Now all of Crackeds award-winning content is only one click away no matter where you are online!

14. DailyMotion - Dailymotion is pleased to announce the release of its new HTML5 Player Beta and Demo.

This development takes advantage of the latest web standards, and permits streaming video playback without the need for plugins," said Olivier Poitrey, CTO and Co-Founder.

"We are excited to partner with Microsoft for this announcement as the new Internet Explorer 9 shows commitment to both web standards and innovation. Internet Explorer 9 sets itself apart by supporting hardware accelerated graphics and offering users a more app-like experience with their new Site Mode.

15. Digital News Archive (DNA) by Nave - The web site provides Korean newspapers from various publishers dates starting from 1960's to 1990's.

Users can easily browse through the newspapers using simple UI. To maximize the user experience, the Canvas element was heavily utilized. With the Canvas, we could make zoom, page navigation and other transitions smooth and enjoyable for the users.

16. Discovery - As the worlds number one nonfiction media company, Discovery Communications is always looking for new ways to engage with our passionate fans.

By building new Internet Explorer 9 functionality into Discovery.com, TLC.com and AnimalPlanet.com, we are able to give audiences even more ways to interact with and learn from their favorite TV shows and personalities.

17. EBay

18. eHow by Demand Media - eHow offers more than 2 million articles and videos, providing visitors with trusted solutions for completing lifes daily tasks or larger projects.

With Internet Explorer 9, users enjoy an optimized and more dynamic eHow, a faster loading and immersive video experience - without the need for 3rd party software - plus new tools to bring relevant eHow content straight to our users fingertips.

19. Facebook - More than 500 million people actively engage with their friends on Facebook each month.

With IE9, Facebook users will be able to more quickly access and manage their social activities through the browser and get back to their friends via a seamless and rich experience.

20. Flixster - Flixster is the largest online movie community and the leading movie application for mobile devices.

Flixster is using Internet Explorer 9s new features to give users quick and easy access to great movie content right from the desktop.

21. Floweroscope by LA Surprise - Floweroscope provides users with a kaleidoscope-like online artistic experience that explores the new capacities of Internet Explorer 9 to create a unique animation experience.

Floweroscope provides symmetrical effects and randomly generated shapes, and the user controls the shape colors and sizes.

An HTML5-supported volume effect and the new Chakra JavaScript engine immerse the user into the experience. The Internet Explorer 9 Canvas element provides an innovative way to draw hardware-accelerated animations without plugins.

22. Gorillaz - Gorillaz.com has been optimised for Internet Explorer 9 to take advantage of some great new integration features with Windows 7.

Fans can now drag the Gorillaz favicon to their taskbar and access it like an app. Right-clicking on the Gorillaz icon in the taskbar provides access to site features like News or the G Player.

Gorillaz fans can even personalise this list by clicking the star to save any page. Powered by HTML5, Murdocs Reading Room is turned into an interactive space.

He'll talk you through it as you zoom up to the gallery wall and listen to tracks, bring up the Story So Far book off his coffee table with stunning pictures, html5 video and audio, and have a nosey look through the contents of his laptop. Click on the video to play an HTML5 video!

23. Hulu - Hulu on Internet Explorer 9 and Windows 7 will allow users to customize their Jump List menu with the most popular destinations on the site.

To customize, users simply select the menu items in their profile page and they become accessible whenever/wherever you are on Hulu.com.

The site will also enable contextual menus on Show Pages and Watch Pages allowing users to Subscribe to shows or control their video watching experience during content playback.

24. IMDb - More than 100 million unique visitors per month turn to IMDb to discover which movies are coming out and decide what to watch.

IMDbs new HD Trailer Gallery utilizes HTML5 and Internet Explorer 9 hardware acceleration to dramatically enhance the trailer viewing and movie discovery experience on IMDb.

25. Jack & the Beanstalk, an Animated, Interactive Storybook by Clarity Consulting - The site blends fantasy and realism in custom illustrations animated by physics-based JavaScript.

The GPU acceleration in Internet Explorer 9 allows for smooth rendering of animations, even when leveraging heavy physics libraries. Coupled with SVG graphics and embedded audio most are surprised to hear the entire site has been created using HTML5, CSS, and JavaScript.

The newly supported features of Internet Explorer 9 allows for rich interactivity without the overhead of the traditional plug-in based model.

26. JitterBug by Cynergy - JitterBug is a fast, fun game built exclusively in HTML5. Showing off the rich media and rendering power of Internet Explorer 9, the game challenges the player to draw lassos around fast moving bugs to unlock the Band and start the show before the time runs out.

Relying heavily on Internet Explorer 9s impressive Canvas abilities, this rich playing experience redefines whats possible in HTML based game play.

27. Kaboodle - Kaboodle is the Internets largest social website for passionate shoppers. Kaboodles shopping tools allow users to add products from anywhere online to their Kaboodle lists and to share those products with others.

The sites integration with Internet Explorer 9 will provide Kaboodle community members with easy access to their personalized shopping content via a custom Jump List, ensuring that it is always just one click away.

28. LinkedIn - LinkedIn is an Internet platform company focused on connecting the world's professionals.

The company is privately held and has a diversified business model with revenues driven from user subscriptions, advertising sales and enterprise software licensing.

The LinkedIn Web site launched in 2003 and is the largest professional networking site in the world with more than 75 million members, representing 200 countries and executives from every Fortune 500 company.

LinkedIns integration with Internet Explorer 9 will provide its members with one-click access to their professional network and business insights via a custom Jump List.

29. Live Strong by Demand Media - LIVESTRONG.COM inspires and empowers people to achieve their daily goals around living healthy.

With Internet Explorer 9, users enjoy a more dynamic experience including an expanded HD video browsing and improved recipe discovery.

A newly optimized experience of the popular MyPlate food and fitness tracking application keeps users engaged in real-time.

30. Lost Worlds Fairs by Friends of Mighty - To celebrate Internet Explorer 9s support for the Web Open Font Format (WOFF) Jason Santa Maria, Frank Chimero, Naz Hamid, and Trent Walton have teamed up to create a series of web broadsheets for Worlds Fairs that never were.

Each piece uses fully live text (with some HTML5 and CSS3) to showcase whats typographically possible on the web.

31. MONA (Museum Of Neverending Art) by groupeReflect - At the MONA, users work together to create the biggest online artwork ever.

Everyone can create, draw, write, upload pictures, and add and alter things on the canvas. Its a user-generated piece of art, which is constantly in motion.

Using Internet Explorer 9 technologies such as HTML5 / CSS3, WebFonts, Canvas and the new Internet Explorer 9 JavaScript Engine, MONA makes you rediscover the beauty of the web, as well as recreate it.

32. MySpace - MySpace Video offers music videos, full episodes of TV shows, and user generated content and creates a social environment for users to view, create and share videos with friends.

In Internet Explorer 9, MySpace Video serves over 200,000 videos and UGC video clips in state of the art high-def H.264 in full compliance with HTML5. Jump Lists in Internet Explorer 9 offer quick content discovery and easy navigation.

33. National Museum Gallery China by NX - One of the most famous museums in China, National Museum of China (NMC) now allows visitors to explore the galleries on their feet or on the web.

Internet Explorer 9s HTML5 support is just right for this scenario: easy to develop with great flexibility, smooth video and audio playback and a fast experience with the new JavaScript engine.

34. Netlog - Netlog is an online platform where users can keep in touch with and extend their social network and is currently available in 37 languages and has more than 69 million members throughout Europe, and this number increases every day.

Netlog is taking advantage of pinning site to the taskbar and thereby making sure users get to the activities within Netlog they care about via the Jump List.

35. One Day in Beijing by Toujie - One Day in Beijing provides a virtual tour of famous Beijing sites, including the Great Wall, Temple of Heaven, Beihai Park, Tian An Men, and National Stadium China (Bird Nest).

These are the must-go places for anyone touring Beijing. By harnessing the power of Internet Explorer 9 and HTML5 along with the Internet Explorer 9 Canvas 2D API, we created a multitude of interactive scenarios.

Users can experience flying clouds and mouse sensitive navigation, as well as other HTML 5 demos like flying kites, and piyingxi.

36. Photobucket - Photobucket is the premier destination for saving, sharing, searching, and creating images and video on the Web.

With Internet Explorer 9, Photobucket is using Jump List, which will allow users to access both their own content and content from topical Find Stuff categories directly from their desktop.

37. Quiksilver

38. Red Bull by Archetype - Archetype has created a next generation global media and social experience for Red Bull.

This interactive application allows users to browse Red Bulls rich set of photos and video, dynamically surfacing content based on its popularity in social networking sites and on users' interests.

It takes advantage of HTML 5, SVG, CSS3, Jump Lists, Scaling, Audio/Video tags and custom font features and functionality offered by Internet Explorer 9 to raise the bar for interactivity and design in standards based websites.

39. Rough Guides by Metia - Members of this interactive community use an animated compass to navigate a map of the world; view geo-located photographs pulled from the Flickr database; and explore 200 travel experiences selected by Rough Guides.

Members can also submit their own images to the community, and share favourite experiences from their online travels using Facebook, Twitter and email.

40. RTL - RTL Group is a house of excellent content and powerful brands, which is able to deliver its content to all media platforms worldwide and to repeat its broadcasting success story in every country while fulfilling its obligation to society.

By combining pinning, Jump List and previews into the RTL experience, Internet Explorer 9 users get convenient access to the most popular RTL content.

41. Sohu NBA by Digital Hall nbadata.sports.sohu.com - Sohu Sports is one of the most popular interactive sports information network among sport enthusiasts.

Being the NBA-licensed live video broadcast site for NBA events in China, NBA fans can access team schedules, game videos and team/player data, photos, chat rooms, voting and other interactive features. Internet Explorer 9 plus HTML 5 gives an unparalleled high performance hardware accelerated graphics and video experience.

42. t-online.de - This showcase is a sneak peek at the future of t-online.de.

Core features are new picture and video galleries, a 360 degree view of consumer products and a fun and challenging online game, all completely realized in HTML 5.

This, as well as the implementation of the Internet Explorers Jump List feature, offers the user a glimpse of what a modern news website could be like when fully implementing the power and simplicity of HTML 5 in combination with the Internet Explorers unique way to surf the web.

43. The Doll Parade by Freetouch - The Doll Parade allows its users to assemble a wide variety of dolls by customizing their arms, legs, faces and apparel.

Once the doll is assembled the users doll along with other creations march smoothly via an HTML5 Canvas. The experiences takes advantage of HTML 5 (Canvas), SVG and CSS3.

44. The Killers by SparKart - The Killers' website chronicles the band's career, and offers users a seamless browsing experience of the bands music and video content.

The website takes advantage of HTML5, Canvas & SVG across the site's panoramic landscape & internal sections, leveling the playing field in displaying content to users across multiple platforms & devices.

45. The Shodo by Business Architects - The Kanji Calligraphy website takes advantage of powerful new Internet Explorer 9 features to introduce users to the beautiful Japanese calligraphy known as Shodo.

Even better, Kanji Calligraphy allows users to create their own calligraphy-based art work and share it on Twitter and Facebook.

This site is based on several of the features supported by Internet Explorer 9 HTML5 (canvas, video element, audio element), SVG, and WOFF.

46. The Wall Street Journal - WSJ.com offers breaking news coverage, real time quotes, and in-depth analysis and commentary to the business elite.

Its high-end magazine, WSJ., emphasizes luxury and discerning lifestyle content. To make it easier for users to find and enjoy the content, WSJ is implementing favicons, pinning and the Jump List functionality of Internet Explorer 9 and employing HTML5 features for the visually enriched magazine.

Users can more quickly and easily access Journal content on their faster Internet Explorer 9 browsers.

47. TopGear.com by BBC - TopGear.com is the award-winning website of the world famous motoring entertainment brand, Top Gear.

Top Gear presenters, producers, magazine team, and contributors regularly post on TopGear.com. The Cool Wall leverages the HTML5 and hardware accelerated graphics support in Internet Explorer 9 to provide amazingly smooth transitions, Deep Zoom functionality and slick video playback.

48. Twitter - Twitter lets you share and discover what's happening in your world. The Twitter pinned app in Internet Explorer 9 makes it easy to jump into your Twitter timeline, read and send direct messages, and more, so it's never more than a click away.

49. USA Today - As a part of the fifth anniversary of Hurricane Katrina, USA TODAY built a multimedia project examining where things now stand in New Orleans and the Gulf Coast.

To build the site, we used a variety of web standards, including HTML5 video tag and several CSS3 features, that take advantage of the capabilities of cutting-edge web technologies in Internet Explorer 9.

50. Vodpod - Vodpod makes it easy to build your own video channel with your favorite videos from the Web, and to tune in to channels by other members who share your tastes and interests.

By pinning Vodpod to the taskbar in Internet Explorer 9, users will be able to jump right to their real-time Vodpod feed, to their video collection, or to their favorite channels.

51. WebVizBench by Stimulant and KEXP - WebVizBench lets fans of Seattles non-profit radio station KEXP explore historical airplay data, while putting HTML 5's new features to the test. Sift and sort through 6+ years of music, or use the benchmark mode to see how your browser, CPU and GPU stack up against a thorough battery of DOM, canvas, typographic, SVG and video rendering tests.

52. XING - XING is a social network for business professionals with more than 9.6 million members worldwide.

Using Internet Explorer 9 technology such as Jump Lists, XING members can perform tasks like sending messages faster than ever and also receive real-time updates about their network. This supports our XING Anywhere strategy and our efforts to provide our members with great usability.

53. Yahoo! Japan - Through Jump Lists in Internet Explorer 9, users of Yahoo! can enjoy the People, 'TV', 'Game/Animation', and 'Sports' categories of search ranking, and further enjoy it by switching to Yahoo! Auction, and Yahoo! Answer to see what is actively traded or discussed related to popular queries.

54. ZKM - Exhibition and Archive presents a historic online exhibition and a new experience of archival survey.

The side is driven by HTML5, CANVAS, CSS3, SVG and Jump List, which allow graphically rich, standard conform applications and avoids plugins. The pure implementation supports the modern claim of form follows function and adds sustainability.

54 Amazing IE9 Websites You Have to Try - Softpedia

Benchmarks. Every website worth their marbles uses them to varying degrees of accuracy. Meanwhile, every reader wants to recreate them in some way, shape or form in order to do exactly what their favorite publications are doing: to evaluate the performance of their hardware choices and quantify their purchase. Benchmarks can also help diagnose a problem but more often than not websites like Hardware Canucks use these tools to determine how well a given product performs against the competition. As with all things, the number of programs we can attain results with is nearly infinite but it is the job of publications to choose the right set of tools which will accurately convey results to the masses. Unfortunately, as we will show you in this article choosing the right programs and sequences is extremely hard and most of the current methods are inaccurate.

The reason why we have chosen to focus on GPU benchmarking is because this really is the wild-west of the online review industry. A fortune in terms of traffic can be had if GPU reviews are published regularly but with potential traffic increases comes the risk of cutting corners in order to complete the time-consuming benchmarking portion as quickly as possible. Naturally, some time-cutting methods will still produce accurate results while others wont.

Read On: GPU Benchmarking Methods Investigated: Fact vs. Fiction

When I try to shutdown or restart the shutdown begins then stops. Not a freeze, just no shutdown. The event generated in the log is a generic error 1073, i.e., a failure to shutdown. Clearly SOMETHING happens as on a second try the shutdown or restart i
s successful. There is a flash of a window on the first try but it happens so quickly that I can't catch what it says. Is there anyway to slow the shutdown sequence or log it so I can see what is happening? If I could tell what it is doing on that first
try maybe I could figure out how to fix the problem.

I'm running XP Pro.

Here is what we are going to try. We are going to replace the Device
Manager file with the original from the CD.

Put your Windows XP CD into the CD Drive. Navigate onto the CD and into
the folder named i386. Now there will be a lot of files in there, but
you are going to look for one called "devmgmt.ms_". You can just type
the letter d and it will take you to the first file that starts with the
letter d, then look from there. Once you find the file, copy it to your
desktop. Now you will need a program that can "unzip" or decompress
files. Examples would be WinZip, WinRAR, WinACE, or my favorite 7-Zip.
If you don't have any of these, head over to www.7-zip.org and download
and install it.

Now back to the file on your desktop. You are going to need to right
click on the file and select extract file here (or open it with your
Extraction Utility and extract it). Now copy this file into this
directory: C:WindowsSystem32 . If it gives you an error, you may
need to rename the existing file and quickly paste the new one after you
have changed the name of the existing one.

Two, I see you tried to update your chipset drivers as well as made sure
you have all of the updates. That blasts that option, but we may need to
do some registry editing if one of these two options don't work. If the
first option above didn't work, you can try this:

Repair your Windows XP Installation. You are going to need to boot off
the Windows XP CD. To do this, you will need to enter the BIOS and set
the CD-Rom as the first boot device. The BIOS is only accessible when
your computer is starting up (before Windows loads). Right after
choosing to restart the computer and Windows exists, enter the BIOS by
pressing the esc key only if there is an OEM logo such as Dell or HP,
then press whatever the screen says to enter the BIOS or Setup (The
three most common keys are the DEL key, F1, and F2). Once in the BIOS,
you are going to look for boot order or boot sequence or something like
that. Do NOT change anything else other than this. Once oyu have done
this, choose to save and exit. Now the computer will restart (and you
should have your Windows XP CD in the CD-ROM by now) and boot off the
Windows XP CD. It will offer to Install or Recovery Console. Select
Install, it will find your existing installtion and then offer to
Repair. Press R to repair and it will do everything for you from there.
Once it is done, take the CD-ROM out and reboot. Now see if everything
works for you. If it does, you can go back into the BIOS and set the
harddrive as the first boot device

If this doesn't work, we'll see what we can do.

Nathan McNulty

Barbara wrote:
Thanks. I took a look at all of the links and information
on that site, but I didn't see anything to help me if
Device Manager won't even open. It just explained how to
use DM to do various things.

I have also tried a few more things which were suggested
by friends and posted the results and screenshots at:


Any other ideas?


-----Original Message-----
Barbara, check at Kelly's http://www.kellys-korner-


Select D and scroll to Device
"Barbara" wrote in message

I've been trying to install my Kodak digital camera so I
can transfer pictures, but the camera isn't being
detected. As this is the first USB device I have tried
installing on my computer, I tried to go to the Device
Manager to inspect the USB drivers, but Device Manager
won't open. I get an error saying that the snap-in


to initialize. You can see screenshots in my a


html"Journal Entry/a about the issues I'm having as
well as a few things I've already tried.

I am using the Administrator account on the machine, and
I'm running Windows XP Pro version 2002. Windows Update
claims there are no more available patches for my





I've got a very simple database, containing approximately 10 fields, with an incrementing autonumber id.
It's being used to catalogue video tapes of which there are around 25,000 in total.

About 10 staff are entering the required info and there are occasional problems with locking, with an 'unable to update' message.
This has happended a number of times but after trying again the users report that their record was saved.
In total only 3 autonumbers have been lost. To try to avoid gaps like this in the sequence the record is saved as soon as the first text box is updated (with a non null value).

Other info:
1. The database is split into a front and back end
2. Database is sitting on a server on a Novell network
3. The front end is being run from the server (not a local copy)
4. Essentially the database is being used for data entry, where new records are being entered pretty quickly. At present the users do not need to return to a record to edit the data.

Can anyone offer any advice on any settings that should be changed from the defaults (in Tools>Options) to make this less likely to happen.

yo again, mates...!!!

my old machine...running XP Pro...that I sold to my friend...got a 'blue screen of death stop error' message...but the stop #'s read differently from other errors of the same type I searched out on the web.

his reads: DRIVER_IRQL_NOT_LESS_OR_EQUAL. STOP...0x488422ecd (bear in mind...it goes to a blank screen after the blue screen really quick...there's 4 or 5 stop # sequences in the chain, I think...but I only had time to scribble down one.

when I searched this sequence at the knowledge base...microsoft hadn't even heard of it.

(&...nothin' comes up for that stop # on google, either)

they (microsoft) say that it reads (on an XP-based computer): DRIVER_IRQL_NOT_LESS_OR_EQUAL. STOP: 0x000000D1 (0x00000000, 0x00000002, 0x00000000, 0x00000000)...

& have a fix package #'d: 916595...which I downloaded...transfered to a thumb drive...& will attempt to install on his machine in safe mode tommorrow.

but I'm pretty certain I got that stop number copied down correctly.

this is weird...it bothers me that the stop chain reads differently on his box.

any thoughts or ideas...???



Hi All,
I'm looking for suggestions/options for compressing encrypted Microsoft Access 2007 back-end database files (.accdb).

Here's the scenario: I have two large BE files (about 1Gb each) that get distributed to a user's local machine during a refresh sequence. Some of the users are in-house connected to the network but many are remote... connected to VPN through WiFi or AirCard or Broadband, etc. In an effort to minimize the refresh sequence (specifically the download time)... I had previously zipped (using 7-zip) the .mdb BEs... downloaded that zip file... unzipped it locally and voila... all was well. But I wanted to take advantage of the better encryption available in Access 2007. However, due to the scrambling (which on the one hand is good)... now the .accdb BEs basically don't compress thus making the refresh time extremely unbearable (which on the other hand is bad).

Here is what I've thought of, tried and discarded:
1) Zip & download un-encrypted BEs to the local machine and then have the FE append the un-encrypted BE data into encrypted BE files. - This works but because of the massive amount of data... is still too long for the refresh times.
2) Zip & download un-encrypted BEs to the local machine and then have the FE programmatically encrypt the BE files. - This works but because of the massive amount of data... is still too long for the refresh times.
3) Export all the data to txt files. Zip & download the txt files. Import txt files into local encrypted BE files. - This works but because of the massive amount of data... is still too long for the refresh times.
4) Upload all data into Oracle tables. During local refresh... append data into local encrypted BE files from Oracle ODBC connection. - This works but because of the massive amount of data... is still too long for the refresh times.
5) Create hidden folder on the local machine. Download un-encrypted BE files to the hidden directory. - This works and is quick but leaves the data unprotected and some smart person would eventually run across the "hidden" folder.

At this point, I think I'm stuck with reverting back to .mdb files and using the much simpler database password option (which I don't like much for obvious security reasons but... I'm not sure I have any other options).

Any thoughts or suggestions are greatly appreciated. Thanks in advance.


I have a client who is using Access 2000. They manufacture widgets and need to have a serial number assigned to each widget. Sounds easy so far, huh?

Here's the catch. Sometimes their customers tell them what serial numbers they want (so they match the customers product serial numbers). Also, serial numbers are not always unique because sometimes different types of widgets can have the same serial number.

If the customer is not providing the serial numbers my client wants to automatically assign a serial number. So, in the same field they need the ability to enter a manual serial number and be able to autonumber (or at least know quickly what the next available number in a sequence is).

I know you can't have a field that autonumbers and lets you assign a number. I haven't been able to figure this one out. Any help would be appreciated.


Hi again....another problem in quick succession. I just tried to download some pictures from my Olympus C-560 digital camera, a task I have performed numerous times in recent days, only to discover now that the sequence it will not advance past the point where I am asked to press the OK tab. Curiosity prompted me to search for the Olympus program on the computer but I discover to my amazement that it is nowhere to be seen. I am presuming it should be in the Program folder! but there are only two progs. beginning with "O". To my further disdain, I can't put my hand on the disc that came with the camera so would be more than delighted if someone could (1st) assure me it is possible to acquire the data from the net and (2nd) where it can be downloaded from. yet again regards. Dave. [attachment=85592rog_files.jpg]

Page 1 of 2.
Results 1...20 of 33