标题：USB TO RS232 Cable
简介
RS-232 简介
RS232是一种常用的串口设备，它一般在通信和人机交互领域用于传输数据。虽然串口系统要比并口系统复杂，但在数据传输时其却比并口系统所需要的数据线少，因而效率也更高。RS232只需3条数据传输线就能完成数据的传输。这三条线分别用于“发送数据”“接收数据”和信号接地线……  USB TO RS232 Cable
在这种连接方式中，“发送”和“接收”线用于在电脑之间发送和接收数据。如其名字“串口”，数据以串行方式传输。有两个引脚TXD和RXD。还有其他引脚如RTS、CTS、DSR、DTR和RTS，RI 。“1”和“0”分别被定义为两个不同的电压等级：3V至15V和-3V至-15V。
根据标准串口的电气特征，EIA（电子工业协会）规定了其最大波特率为20000bps，这一规定比现在的标准要慢的多。因此，我们选择了最近发布的RS-232D标准。
应用
根据标准串口的电气特征，EIA（电子工业协会）规定了其最大波特率为20000bps，这一规定比现在的标准要慢的多。因此，我们选择了最近发布的RS-232D标准。
RS-232D有两种型号，即D型25引脚连接器和D型9引脚连接器，这是一种在电脑后面的阳型连接器，在从主机到客户机的通信中你还需要一种阴型连接器。D9和D25的输出数据如下所示：
D型9针型
D型25针型
信号
功能
3
2
RD
接收数据(串行数据输入)
2
3
TD
发送数据(串行数据输出)
7
4
RTS
请求发送
8
5
CTS
清除发送(即：调制解调器准备交换数据)
6
6
DSR
数据准备好(UART建立一个链接)
5
7
SG
信号接地
1
8
DCD
数据载波检测
4 
20
DTR
数据终端就绪时。
9
22
RI
振铃提示
DCE与DTE
以串口方式连接的设备一般有两类。即DCE（数据通信设备）和DTE（数据终端设备）。如果说把据通信设备比作你的调制解调器、终端配置器、绘图仪等的话，那么数据终端设备就是你的电脑或者终端。典型的数据通信设备与数据终端设备即为电脑与调制解调器。人们经常讨论数据终端设备到数据通信设备的速度，或者数据通信设备到数据终端设备的速度。数据终端设备到数据通信设备的速度就是调制解调器与计算机之间的速度，有时也被称为终端速度。终端速度一般比数据通信设备到数据通信设备的速度快。数据通信设备到数据通信设备速度是调制解调器之间的连接速度，有时也被称为线速度。
如今大多数的调制解调器为28.8kbps或36.6kbps。因此，我们希望数据通信设备到数据通信设备的速度也能达到28.8kbps或36.6kbps。考虑到调制解调器的高速度，我们希望数据通信设备到数据通信设备的速度可以达到115200bps（16550a UART 的最大速度）。我们使用的通讯程序已设置了数据通信设备到数据通信设备的速度，速度为9.6kpbs、144kpbs以及调制解调器的速度（指28.8kbps和36.6kbps）等。
例如我们在数据通信设备与数据通信设备之间传输一个大小为28.8K的文件，通过调制解调器的压缩，实际上我们传输的是一个115.2Kbps的文件，因此这相当于在数据通信设备拥有115.2kbps。这就是为什么数据通信设备与设备终端设备之间的速度远大于调制解调器的连接速度。所以，如果数据终端设备到数据传输设备的速度达到数据传输设备到数据终端设备的几倍，计算机相调制解调器传输数据的速度就可以达到115200kbps。
什么是零调制解调器？
零调制解调器可以将两个数据终端设备连接在一起，它一般利用Zmodem协议或Xmodem协议在计算机之间传输文件。
图:零调制解调器在采用RS-232D连接器时的接线方式
上图为零调制解调器的连接方式，它的主要特点是：零调制解调器使计算机与调制解调器相连，而不是另一台计算机。主机与被终端机通过TD，RD，SG引线连接。主机通过TD线传输到终端机的所有数据都来源于RD线。终端机必须与主机有相同的设置。两端的SG线必须短路，这样引线对于两台计算机都是相同的。
数据终端准备好（DTR）在两台计算机上循环传输数据，分别为数据设置就绪以及载波检测。当数据终端就绪启动时，数据设置就绪以及载波检测也同时启动。这时，计算机会认为它连接的虚拟调制解调器已经准备好，并已经检测到其他的调制解调器。
现在我们担心的问题是发送请求和清除发送。由于两台计算机的通信速度相同，因此没有必要控制流量，这两条线业分别与两台计算机连接在一起。当计算机发送数据时，它会发送一个高频请求信号，同时清除发送，同时它会立即得到一个肯定的回复。
振铃提示只是用来告诉计算机上有一个电话线振铃信号。由于我们没有，调制解调器与电话的连接并不是真正的连接。
要知道在您的计算机上可用的RS232端口，右键点击“我的电脑“，转到‘属性'，选择标签'设备管理器'，进入端口（COM和LPT），你将看到通讯端口（COM1）等。如果你右键点击该并转到属性，你会看到设备的状态。请确保您已启用的端口（使用选择这个端口）。
如何使用C++编程串行接口？
一般有两种方法从Turbo C.串口中发送至或接受数据，一种是使用outportb(PORT_ID, DATA)函数或outport(PORT_ID,DATA)函数来定义“dos.h”。另一种方法是使用bioscom函数来定义“dos.h”。
使用outportb函数：
outportb(PORT_ID, DATA)函数发送一字节的数据到‘PORT_ID’。 outport()函数发送一个字母数据。这些功能可以应用在任何端口，包括串行端口，并行端口，同样地，也是接收使用数据。
·从硬件端口输入读取数据
·从硬件端口输入读取字节
·从硬件端口输出一个字
·从硬件的端口输出一个字节
说明：      
·定义一个输入量入
·从硬件端口输入无符号字符
·输出变量值
·输出无符号值
备注：     
·像80x86指令一样运行从端口输入的字。从端口中读出低字节，从portid+2中读出高字节。
·从硬件端口输入的是一个宏字节
·像80x86指令一样运行从端口输出的字。从端口写出低字节，从portid + 1写出高字节。
·从端口输出一个重要的宏字节，他是一个重要的参数。
Portid：
·从端口输入的字和字节中选读
·写出输出和从端口输出的字节
值:
·写给输入口的指令
·写给输出口的字节
如果当dos.h已经被包含时你可以从硬件端口输入字节或者输出字节，他们被看作对所有的扩展宏程序代码。
如果不包括dos.h, 或者你不包含dos.h和#undef 宏观(s), 你得到同样的宏(s) 功能。
返回值：
# 从端口输入字或者字节返回读取值
# 从端口输出字或者字节不返回读取值
Bioscom的使用：
宏观bioscom()和功能_bios_serialcom()用于使用串行通信RS-232连接件。首先，我们必须把端口的设置取决于我们自身的需要和可用性。在该方法中，相同的功能用来让设置控制字，将数据传送到端口及检查端口。这种举措用于第一个参数功能。随着我们发送数据以及端口被用来通信。
这就是Turbo C 功能的通讯端口。
说明：
bioscom(int cmd, char abyte, int  port)
_bios_serialcom(int cmd ,int port, char abyte)
bioscom()和_bios_serialcom()在I/O串行通讯中使用bios中断0x14进行。
Cmd：执行I/O运算
cmd (boiscom)
cmd(_bios_serialcom)
功能
0
_COM_INIT
初始化该接口
1
_COM_SEND
发送一个字符
2
_COM_RECEIVE
接受一个字符
3
_COM_STATUS
返回接口的状态
Portid： 端口来自于无论任何数据发送或者任何数据被读入
0:COM1
1: COM2
2: COM3
abyte:
当 cmd =2或3(_COM_SEND or _COM_RECEIVE)时参数abyte被忽视。
当 cmd = 0 (_COM_INIT)时，abyte值来确定该接口的具体工作方式：
Byte值
意义
Bioscom
_bios_serialcom
0x02
0x03
_COM_CHR7
_COM_CHR8
7数据位
8数据位
0x00
0x04
_COM_STOP1
_COM_STOP2
1停止位
2停止位
0x00
0x08
0X10
_COM_NOPARITY
_COM_ODDPARITY
_COM_EVENPARITY
无奇偶性
奇数奇偶性
偶数奇偶性
0x00
0x20
0x40
0x60
0x80
0xA0
0xC0
0xE0
_COM_110
_COM_150
_COM_300
_COM_600
_COM_1200
_COM_2400
_COM_4800
_COM_9600
110波特
150波特
300波特
600 波特
1200波特
2400波特
4800波特
9600 波特
例如，当  abyte = 0x8B = (0x80 |0x08 | 0x00 | 0x03) = (_COM_1200 | _COM_ODDPARITY | _COM_STOP1 |_COM_CHR8)
通信端口设置：
1200波特   (0x80 = _COM_1200) ，
奇数奇偶性  (0x08 = _COM_ODDPARITY)
1停止位     (0x00 = _COM_STOP1)，
8数据位     (0x03 = _COM_CHR8)
于是设置语句就写成 ：bioscom(0,0x8B, 0);
发送数据到COM1端口,该函数的格式 bioscom(1,data, 0)，同样的 bioscom(1,0, 0 ) 我们将从端口读出数据。
下面的例子说明了如何执行串行端口程序。当数据在端口时，它输入数据并且显示在屏幕上,如果一个键被按下那么ASCII的值会被送如入端口。
#include <bios.h>
#include <conio.h>
#define COM1     0
#define DATA_READY 0x100
#define SETTINGS ( 0x80 | 0x02 | 0x00 | 0x00)
int main(void)
{
int in, out, status;
bioscom(0, SETTINGS, COM1); /*initialize the port*/
cprintf("Data sent to you:  ");
while (1)
{
status = bioscom(3, 0, COM1); /*wait until get adata*/
if (status & DATA_READY)
if ((out =bioscom(2, 0, COM1) & 0x7F) != 0)  /*input a data*/
putch(out);
if (kbhit())
{
if((in = getch()) == 27)   /* ASCII of Esc*/
break;
bioscom(1, in, COM1);   /*output a data*/
}
}
return 0;
}
当你在这两种计算机编译并运行上述程序、文字输入一个电脑应该出现在其他电脑屏幕，反之亦然。最初,我们设置了端口所需要的设置如定义在宏观的设置。然后我们等待空置循环，直到一个键被按下或数据可在端口。如果任何键被按下，然后kbhit函数返回非零值。如果我们发现任何键被按下那么我么我们就要跳转到getch功能。然后我们会把它交给com口。同样地,如果任何的数据可在端口，我们从端口接收它并显示在屏幕上。
检查端口，如果你有一台计算机，你就可以使用信号回路连接如下。这是最常用的通信程序。在这里，数据传输在各自端口本身。信号回送的连接如下图。
图：信号回送连接电路
如果你在这个图中运行上述程序通信，它的特性就会显示在你的屏幕上。这个方法有助于用于串行端口程序与单个的计算机。如果你的计算机有2个RS232端口你也可以改变其端口。你可以在同一台计算机连接com1端口的com2端口也可以在同一程序中改变他们的端口号。数据发送给端口com1应该来自端口com2，同时也不管你在键盘上输入什么都应该会出现在屏幕上。
这个程序为串行通讯程序员的源代码做出了示例。就是用RS232使PC机与PC机通信。下载的代码，在两台计算机之间解压缩并运行，用dos模式。使用这种程序得到更多的构想有关于串行编程。