2011-11-15 185 views
0

我正在开发一个串口通信java-J2ME-J2SE应用程序。有一部手机和一台电脑(运行Windows XP)。这两台机器通过手机的电缆进行通信。而手机的电缆是USB电缆。那么端口的类型是什么:它是COM1还是别的? 我看了设备管理器,发现手机(Alcatel OT-806D)在端口COM4中。下面是设备管理器中捕获的图像:USB端口是什么类型的端口?

enter image description here

+0

除了特定于供应商的USB接口外,手机通常使用USB +虚拟串行端口,它的行为类似于物理端口,手机是否将其自身表现为调制解调器? –

+0

如何知道手机是否显示为调制解调器? – pheromix

+0

看看它是否在控制面板中的电话和调制解调器,点击添加到自动检测 –

回答

0

嗯,取决于你所说的“类型的端口”的意思。我想你想知道端口的名称,但是你真正需要知道的是你的电话将理解的协议。

您需要知道手机可以通过USB与哪些协议(如果有)进行通信。仅仅因为您可以将手机连接到USB电缆并不意味着您可以控制手机。这取决于手机。并非所有电话都是为了理解相同的协议而构建的。另外,USB是串行总线,因为它在一条线上串行传输数据(而不是通过多条线并行传输),但它不一定使用与计算机相同的RS-232协议串行端口。如果您有一个RS-232设备连接到USB端口,那么您将使用COM1(或COM2或COM3,您的操作系统分配此端口名称)连接到它。

1

USB端口是计算机和设备可用于通信的一种串行端口。它定义了连接器和电缆,以及设备必须用于通过USB进行通信的物理和链路层协议。从这个意义上讲,它与以太网,火线或其他通信协议类似。

在物理层面上,USB是串行协议,意思是以串行方式发送位。旧串行RS-232端口(传统上称为Windows下的COMx)与现代USB架构无关。旧的串行端口使用通常由称为UARTs的芯片系列处理的更简单和更慢的通信协议(RS-232),而USB通信需要更复杂的硬件。

因此,这两种协议的物理层和链路层特性有很大的不同。虽然两者都是串行协议,但USB允许多个设备共享相同的总线(传统串行端口不这样做),并且USB中的通信速度更高。在USB中更好地处理错误检测和纠正,流量控制和其他数据传输问题。

COM端口是Windows抽象来表示任何通信端口。在其他操作系统中使用其他名称。在Linux中,COM1端口由设备/ dev/ttyS0表示。

请注意,这不过是一个抽象。使用不使用传统物理串行端口的串行端口是可能的(并且经常完成)。实际上,您可以创建操作系统驱动程序,以提供实际上通过以太网,USB,IP或任何其他通信层进行通信的串行端口。操作系统级别的COM端口不过是代表通信端口的抽象。

手机通过其USB端口提供各种服务。这通常包括原始串行通信(您可以在您的应用程序中使用),但在许多其他情况下,USB端口提供其他“配置文件”(USB大容量存储,耳机或其他)。所有这些配置文件都是标准化的,因此您可以将手机连接到计算机并建立“串行通信”通道等等,而无需为计算机或手机编写通信驱动程序。

因此,要回答您的问题,不,USB端口不是COM端口。它是一个USB端口。您可以将其用于串行通信,但您也可以将其用于其他事情。

1

USB意味着通用串行总线。一般来说,PC上的所有USB连接都将连接在同一总线上。连接到总线的所有设备都分配有虚拟端口号。这些端口号将根据连接到总线的内容而改变。

但是,您不会直接与手机进行通信,而是使用为其安装的任何驱动程序,除非您正在编写驱动程序本身。

某些手机不能以任何方式控制,其他手机可能会显示为调制解调器,因为这是其制造商通过该驱动器分配的功能。

我目前的手机本身就是作为设备安装(用于制造商的软件),调制解调器和存储设备。

看一看here了解更多信息。

+0

当我将电缆连接到PC时,手机的屏幕上会显示三种选择:海量存储,网络摄像头或COM端口。我选择'com port'。那么这种情况下的港口是什么? – pheromix

+0

它很可能是一个虚拟串行通信端口。看看设备管理器,它应该列在端口下。我已经添加了一个链接到我的答案。 – ChrisBD

+0

该端口是COM4,它在您的屏幕截图中清晰可见。 –