About The Book
From the Introduction
When I wrote the first edition of this book, the RS-232 serial port was the workhorse of PC interfaces. Modems and scores of other peripherals connected to PCs via the serial ports that were present on every machine.
When the Universal Serial Bus (USB) took hold in the late 1990s, many predicted that serial ports would soon be obsolete. Plenty of peripherals that formerly used the serial port have switched to USB. But some devices can’t use USB or have requirements that USB alone can’t provide. Many embedded systems use serial ports because they’re inexpensive and less complex to program compared to USB. Serial ports can use longer cables than USB allows. And the RS-485 serial interface supports networks suitable for many monitoring and control applications.
While most PCs no longer have built-in serial (COM) ports, the ports are easy to add via USB converters. With converters, the number of expansion slots no longer limits the number of serial ports a system can have. The SerialPort class included in Microsoft’s .NET Framework shows that PC applications continue to find COM-port communications useful.
This book explores wide and varied territory, including hardware and software; ports in PCs and in embedded systems; and RS-232, RS-485, and wireless interfaces. You don’t need to read the book straight through. If you’re interested in a particular topic, you can skip right to it.
The first chapters focus on hardware and interfacing. Chapters 1 and 2 are an introduction to asynchronous serial communications. Chapter 3 discusses serial ports in PCs, and chapters 4–8 are a guide to interfacing using RS-232, RS-485, and wireless technologies.
The next chapters are a guide to programming. Chapters 9 and 10 show how to program serial ports on PCs using Visual Basic .NET and Visual C# .NET. Chapter 11 shows how to program serial ports for embedded systems with examples for microEngineering Labs' PICBASIC PRO compiler and Microchip Technology's MPLAB C18 C compiler.
Chapters 12 and 13 focus on hardware and programming for RS-485 serial networks.
Chapters 14–16 explain how to implement USB virtual COM ports using special-purpose and generic USB controllers.
Options and Choices: When to use a Serial Port: Advantages. Limits. System Components: The Computers.The Physical Link. Programming. Applications: Example Systems. Managing Communications. Special-purpose Modules
Formats and Protocols: Sending Serial Data: Asynchronous and Synchronous Communications. Word Formats . Bit Rate and Baud Rate. System Support for Low-level Protocols. Sending Bits: The Format. The Need for Accurate Timing. Autodetecting the Bit Rate. Autodetecting a COM Port. Data Formats: Binary Data. Text Data. ASCII Hex. Application-specific Protocols. Preventing Missed Data: Flow Control. Buffers. Event-driven Programming and Polling . Acknowledgments . Error CheckingCOM Ports on PCs: Port Architecture: Device Manager Port Resources. Serial Servers. Accessing Ports: Drivers. Identifying Ports. GUIDs for COM Ports . COM Port Numbering. INF Files. Options for Application Programming.
Inside RS-232: The Hardware Interface: Signals. Voltages. Timing Limits. Converting Voltages: Interface Chips. Short-range Circuits. Port-powered Circuits: Using Outputs as a Power Source. Regulating the Voltage. Alternate Interfaces: Direct Connection. Other Unbalanced Interfaces
Designing RS-232 Links: Connectors and Adapters: Connector Options. Adapters. Using Microcontroller Development Boards. Cables: Length Limits. Surge Protection. Isolated Lines: Ways to Achieve Isolation. About Grounds. Power Supply Grounds. Optoisolating. Debugging Tools: Using a Breakout Box. Monitoring with a Voltmeter. Oscilloscopes and Logic Analyzers.
Inside RS-485: About RS-485: Balanced and Unbalanced Lines. Voltage Requirements Current and Power. Speed . Internal Protection Circuits. Interfacing Options: Chips. Adding a Port on a PC. Converting 3.3/5V Logic. Converting RS-232. Controlling the Driver Enable: Re-enabling the Driver. Software-assisted Control. Hardware Control.
Designing RS-485 Links and Networks: Long and Short Lines: When Is a Line Long? Calculating Line Length. Choosing a Driver Chip. Line Terminations: Characteristic Impedance. Adding a Termination. Effects of Terminations. Reflections. Series Terminations. Terminations for Short Lines. AC Terminations. Network Topologies. Biasing the Line: Open-circuit Protection. Short-circuit Protection. Cable Types: How a Wire Picks Up Noise. Twisted-pair Cable. Selecting Cable. Grounds and Differential Lines: Ensuring a Common Ground. Isolated Lines. Using Multiple Buses: Adding a Repeater. Implementing a Star Topology
Going Wireless: Media and Modulation: Using a Carrier Frequency. Spread Spectrum Technology. Ensuring Reliable Transfers. Infrared: Transmitters and Receivers. IrDA. Radio Frequency: Complying with Regulations. Choosing an RF Band. Implementing a Link . Using Other RF Standards
Using .NET’s SerialPort Class: Gaining Access to a Port: Finding Ports Opening a Port. Timeouts Receive. Threshold Closing a Port. Transferring Data. Transferring Bytes Transferring Text. Using Stream Objects: BinaryReader and BinaryWriter StreamReader and StreamWriter: Saving a Port and Parameters: The Application Settings. Architecture. Combo Box Example
Managing Ports and Transfers in .NET: Receiving Data: Setting Timeouts. Detecting Received Data. Collecting Received Data. Ensuring Efficient Transfers. Sending Data: Avoiding Timeouts. Sending without Blocking the Application. Preventing Buffer Overflows. Ensuring Efficient Transfers. Flow Control. Selecting a Method. Monitoring and Controlling the Signals. Handling Errors: Exceptions The ErrorReceived Event. Verifying Received Data. Structuring an Application: Defining a ComPorts Class. Setting Parameters with Combo Boxes. Defining Application-specific Events.
Ports for Embedded Systems: A Microcontroller Serial Port: About the PIC18F4520. The Enhanced UART. Registers: Configuring and Accessing the Port. Setting the Bit Rate. Interrupts. Basic Operations. Accessing a Port: Configuring the Port. Sending Data. Receiving Data. Using Interrupts. Using Flow Control. Adding Ports: Multiple On-chip UARTs. Firmware UARTs. External UARTs
Network Programming: Managing Traffic: Steps in Exchanging a Message. Protocols. Using Existing Protocols. Debugging Tips. Addressing: Assigning Addresses. Detecting Addresses. Reserving Address. Values Defining a Message Format. 9-bit Format.
An RS-485 Network: Connecting the Nodes: Transceivers. Terminating and Biasing. Cabling. Example Protocol: Addresses. Message Format. Commands: Reading a Byte. Writing a Byte. Polling the Nodes. Configuring the Driver-enable Line. Sending Commands. Responding to Polls: Auxiliary Routines. Decoding Received Data
Inside USB: Hosts and Devices: Assigning a Driver on the Host. Requirements. Host Responsibilities. Device Responsibilities. Speed. Endpoints. USB Transfers: Transfer Types. Transactions. The Data Toggle
Using Special-function USB Controllers: Inside the Chips: Serial Interface (FT232R). Parallel Interface (FT245R). Prototyping Modules. Using the Controllers: Drivers. Adding Vendor-specific Data. Implementing a Virtual COM Port. Converting from RS-232 to USB
Using Generic USB Controllers: The Communication Devices Class: Documentation. Overview. Device Controllers. Host Drivers: Using the Abstract Control ModelPOTS Models. Virtual COM Ports. Requests. Notifications. Maximizing Performance. Descriptors and INF Files: Device Descriptor. Configuration Descriptor. Communication Class Interface Descriptors. Data Class . Interface Descriptors. String DescriptorsThe INF File. Composite Devices
Whether your interest is hardware or software and whether you work with PCs, embedded systems, or both, you will find useful guidance in this book. Programmers will learn how to communicate via serial ports, including USB Virtual COM ports, in PCs and embedded systems. The example code for PCs and microcontrollers in Basic and C/C# provides a quick start for a variety of applications. Circuit designers will find designs for a variety of applications including converters that translate between RS-232, RS-485, and 3V/5V logic. Designs with fail-safe features, high noise immunity, and low power consumption are included. Hobbyists and experimenters will find inspiration for projects. Teachers and students can learn about serial ports and use the examples in this book to demonstrate concepts. This book assumes you have a basic knowledge of electronics and either Basic/Visual Basic or C/C# programming. The author assumes no previous knowledge or experience with serial-port hardware or programming.
Axelson's book is about as complete a reference as you will find on serial communications using RS-232 and RS-485. The code could save you some time; the reference material surely will. - Jack Ganssle,The Embedded Muse.
The examples I coded were appropriate and they worked. If you've ever looked for serial port examples online, you have probably become very frustrated scanning through examples that were excessively complex, didn't apply anymore, or didn't really do much. The examples here won't frustrate you. - Dan Mabbutt, About.com:Visual Basic.
The writing is clear and understandable, with circuit and timing diagrams augmenting the written explanations. And it's worth pointing out that it's not just the how it's the why that's explained as well. In particular the emphasis of the book is on doing something useful with these devices, so there's a lot of coverage of serial communications in the form of RS-232 and RS-485. - TechBookReport.
Whether your interest is hardware or software and whether you work with PCs, embedded systems, or both, you will find useful guidance in this book. - EDN.