USB转串口线。RS232是支持串口通讯协议的一种接口形式,为D型9针,常见的还有RS485等接口。由于目前很多电脑已经不再集成串口,因此这种线缆用于为串口设备提供连接方法。
中文名称 | USB TO RS232 Cable | 设备 | 串口设备 |
---|---|---|---|
功能 | 传输数据 | 应用 | 电气化 |
根据标准串口的电气特征,EIA(电子工业协会) 规定了其最大波特率为20000bps,这一规定比现在的标准要慢的多。因此,我们选择了最近发布的RS-232D标准。 EIA是Electronic Industries Alliance的缩写,但事实上,发布RS232标准的时候它的名字是Electronics Industries Association。虽然都是EIA,但是英文并不一样。
脚连接器,这是一种在电脑后面的阳型连接器,在从主机到客户机的通信中你还需要一种阴型连接器。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(数据终端设备)。如果说把据通信设备比作你的调制解调器、终端配置器、绘图仪等的话,那么数据终端设备就是你的电脑或者终端。典型的数据通信设备与数据终端设备即为调制解调器与电脑。人们经常讨论数据终端设备到数据通信设备的速度,或者数据通信设备到数据终端设备的速度。数据终端设备到数据通信设备的速度就是调制解调器与计算机之间的速度,有时也被称为终端速度。终端速度一般比数据通信设备到数据通信设备的速度快。数据通信设备到数据通信设备速度是调制解调器之间的连接速度,有时也被称为线速度。
如今大多数的调制解调器为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)等。如果你右键点击该并转到属性,你会看到设备的状态。请确保您已启用的端口(使用选择这个端口)。
一般有两种方法从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()和功能_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模式。使用这种程序得到更多的构想有关于串行编程。
看 具体 干什么USB 直接 插 电脑 USB 接口RS232 接设备怎么 有 来了 VGA? VGA 显卡 接口 是 15针,与 RS232 9针布一回事!可能 有 USB 转 VGA的 东西找找看...
个人计算机上的通讯接口之一,由电子工业协会(Electronic Industries Association,EIA) 所制定的异步传输标准接口。通常 RS-232 接口以9个引脚 (DB-9) 或...
RS232接口就是串口,电脑机箱后方的9芯插座,旁边一般有 "|O|O|" 样标识。一般机箱有两个,新机箱有可能只有一个。笔记本电脑有可能没有。有很多工业仪器将它作为标准通信端口。...
易控达 让连接更简单 RS232光纤中继器 YFR2系列 概述: YFR2系列产品是易控达专门为 RS232 现场总线远距离数据通讯而设计的工 业级光纤通讯中继产品。具有总线段光电隔离,信号再生,延长传输距离,增加 节点数等功能。 该系列产品采用易控达独创的专有技术,数据全透明传输,自动切换数据方向,无须任何设置。 YFR21 系列支持一路电缆数据接口,一路光纤数据接口,适用于点对点通讯结构; YFR22 系列支持一路电缆数据接 口,两路光纤数据接口,适用于链型(可级联传输更远距离) 、星型拓扑结构。 YFR21 和 YFR22可混合组网为 更复杂的网络拓扑结构。本系列产品解决了电磁干扰、地环干扰和雷电破坏的难题,大大提高了控制信号可 靠性、安全性和保密性,同时也解决了电缆传输距离受限的问题。 特点: 速率自适应,无须拨码开关设置速率,透明传输,极低的纳秒级信号延时 独创的总
RS232与RS485的区别