打开串口有什么作用?

打开串口有什么作用?

从电气角度来说,打开标准 PC 串行端口有什么作用(即哪些引脚上的电压为多少)?

例如,我负责维护一个控制设备的古老 VB6 程序,该程序切换.PortOpen以控制某些 TTL。连接仅使用 2 个引脚(焊料不良脱落),那么我应该焊接到哪些引脚?

唯一的标签/文档指的是引脚 7 和 9,括号中标明 0V 和 5V,但.PortOpen实际上只是将 5V 放在 RI 和 RTS 之间吗?

作为附言,这并不是设置中最奇怪的地方。我上面提到的 TTL 也通过 BNC 到 DB9(!)连接到仪器,只使用 1 个引脚。我猜想有一个关于公共接地的假设,因为 BNC 屏蔽没有连接到 GND 引脚?连接是到仪器的“脚踏板”引脚,这是一种远程触发设备的方式。

更新

根据这一页,DTR和RTS引脚当端口打开时,它们会变为高电平。如果这样配置,则当端口关闭时,它们会变为低电平。

如果未启用 DTR 和 RTS,则打开端口应将两者都设置为低电平(并保持低电平)。

答案1

我不同意 @Stevenvh 的回答。特别是对于 Windows。“端口打开”和“端口关闭”API 调用(例如在 .NET 或 MSCOMM OCX 中)将强制 DTR 和 RTS 线路以电气方式更改或不更改其状态。

在端口打开时,如果在打开端口之前将 DTR 设置为“true”,则 DTR 将设置为电气状态,与布尔属性 DTREnable 相对应。默认情况下,它将保持“false”,如果用户从未设置 DTREnable,则在“打开端口”时,DTR 线将保持“false”,就像在打开端口之前一样。

线路名称“RTS”和属性“RTSEnable”的逻辑和默认值相同。在打开端口之前,选择“RTSEnable”,具体取决于电缆另一端的通信方和所涉及的线路数量(硬件握手、软件握手还是无握手)。

  • 数据载体检测 - 已输入,无影响
  • 接收数据-是输入,无影响
  • 传输数据 - 输出时,将保留“SPACE”而不是“MARK”
  • 数据终端就绪 - 如果在“端口打开”之前设置了属性,则将更改为“TRUE”
  • 信号接地-无变化
  • 数据集就绪-已输入,无影响
  • 请求发送 - 如果在“端口打开”之前设置了 RTSEnable 属性,则将更改为“TRUE”
  • 清除发送-是输入,无效果
  • 振铃指示器-已输入,无效果

相反,当端口关闭时,如果在打开时没有通过属性进行设置,引脚 DTR 和 RTS 将变为“FALSE”状态,或保持在“FALSE”状态。

答案2

从电气角度来说,打开端口不会产生任何影响。它只是告诉操作系统,从那一刻起,端口已分配给应用程序。当您的应用程序打开端口时,操作系统将拒绝其他应用程序访问该端口,并允许您的应用程序访问它。

答案3

打开串行端口将强制所有引脚进入已定义状态(我不记得哪些握手线默认为标记或间距,但这是标准)。在打开串行端口之前,线路的状态可能未定义。除非 Microsoft 做出改变,否则关闭串行端口将使线路保持关闭前的状态,因此如果上次使用的程序使线路处于奇怪的状态,它们将保持该状态直到下次打开。另外,我不知道这在 Windows 下是否仍然是一个问题,但在 DOS 下,有些 PC 会在开机时将其串行端口设置为愚蠢的状态。至少有一个品牌的 PC 会将其串行端口设置为传输连续的长中断,直到另有指示;这令人难忘,因为如果在供应商的软件启动之前插入某个嵌入式控制器,它将对它造成严重破坏。

相关内容