LCD Smartie
A new addition is a DLL to support LCD Smartie web site. This software is used for displaying information about your PC on a separate LCD display. This page explains how to use the ASI and VT100 displays with LCD Smartie. Using the Smartie DLL
Introduction
LCD Smartie is a small easy to use program that will display text to an external (meaning not the normal PC display) LCD display. This can be useful as there are many dedicated plug-in's available that can give all kinds of information. A rack mounted CPU for example could display the network speed or the errors. There is also a connection to WinAmp to display various aspects of that.
Setup
- Install LCD Smartie, this text was written when 5.4.1 was/is available
- Download the DLL and INI file from here
- Place the byvac.ini file in the same directory as LCDSmartie.exe
- Place the byvacSM.dll file in the displays folder of the main LCD Smartie directory
- Set the byvac.ini file settings as appropriate, see text below
The download contains two files, byvac.ini and byvacSM.dll. As an example if LCD Smartie is installed on drive C:
C:Program FileslcdSmartie (byvac.ini goes in this directory)
C:Program FileslcdSmartiedisplays (byvacSM.dll goes in this directory)
The byvac.ini file is a text file and can be edited by Notepad or similar. It is in sections and each section deals with a different type of display, the ini file is explained in the heading of the appropriate display, below.
ASI Displays and Devices
The ASI protocol is designed for the outset for automation and so even with simple software some reasonably 'neat' things can be done. For example more than one display can be used (on the same COM Port*) and they can be stacked horizontally or vertically. If for instance you have 2 off 2x20 displays, they can be put either side by side.

In the above, two 2x20 displays are used, one had an address 'a' and the other 'b'. Samrtie can be set to display type 4x20 and the first two lines will be on display 'a' and the second two lines will be on display 'b'

Two or more displays can be put side by side as shown, this is horizontal stacking, using the same 2x20 displays Smartie could be set to 2x40. Anything intended for column 20 or greater would appear on display 2, this includes scrolling text which will scroll from one display to the other.

In addition to multiple displays, because the ASI protocol applies to other devices as well as displays a keypad can be added for input although at this point in time because of the restrictions with the DLL functions, this aspect does not work as well as the display side. All of the above is defined in the ini file. There can be up to 10 displays and one input device. It works best when the columns and rows on the displays are the same but it is possible to mix and match.
*** Please note that multiple displays can only be used with converters such as a BV101 or MAX232 chip, multiple displays will not work when directly connected to a com port ***
Hardware
The protocol and hardware is fully explained on this site but just to summarise, this interface will allow both direct connection from a COM port and also from a serial converter such as the BV101. The protocol will also allow multiple devices to share the same bus because all of the devices are addressable. The address can be changed by the user, up to a maximum of 26 different addresses.
The best way to connect multiple device is to use ribbon cable and IDE connectors.

