Girder plug-in for LCD/VFD displays

Version 4.3.  MMcM 11/06

Supported displays

These displays are believed to work with this plug-in. Often similar displays from the same manufacturer will use the same interface protocol. Those may work as well.
ManufacturerDisplayRowsColsNotes
Crystalfontz 632 162 With or without backlight.
634 204 With or without backlight.
633 162 Has a 6 button lighted keypad.
631 202 Has a 4 button lighted keypad.
172 When settable keypad legends are used.
Matrix Orbital LCD2021202
LCD4021402
LCD2041 204
LCD4041 404
LK162-12 162 Has a membrane keypad.
LK202-25 202 Has a membrane keypad.
LK204-25 204 Four line version of the LK-202-25.
LK202-24-USB / MX2 202 USB version of the LK-202-25.
LK204-24-USB / MX4 204 USB version of the LK-204-25.
LK402-12 402 Has a membrane keypad.
LK404-55 404 Four line version of the LK402-12.
VFD2021202
VFD2041 204
VK202-25 202 VFD with a membrane keypad.
VK204-25 204 Four line version of the VK202-25.
VK202-24-USB / MX3 202 USB version of the VK202-25.
VK204-24-USB / MX5 204 USB version of the VK204-25.
Futaba VFD 202
204
402
Noritake CU20025SCPB 202 Serial or Parallel
CU20045SCPB 204
CU40026SCPB 402
VLSystem L.I.S. 2 202
SoundGraph iMON VFD 162
Pertelian X2040 204
Various LcdHype Various The LcdHype library, which supports graphical displays.
Hitachi and others HD44780 Various A standard display controller chip.
Various LCDriver Various The LCDriver library, which supports various displays.
SimulatedAny A window on the desktop. Useful for testing.

Files

The original download location for this plug-in's installer is here. An archive containing the files for manual installations is here; source is also available here.

These are the files contained in the distribution and what purpose they serve.

Getting started

Use

This plug-in displays bits of text on chosen area of the display. The area is specified by the starting row and column and the number of characters. The text can come from several places:

A number of lines of the display can be filled at once. This does not give as fine control over placement or width. It is most suitable when a number of variables are being expanded in the text.

Several special actions that are also possible:

Hardware specific capabilities

LUA functions

Some command parameters expand variables. Positions in particular do not, however. When that is needed, a script must be used. The following LCD-related functions are defined in LUA so that the display can be controlled from a script. All functions take a optional final string parameters naming the display device; if unspecified, the default is used.

Multiple displays

More than one display device can be defined. One of the displays is designated the default. Commands that use this display do not need to be changed to display on a different device when the default is changed. Commands can also specify a particular device explicitly. Multiple mode must be enabled explicitly in the registry.

Registry

Settings for the plug-in are stored in the registry key HKEY_LOCAL_MACHINE\Software\Girder3\SoftPlugins\LCD. Normally device settings are the values for this key. In multiple display device mode, there are subkeys for each display device and the default value for the parent key gives the name of the default one. Most, but not all, of these values are controlled through the Settings dialog. Here is a complete reference to the values used.

Library The name of the DLL containing the device specific interface.
Device The name of the specific device being used; often the display model number.
Cols The number of columns.
Rows The number of rows.
CharacterMap The device code to use for each character. Many displays put characters like ¥ where \ and ~ should be. Most displays have accented European characters at non-standard indices. Some displays have variants of g, j, p, q, and y with proper descenders at different codes; since the underline cursor is not used, these can yield a superior display.
MarqueePixelWidth The number of pixels to shift a scrolling display each time. By convention, 6 pixels represents a single character when computing the frequency of the simulated marquee, which cannot scroll by a partial character. The default is 6.
MarqueeSpeed The interval, in milliseconds, between shifts of a scrolling display. When simulating a marquee, both the speed and pixel width are taken into account when computing the frequency of redrawing. The default is 1000, that is, one second.
Contrast The contrast setting for an LCD. A number between 0 and 100. The default is 50.
Brightness The brightness setting for a VFD, or the backlight brightness for a backlit LCD. A number between 0 and 100. The default is 50.
EnableInput Translate keypad button presses into Girder events.
InputMap This is actually a subkey. Each of its values maps a raw keypad input to an event. If the default value is *, unknown inputs are sent through as is.
EnableFans Translate fan RPM changes into Girder events.
FanInterval The interval in milliseconds between checks of the fans.
Fans This is actually a subkey. Each of its values gives the name for a fan. If the fan number starts with *, the fan is disabled. The default value specifies the number of pulses per revolution needed to calculate RPM.
EnableSensors Translate temperatute sensor changes into Girder events.
SensorInterval The interval in milliseconds between reads of the sensors.
Sensors This is actually a subkey. Each of its values gives the name for a sensor. If the sensor unique id starts with *, the sensor is disabled.
Port For serial devices, the name of the port, such as COM1. For parallel devices, the name of the port, such as LPT1, or its hex address.
PortSpeed The speed of the serial port, such as 9600.
PortRTS Whether RTS is turned on for the serial line. The default is on.
PortDTR Whether DTR is turned on for the serial line. The default is on.
MarqueeSimulated For LCDriver, whether a marquee is simulated in software. Necessary when using LCDriver with a display other than Crystalfontz.
ParallelStrobeDelay The delay interval to wait for the HD44780 to notice a signal transition. If you have a slow HD44780, try increasing this number. If you have a fast HD44780, you may be able to decrease this number to a fraction of a millisecond.
ParallelCommandDelay The delay interval to wait for the HD44780 to process a command or shift the data register. If you have a slow HD44780, try increasing this number. If you have a fast HD44780, try decreasing it.
ParallelExtraDelay The delay interval to wait for the HD44780 to initialize or clear the screen. If you have set the command delay very small, you may need to increase this number.
SimLCDFontSize The font size (height) for LcdHype and the Simulated LCD window. The default is 10.
SimLCDFontSizeW The font width for LcdHype or 0 to keep it proportional to the height. The default is 0.
SimLCDFont The font face name for LcdHype and the Simulated LCD window. The defaults are Lucida Console and Courier New respectively
SimLCDFontStyle The font style for LcdHype and the Simulated LCD window. The defaults are Regular and Bold respectively.
SimLCDTextColor The text (foreground) color in the Simulated LCD window. A single RGB value. The default is black.
SimLCDBackColor The background color in the Simulated LCD window. A single RGB value. The default is a greenish yellow.
SimLCDXPos The X position of the Simulated LCD window. The default is the last position.
SimLCDYPos The Y position of the Simulated LCD window. The default is the last position.
SimLCDAlwaysOnTop Whether the Simulated LCD window stays on top of other windows. The default is on.
DebounceTime The debounce time for a keypad in milliseconds. The default for Matrix Orbital is 52ms.
Enabled Whether the display is enabled. Only available when there is more than one display defined.

Delay intervals can be specified as an integer number of milliseconds or a floating point fraction of a second. The fractional format supports intervals less than one millisecond.

Terms

This plug-in is released as open source under The MIT License. You use it at your own risk. See license.txt for details.

Contact

To report problems or make suggestions, post a message to the Girder forum, rather than sending email directly.