我正在开发一个串口通信 java-J2ME-J2SE 应用程序。有一部手机和一台电脑(运行Windows XP)。这两台机器通过手机的数据线进行通信。手机的数据线是USB数据线。那么端口的类型是什么:它是 COM1 还是其他?我查看了设备管理器,发现手机(阿尔卡特 OT-806D)在 COM4 端口。这是设备管理器的捕获图像:
3 回答
USB 端口是计算机和设备可以用来通信的一种串行端口。它定义了连接器和电缆,以及设备必须用于通过 USB 进行通信的物理和链路层协议。从这个意义上说,它类似于以太网、火线或其他通信协议。
在物理层面上,USB 是一种串行协议,这意味着位是以串行方式发送的。旧的串行 RS-232 端口(在 Windows 下传统称为 COMx)与现代 USB 架构无关。旧的串行端口使用更简单、更慢的通信协议 (RS-232),通常由称为UART的一系列芯片处理,而 USB 通信需要更复杂的硬件。
因此,这两种协议的物理层和链路层特性是非常不同的。虽然两者都是串行协议,但 USB 允许多个设备共享同一总线(传统串行端口不允许),并且 USB 的通信速度要高得多。错误检测和纠正、流量控制和其他数据传输问题在 USB 中得到了更好的处理。
COM 端口是一种 Windows 抽象,用于表示任何通信端口。在其他操作系统中使用其他名称。在 Linux 中,COM1 端口由设备 /dev/ttyS0 表示。
请注意,这只不过是一种抽象。可以(并且经常这样做)使用不使用传统物理串行端口的串行端口。事实上,您可以创建提供串行端口的操作系统驱动程序,这些端口实际上通过以太网、USB、IP 或任何其他通信层进行通信。操作系统级别的 COM 端口只不过是表示通信端口的抽象。
移动电话通过其 USB 端口提供各种服务。这通常包括原始串行通信(您可以在应用程序中使用),但在许多其他情况下,USB 端口提供其他“配置文件”(usb 大容量存储、耳机或其他)。所有这些配置文件都是标准化的,因此您可以将手机插入计算机并建立“串行通信”通道等,而无需为计算机或手机编写通信驱动程序。
因此,要回答您的问题,不,USB 端口不是 COM 端口。它是一个 USB 端口。您可以将其用于串行通信,但您也可以将其用于其他用途。
USB 表示通用串行总线。通常,PC 上的所有操作系统的 USB 连接都将链接在同一总线上。连接到总线的所有设备都分配有虚拟端口号。这些端口号将根据连接到总线的内容而改变。
但是,除非您自己编写驱动程序,否则您不会直接与手机通信,而是使用为其安装的任何驱动程序。
有些手机无法以任何方式控制,有些手机可能会显示为调制解调器,因为这是制造商通过驱动器分配给它们的功能。
我目前的手机本身安装为设备(与制造商的软件一起使用)、调制解调器和存储设备。
在这里查看更多信息。
嗯,取决于您所说的“端口类型”是什么意思。我想你想知道端口的名称,但你真正需要知道的是你的手机能理解什么协议。
您需要知道手机可以通过 USB 与什么协议(如果有)进行通信。仅仅因为您可以将手机连接到 USB 数据线并不意味着您可以控制手机。这取决于手机。并非所有电话都可以理解相同的协议。
此外,USB 是一种串行总线,因为它在单条线上串行传输数据(而不是在多条线上并行传输),但它不(必然)使用与计算机串行端口相同的 RS-232 协议。如果您有一个 RS-232 设备连接到 USB 端口,那么您将使用 COM1(或 COM2 或 COM3,您的操作系统分配此端口名称)连接到它。