Document transfer using facsimile (fax) machines has become quite common—you might even say pervasive—in today’s business environment. Almost all of the currently manufactured modems are faxmodems. A faxmodem is a standard data modem that also has the ability, when used with appropriate software, to send and receive faxes. Since the faxmodem is under program control, it can provide more sophisticated capabilities than a dedicated fax machine. A few of the possibilities include database storage, editing, and forwarding of received documents, as well as scheduled fax transmissions to multiple recipients.
Unfortunately, controlling a faxmodem is a relatively complex task. As is typical for the communications industry, faxmodem technology is governed by multiple, evolving, incomplete standards. With the exception of the terse technical specifications offered by the TIA/EIA committee that controls faxmodem standards, little has been written about controlling faxmodems. The TIA/EIA specifications describe the bare necessities of faxmodem behavior; many ambiguities must be resolved by research and experimentation.
Microsoft has provided various levels of fax services in successive versions of Windows and is trying to broaden and homogenize its fax services over all of its Windows operating systems and environments. Parts of the fax services are available to programmers, but the documentation is both scarce and sparse, causing many programmers to look elsewhere for fax services.
Async Professional overcomes this information shortage by providing a complete set of routines for computer control of faxmodems. These routines cover all phases of faxmodem usage including document conversion, fax printer drivers, and send/receive support for the current generation of faxmodems. These routines have a structure similar to the file transfer protocols, complete with the programming hooks that allow you to write full-featured applications.
Faxmodem Control from an Application
Integrating faxmodem support into your application involves two central tasks:
Document conversion means converting a file into a format suitable for fax transmission or converting a received fax into a format suitable for further processing (viewing, printing, etc.). Faxmodem send/receive covers all the steps needed to control a faxmodem when sending and receiving fax documents.
Document conversion is the process of creating a compressed bitmap image suitable for fax transmission. Async Professional can convert the following file formats:
Files that have been converted to fax format in this way, as well as files that have been received by Async Professional’s fax routines, are given the extension APF (Async Professional Fax).
Async Professional also includes a printer driver for Windows 95/98/ME, Windows NT 4.0, Windows 2000, Windows XP and Windows 2003 (see the README.TXT file for an up-to-date list of the supported environments) that provides convenient conversion of virtually any document file by “printing” that file to the fax printer driver. The fax printer driver converts the printed image to an APF file and can optionally alert a fax transmit program that a file is now available for fax transmit.
Received faxes are stored in the compressed bitmap image (APF format), so the data must be unpacked before you can view, print, edit, or otherwise process the fax. Async Professional provides an unpacker component that can unpack fax file to image files, to memory bitmaps, or for special processing by your application. A viewer component and a printer component make it easy to view or print the fax.
Faxmodem send/receive is the process of sending the appropriate commands to a faxmodem to prepare it for sending or receiving faxes, initiating or receiving a call, transferring a bitmap image, and terminating the connection.
Like a file transfer protocol, a successful fax transmission requires cooperation between the sender and receiver. A number of standards have been developed for this purpose. Early fax machines communicated using what was known as the Group 1 and Group 2 protocols. Although your fax machine may have a Group 1 button, which allows it to receive faxes (very slowly) from an old Group 1 fax machine, all fax machines sold today support the Group 3 facsimile protocol. The faxmodems that Async Professional can control do not support Group 1 or Group 2 at all. If you need to send or receive faxes with a Group 1 partner, keep your old fax machine!
Within Group 3, there are currently two EIA/TIA standards for computer control of faxmodems: Class I and Class II. To identify these classes, Async Professional uses Arabic numerals (Class 1 and Class 2) rather than Roman numerals because the numbers are clearer to read in the source code and documentation. Class 2 depends on somewhat more sophisticated chips within the faxmodem than Class 1. Class 2 chips are capable of negotiating certain fax transmission parameters without any feedback from the computer.
Many modem manufacturers began producing Class 2 faxmodems before the specification was complete, using an interim version of the specification. When the specification was finally ratified, it differed significantly from the interim Class 2 specification. In the meantime, interim Class 2 modems had become a defacto standard and could not be ignored by the specification committee. To distinguish between interim Class 2, which is referred to as simply Class 2, the final Class 2 specification is formally identified as Class 2.0. Over the past few years, the Class 1 standard has been improved upon to a slight degree also. Recently, the EIA/TIA committee began the formalization process for the Class 1.0 standard. While this new standard introduces a few new optional features, it is primarily a simple renaming of the old Class 1 standard.
Wherever possible the faxmodem components insulate you from the details of document conversion and faxmodem control. Just as with the file transfer protocols, you don’t need to read and understand all of the faxmodem technical specifications to use the faxmodem routines. However, it does help to have a basic understanding of the specifications. For further information, see the technical specifications listed in Table 15.1.
These documents are available from the EIA and TIA organizations directly. They can also be obtained from Global Engineering Documents, a company that distributes engineering specifications of all kinds. You can reach them by telephone at 800-854-7179 or 303-792-2181. Their fax number is 303-397-2740.
Fax Server Components
The purpose of the Fax Server Components is to provide flexible, integrated fax reception, transmission, and queuing functionality.
The TApdFaxServer component provides the faxing engine and interfaces with the fax modem. This component can be used by itself to receive faxes, or with a TApdFaxServerManager to send faxes. The TApdFaxServer reproduces much of the functionality of the TApdSendFax and TApdReceiveFax components, so many of the properties are similar.
The TApdFaxServerManager component provides the TApdFaxServer component with fax jobs when requested. This component manages the fax jobs submitted by a TApdFaxServer or TApdFaxClient component by monitoring a specified directory for new fax jobs. This component also handles scheduling of fax jobs by inspecting the scheduled time of each fax job when a job is requested by the TApdFaxServer component.
The TApdFaxClient component provides the TApdFaxServerManager component with fax jobs. This component creates a fax job by creating a job file. The job file contains a header, entries for a single recipient or multiple recipients, cover page text, and the actual APF formatted image data. The TApdFaxClient can be installed on a remote station to create fax jobs, then the job file just needs to be placed in the directory being monitored by the TApdFaxServerManager to enter the fax queue.
The TApdFaxClient component provides the ability to create APJ fax job files with a design time interface. The MakeFaxJob method creates a single-recipient fax job; additional recipients can be added to the job file with the AddFaxRecipient method. To submit the job for faxing, place the APJ in the ApdFaxServerManager.MonitorDir folder. The ApdFaxClient can be used on a remote system to provide fax capability across a network.
This document maintained by the Async Professional Project.