In the meantime, I had come up with a plan to actually accomplish getting track information to the frame. I intended to write an application that built images that depict what’s currently playing, and then display the images on the frame like any other digital photo. In other words, I planned to use the frame just as it was intended.
I fired up VB.NET and got cracking. I went with “Console Application” as the project type since the application would be performing background (windowless) processes. Basically, what the console application does is grab track information from Slimserver’s XML interface. It then formats it and merges the formatted text along with the track’s cover art and other graphics into a couple of JPEG files. The application then writes the JPEG files to a shared folder. The frame monitors the shared folder and polls it periodically for changes.
Networking Issues
The Pandigital frame uses one of two mechanisms for retrieving remote images: subscribing to RSS images feeds, or connecting to UPnP server(s) on the local network via Wi-Fi. The frame’s RSS image feed options are limited. It’s preconfigured to work with feeds from three online photo services: Microsoft iFrame, SnapFish and Google Picasa. At first, I experimented with the RSS option by uploading test images to a couple of the services, but I immediately ran into a problem. When the frame subscribes to a feed, it downloads the images referenced in the feed to its internal memory, but any updates you make to the feed thereafter (like uploading new images for the next track) are ignored by the frame until you cycle its power. That just wasn’t going to work.
Fortunately, the frame behaves differently with UPnP servers. In this case, it polls the folder the server is sharing for new images at an interval you set, and then displays not only new images, but also changes to existing images. Had the frame behaved with UPnP servers as it did with RSS image feeds, I would have been out of luck and scrounging for my receipts.
I set the refresh interval to ten seconds. The VB.NET console application simply overwrites two image files entitled status.jpg and cover.jpg with new data each time the Squeezebox’s play state changes. Within ten seconds, the updated images appear on the frame. The status.jpg file depicts a number of states in which the Squeezebox might find itself, including: OFF, STOPPED, PLAYING files with or without associated cover art and PLAYING Internet radio stations. It also includes textual information related to what’s currently playing and a 256 pixel by 256 pixel depiction of cover art if it’s available. Cover.jpg is dedicated to displaying a 512 pixel by 512 pixel depiction of cover art if it’s available. 488x488, actually; I didn’t quite have room for 512 pixels. The frame’s vertical resolution is 600 pixels, but some space is eaten by labeling I display below the cover image.