The
TurboPower technical support team for
Async Professional
is often put in the position of having to tell customers that their
problem is not really an APRO issue, but rather something going on with
their communications hardware setup.
One might
take the cynical viewpoint that we are simply "passing the buck" when we
do this, but it's important to realize that serial communications
programming frequently involves us with remarkably primitive and often
cantankerous hardware; and in the final analysis no amount of software
tweaking, hacking, or fixes will make it work if the cable is not
connected.
Given the
rapidly changing face of serial communications, it seems prudent for us
to share some of our experiences with diagnosing some common hardware
and configuration "snags." We've formatted these into a question and
answer format.
Despite
the increasing power and sophistication of desktop computer systems,
serial communications remains a remarkably primitive and awkward set of
standards and practices that leaves a lot of room for things to go
wrong.
When it's
not working there are a number of places to start looking, depending on
your particular situation.
Nothing is working, not even your test programs, what's the problem?
Probably a hardware or cabling problem that you'll need to figure
out before you can go any further. Common problems include
disconnected, improperly configured, or outright bad modems; two or more
serial ports using the same system resources, or another device (such as
a mouse or network card) using a system resource that's usually reserved
for a serial port.

No amount of software tweaking, hacking, or fixes will make it work
if the cable is not connected.

The
modem isn't working. What do I do?
Modems are peculiarly delicate devices that can be easily damaged by
physical events, static discharge, or "spiked" currents over the phone
line. They even sometimes fail right out of the box.
In general:
·
Make sure that the phone line is attached and is live
(check with an actual telephone device to make sure you get a dial tone)
·
Make sure the telephone cord is going into the correct
modem jack. Most modems have two: one for "line" into which you should
plug the line that is going to the wall jack, and one for "phone" which
allows you to attach a phone or other device beyond the modem.
If you're
using an external modem:
·
Make sure the modem is plugged in and turned on (you
should see lights on the front panel)
·
Make sure that the cable between the computer and the
modem is attached to the correct port on the computer. Some SCSI
interface cards have a port that looks exactly like a 25-Pin serial
port. Also make sure you get a "straight through" cable for this
purpose. A "null modem" cable may sound like what you need, but is
actually used for a different purpose.
If you're
using an internal modem:
·
Make sure the modem is seated properly in the card slot. A
large percentage of internal modems are 'software' modems, some of the
functions traditionally supported by hardware are now pushed onto
software drivers. Because of this, make sure you are using the latest
drivers from the modem manufacturer.
·
See the sections below on Com Port setup for info on
possible resource conflicts
If none of
these seem to help:
·
Make sure the telephone cord is good (test it with a
telephone using that cord)
·
If possible try a different modem device in the same
situation to eliminate a bad modem as the problem
·
Try the serial port checks listed next
The
serial ports aren't responding. What do I do?
Serial communications on a PC operates through serial "ports." These
originally were physical wires that had a particular organization and
operation. Nowadays, your setup may include "virtual" serial ports that
exist only in software. These allow yolu to communicate with many kinds
of devices as if they were serial devices.
In order
to communicate over serial ports, they must be correctly configured.
Some key configuration issues are discussed in the next few sections.
Resources
In order to function, serial ports require certain "resources" from the
computer in which they are installed. Generally, this will consist of a
"Interrupt Request" (IRQ) number, and a "Base Address".
The
traditional resource assignments for the first four serial ports
(COM1-COM4) on IBM PC Compatible computers are shown in the following
table.
Note that
traditionally COM1 and COM3 share an IRQ, as do COM2 and COM4. This is a
hold over from the early days of the IBM PC when there were only 8 IRQs
available, and the nature of software at the time made it unlikely that
more than one or two ports would be accessed simultaneously.
On modern
systems it is generally desirable (and often necessary) to set COM3 and
COM4 to different IRQs than those listed in order to prevent conflicts
(it's generally best to leave COM1 and COM2 where they are). IRQ5, which
is traditionally reserved for LPT2, is often available for one of them.
Internal
modems typically present themselves as COM Ports to the computer and
similarly require their own unique settings.
Some
specialized serial port hardware (such as multi-port boards) permit IRQ
sharing among a number of ports, however these will typically have their
own specialized driver software to manage the multiple ports.
These are
general guidelines, and may, or may not, be applicable for a given
system. With the advent of Plug and Play (see the next section), the
operating system can share system resources between devices, and use
non-standard IRQs and IO addresses. The Windows Device Conflict Wizard
will help you resolve most of the problems.
My
modem/serial port card says it's "Plug and Play." What does that mean?
Plug and Play is a set of standards that allows computer systems to
query devices installed in the system and determine what they are and
their capabilities. Plug and Play devices may include items built onto
the system's main circuit board, or may include add-on cards of various
kinds.
Microsoft
Windows 95, 98, Me and 2000 include extensive system-level support for
identifying hardware and allocating the appropriate resources. Windows
3.1x and NT3.51 provide almost no support for this, and Windows NT 4
provides very limited support.
Some
add-on cards for serial ports are Plug and Play, as are many internal
modems. Also most modern computer main boards have two serial ports
on-board which are often handled by Plug and Play.
For one
or two ports generally these should work as-is, but a common requirement
to get multiple ports operating correctly is to disable Plug and Play
for these ports and set their resources manually.
How do
I set up those "On-Board" Com Ports?
If your system's main circuit board (motherboard) features on-board
serial ports (most do nowadays), there are generally some settings for
these available in the BIOS "Setup" program.
The BIOS
Setup program is usually accessible via a special keystroke at system
start-up (often pressing by Delete or a function key, look for a message
indicating how at when your system boots).
Accessing
the Serial Port settings varies widely among BIOS models, so check your
main board or computer manual for where these might be located.
Often you
can set the on-board ports for some kind of "automatic" mode, which
means the IRQ and address range are set dynamically by Plug and Play
when the system starts.
Ports set
up in this way will generally end up with standard IRQ and Base Address
assignments, but this is not guaranteed; and some software has problems
dealing with ports with peculiar settings.
So
what do I do if something isn't working?
If you're having problems with serial ports with hardware set IRQ
and Address values (often set by jumpers on an expansion card) make sure
that each port's settings are unique. Don't forget that any internal
modems need to be taken into account in this as well.
If you're
having problems with serial ports with Plug and Play settings try
setting the on-board (or any other Plug and Play) ports to specific IRQs
and Addresses rather than allowing them to be determined dynamically.
Using the traditional resource assignments mentioned above is usually
the best approach.
If the
ports are on an expansion card then the same caveat applies as for
internal modems make sure that the card is properly seated in the slot.
If the ports are on the main board, there are typically small cables
that run from the system board to the physical port outlets on the back
of the computer. The connectors to attach the cables to the main board
are often small and are easy to not have seated properly, make sure they
are oriented correctly and well seated on the correct pins. Some port
cards also use similar short cables and the same applies to them.
Another
possibility is that Windows itself has conflicting or erroneous settings
for the ports.
Under
Windows 3.x it is possible to have misnamed ports if there is a gap in
the sequence of traditional serial port assignments in your machine. For
example, if your machine has physical serial ports set for the
traditional resources for COM1, COM2, and COM4, Windows 3.x names these
ports "COM1," "COM2," and "COM3." Then, if a Windows communication
program attempts to open COM4, it will fail since Windows 3.x doesn't
recognize that an port named "COM4" exists.
This
particular situation is not an issue in the 32-bit Windows environments
(NT, Windows 95/98/2000), but it's still possible for Win32 systems to
be applying conflicting resource allocations to the ports. There is a
different naming issue that comes into play if Tapi is being used (see
below).
So how
do I fix the Windows settings?
The simplest solution to the Windows 3.x port naming problem is to
accept the Windows name for the port and add appropriate COMXBASE and
COMXIRQ statements to SYSTEM.INI to reflect the actual hardware
configuration. To make Windows treat COM4 as COM3 as in the above
example, you would add
COM3BASE=2E8
COM3IRQ=3
to the
[386ENH] section of SYSTEM.INI.
Normally
however, under Windows 3.x, the proper way to change the Com Port
settings is to use the Ports Applet in Control Panel.
Things
are radically different in Windows 95, 98 and 2000. Here all hardware
is managed through the Device Manager. This is accessible in the System
applet in Control Panel or by right clicking on My Computer and
selecting Properties and then clicking on the Device Manager tab.
Look for
entries under "Ports (COM & LPT)". Clicking on one of the ports listed
there and selecting Properties will show an informational dialog, the
Resources tab has the settings for the IRQ and Address Range. You can
change the IRQ and base address settings for these here. Setting them
explicitly can sometimes help with Plug and Play conflicts.
From the
Device Manager, you can also list all of the system's IRQs. This list
will show which IRQs are available, and which are in-use.
What
about Tapi?
Tapi (Telephony Application Programming Interface) is a formalized
set of routines to allow programs to make use of various telephone
hardware.
16-Bit
Windows (Windows 3.x) and NT prior to version 4.0 had limited support
for Tapi, usually in the form of specialized drivers provided by
particular hardware manufacturers and which were often unavailable to
general programming access.
Windows
95 introduced a generic implementation of Tapi that all programs could
access, enhanced versions were included in NT 4.0 and later in Windows
98.
If you're
having trouble using Tapi to access or operate a particular device:
·
Make sure the device actually appears in the list of Tapi
devices (in the "Modems" applet in Control Panel), if it doesn't then it
probably needs to have drivers installed. If you know you installed the
drivers already and the device has previously worked; it may not be
"visible" to the operating system for some reason, which is usually a
hardware issue, check the above sections on "The Modem Isn't Working…"
and "The serial ports aren't responding…" for diagnostics.
·
If you are using Windows 95 OSR1, you may need to obtain
the updated TAPI (UNIMODEM/V) software from Microsoft. Windows 95 OSR2
and above, Windows 98 and Windows Me have UNIMODEM/V preinstalled.
Windows NT should already have installed newer drivers (though it's
still sometimes prudent to check, some device may have installed older
drivers over the new ones, and Microsoft may have come out with
something new after this was written).
·
If you have device names that are not unique within the
first 20-30 characters, early versions of Tapi sometimes get confused in
device selection. Unfortunately the only way to change the Tapi assigned
names for these devices is to edit the registry or the .INF file that is
used for installing the device. The best solution is to install the
updated Tapi drivers that don't have this problem.
So,
what about WinModems?
A current trend in modem technology is to simplify the physical
hardware of the modem device and supply some portion of its
functionality in the form of software drivers for the modem. Such
devices are generically referred to as Software Modems, and since the
vast majority of them are designed to work with some version of the
Microsoft Windows Operating System, are also frequently called WinModems.
This
approach has made some sophisticated modem technology much cheaper to
implement, but has also brought a number of headaches.
First,
these software drivers generally expose a Tapi interface, and so these
modems often must be initialized via Tapi in order to work correctly,
which can cause problems with older or otherwise Tapi naïve software.
Second,
the drivers for these modems are generally Operating System specific: a
driver for Win95 may not work on Win98, and almost certainly won't on NT
(much less OS/2 or Linux). The skills necessary to write good device
drivers are deep and hard won and many drivers don't behave entirely as
advertised. Also, even if a particular Windows 95 driver is good, it
doesn't mean that the NT driver for the same modem is as good (or that
the manufacturer even has one).
Often the
installation software for a WinModem's drivers will replace the default
Windows serial drivers with ones of their own. These drivers sometimes
behave unpredictably when accessing other serial hardware in the system.
If you're
having trouble getting a software modem (WinModem) to work:
·
Make sure that the drivers are installed correctly
·
Make sure you have the latest drivers from the
manufacturer
·
Make sure to open the modem using Tapi in your program
In
conclusion…
Eliminating any of the above common problems as the source of your
difficulties will greatly assist TurboPower's Technical Support
engineers in tracking down the real problems behind the difficulties
you're facing.