"COM"、"USB"、"Serial Port"有什么区别?

What's the difference between "COM", "USB", "Serial Port"?

我对这 3 个概念感到困惑。

我的理解是,Serial Port通常表示RS-232兼容端口(RS = Recommended Standard)。 USB 代表 Universal Serial Bus。所以它的名字中包含串口,它支持RS-232吗? Universal 是什么意思?

COM 端口是什么意思?

加 1

汉斯回答的一些理解:

为了减少工作量,设备制造商通常使他们的设备也可以像串行端口设备一样工作。这依赖于许多 OS 和语言库已经包含串行端口通信支持这一事实。虽然这种支持无法与真正匹配的设备驱动程序相媲美。

加 2

关于 Serial Port HOW-TO 的很好的参考文档。

顺便说一下,the Linux Document Project 真的很有用。

Serial port是一种使用UART芯片的设备,通用异步接收发送器。在过去连接计算机的两种基本方式之一,并行端口是另一种方式。串口连接起来很简单,不需要很多电线。如果你想走得快,并行是有用的,通常比串行快 8 倍,但电缆和连接器很贵。并行 I/O 已经完全从计算机设计中消失,赶上了总线收发器的巨大进步,这种芯片可以通过电线传输电信号。

COM来自MS-Dos,是一个设备名。 "COMmunication port" 的缩写。 80 年代的计算机通常有两个串行端口,在机器背面标有 COM1 和 COM2。此名称被转入 Windows,大多数模拟串口的驱动程序都会创建名称中带有 "COM" 的设备。 LPT 是并行端口的设备名称,"Line PrinTer" 的缩写。

RS-232 是串行端口的电子信号标准。它是最简单的一种,对设备的要求很低,只支持点对点连接。 RS-422 和 RS-485 并不少见,每个信号都使用双绞线,提供更高的抗噪性并允许多个设备相互连接。

USB表示通用串行总线。能够将微处理器集成到尺寸为几毫米且成本仅为几毛钱的设备中。它在 1990 年代后期取代了旧设备。它是通用的,因为它可以支持许多不同类型的设备,从咖啡壶加热器到磁盘驱动器到 wifi 适配器再到音频播放。它是串行的,它只需要 4 根线。它是一个总线,您可以将 USB 设备插入任意端口。它与 FireWire 竞争,这是一种非常相似的方法,由 Apple 支持,但以压倒性优势获胜。

如今串行端口在 Windows 上仍然重要的唯一原因是 USB 设备需要自定义设备驱动程序。设备制造商 喜欢编写和支持驱动程序,他们经常在驱动程序中采用快捷方式,使其能够模拟传统的串行端口设备。因此,程序员可以使用操作系统内置的对串行端口的遗留支持以及任何语言运行时库。相当不完善的支持顺便说一句,这些模拟器从不支持即插即用。发现要打开的特定串口非常困难。当您在程序使用 USB 设备时猛拉 USB 设备时,这些驱动程序通常会以无法诊断的方式出现异常行为。

USB 代表通用串行 Bus 而不是 Port。术语“串行端口”仅表示数据通过单个信号路径一次传输一位 - 从这个意义上讲,即使以太网本质上也是 串行 serial 这两个术语中的词暗示除了数据路径的宽度之外没有任何关系。

你是对的,术语 serial-port 在 PC 的上下文中通常表示 RS-232 端口,但还有其他串行端口标准,例如 RS-工业应用中经常使用 422 和 RS-485。它们的共同点是它们是使用 UART (Universal Asynchronous Receiver/Transmitter).

实现的

USB 中的通用 一词仅反映了它不是特定设备接口的事实,例如旧硬件上的专用鼠标或键盘端口。类似地,基于 UART 的串行端口不是特定于设备的,由 UART 中的 U 反映。

USB 在许多方面与 RS-232 有很大不同;它是 master/slave(或 USB 术语中的 host/device),而不是点对点,USB 设备无法发起通信,必须由主机轮询。 USB 包括一个低压电源,允许具有中等功率要求的设备由总线供电 - 这也是 USB 端口可用于为电池供电设备充电的原因。 USB 比仅定义物理(硬件)层的 RS-232 复杂得多,而 USB 需要完整的软件协议栈。

术语 COM 只是在 Windows(以及以前的 MS-DOS)中用于串行 (UART) 端口的设备名称前缀。 “通信”的缩写,例如,您可以将 COM 端口作为流 I/O 设备打开,例如 FILE* port = fopen( "COM1", "wr" ) ;.