The smallest IDE connectors readily available are 2x5 that sit nicely on 10 way ribbon cable. No soldering is required they simply push into place by using some force, say from a vice. The ASI connector is 1x5 and so only half of the cable is used
The Ini File
The ini file is in sections and will probably need editing before use, it is a text file and so Notepad or similar is ideal. The file is split into [sections] and each section has its own header enclosed in [square] brackets. The first section simply points to the appropriate section for the display that is connected.
[ByVac]
Type=BV4108
In this case it will be the BV4108. The BV4108 section has more entries:
[BV4108]
Display=3
Init='cc'
Invert=1
ClsDelay=200
CmdDelay=0
GotoLine1='c80'
GotoLine2='cc0'
GotoLine3='c94'
GotoLine4='cd4'
Rows=4
Cols=20
Stack=H
Fini='ce'
Ack='>'
Keypad='f'
Debug=0
All of the entries are explained below but it may be worth going over one or two here.
Init The 'cc' turns the cursor off which looks better, the 'ce' in the Fini entry turns it back on again.
Invert: This is set to 1 for use with the BV101, if connecting directly to a COM port then set this to 0
Rows, Cols & Stack: Should be set to the physical display size, if only one display is being used then Stack will be ignored.
Ack: The normal acknowledge on an ASI device is '>', the software will not work properly without this as it uses the ACK to determine when to send more information to the display.
GotoLine<n> : The ASI display controller, control's the LCD directly and so these commands are the hex commands required for the HD44780 controller. Line 1 for example has 'c' which tells the ASI controller that the following is a command and '80' will be sent to the controller. This will set the CGRAM address to the first line. The above should work for 1 and 2 line controllers as well.
VT100
This section of text is dedicated to the VT100 type displays, BV4308, BV4629(Due Q3 2010), BV4511. All of these work on a modification of the VT100 command set. This is characterised in that all commands begin with the escape (#27) character. The best example of this display to use with the Smartie is the 2x16 or 4x20 displays (BV4308) as Smartie is designed for that type of display. The colour (BV4629) or the graphic(BV4511) can be used but it will not use those displays to the maximum potential.
Taking the BV4308 4x20 display as an example:
Hardware
This display has a serial interface that can be connected directly to a COM port or through a BV101 (USB to Serial converter). The latter is far more convenient as the BV101 plugs directly into the display and also provides a power supply.

See the data sheet for the appropriate wiring when using a COM port directly.
INI File
The ini file needs editing before the display can be used, open it using Notepad. The file is simply text but split into [sections]. The Sections are marked with square brackets and the first section is [byvac]
[ByVac]
Type=BV4308
This first section only has one entry in it, the entry points to another section. It is arranges this way so that a few displays can already be pre-configured and only the 'Type' line needs initially changing. In this example 'Type' should be as it is above, pointing to the BV4308 section which is shown here:
[BV4308]
Display=11
Init='[2J[2m[6m[3c'
ClsDelay=100
Fini='c'
Ack='*'
Display: For the BV4308 this should be set at 11, it will tell the DLL that this kind of display is connected.
Init: This string will be sent to the display on initialisation, the strange characters are <escape> which show up as small black rectangles in notepad but may display as anything depending on the operating system and software used to edit the ini file. To use them you must copy and paste, pressing the escape key will not write the escape character to notepad. The commands shown can be changed but these have been found to provide the required settings they are: <esc>[2J this clears the screen, <esc>[2m this turns the cursor off, <esc>[6m stops vertical scrolling and <esc>[3c turns off the automatic line feed when CR is recieved.
ClsDelay: This is simply a delay in milliseconds that will be used after the initialisation, see Ack for further explanation.
Fini: This is a string that is sent when Samrtie exits. In the above <esc>c will reset the display but anything can be put here, 'all done' for example.
Ack: When a command is sent to a ByVac VT100 display, if it is switched on, the display will send back a character to indicate that it is ready for more commands or text. The actual character is configurable but normally '*' by default. This entry tells Smartie what to look for before continuing. Using Ack ensures that the fastest possible speed is obtainable for refresh and updates. When multiple commands are sent as in the initialisation string, Ack cannot be used as there will be several of them. This is the reason for a delay after initialisation, to ensure that all the commands have completed.
Using BV4308 with the COM port
If using the display connected directly to a COM port ** Only this display can be connected directly to a COM port ** then an additional initialisation command is required, this is <esc>[6c thus:
Init='[2J[2m[6m[3c[6c'
This will invert the output as is required by the COM port. If this is not done then the Ack character will not be recognised.
Other VT100 displays
The other displays are in their own section of the ini file, simply point 'Type' to the appropriate section.
Ini File Entries
The following is an explanation of what all of the entries do
Type
This always follows the [ByVac] section and it tells the software which entry to use.
Display
Each display has its own Display type as there are slight differences even within a display type. In general displays that have a number less than 10 are ASI types and over 10 are VT100 types.
Init
This is a string that is sent to the display on initialisation
Invert
Applies only to ASI displays. This should be set to 1 when using the display with a BV101 and set to 0 when using the display connected directly to a PC COM port.
ClsDelay
This delay, in milliseconds, will be applied after the Init string has been sent. Most displays require some time after initialisation before sending commands or text.
CmdDelay
This delay in milliseconds will be applied after each command. Most displays will not require this as they use the ACK mechanism instead, however the BV4511 does not have an ACK mechanism and so a small delay may be required. The actual value is found by trial and error.
GotoLine<n>
Where <n> is a number from 1 to 4. The specified string is sent at the start of that line. It is not needed for the VT100 commands but could still be used to say change the font size or colour of a particular line. When used for VT100 only one command is allowed, you can't change the colour and font, just one or the other.
Rows
This only applies to ASI displays that can be stacked (see ASI). Set this to the actual physical number of rows on the display.
Cols
This only apples to ASI displays (see ASI) set this to the actual physical number of columns on the display/s
Stack
Set to wither H or V, representing H for horizontal where the displays are stacked horizontally, giving more colunms and V for when they are stacked vertically giving more rows.
Keypad
This only applies to ASI. It is possible to connect an ASI keypad up and observe the output, specifying the address here will tell Samrtie to ignore this address as a display.
Debug: When used with multiple ASI displays it will display the address of each display on the display the address appertains to, this shows at start up for about 2 seconds.
