使用串口控制引脚

控制销

中描述的串行端口信号和引脚分配,九针串行端口包括六个控制引脚。与串行端口控制引脚相关的功能和属性如下。

作用 意图
getpinstatus

获得串行引脚状态。

setRTS

指定RTS引脚的状态。

setDTR

指定DTR引脚的状态。

流量控制

指定要使用的数据流控制方法。

信令连接设备的存在

DTE和DCE通常使用CD、DSR、RI和DTR引脚指示串行端口设备之间是否建立了连接。一旦建立了连接,您就可以开始写入或读取数据。

您可以监视CD、DSR和RI引脚的状态getpinstatus作用您可以使用setDTR函数。

下面的示例说明了当两个调制解调器相互连接时如何使用这些引脚。

连接两个调制解调器

此示例(显示在Windows上)®机器)通过同一台计算机将两个调制解调器相互连接,并说明如何监视计算机-调制解调器连接和调制解调器-调制解调器连接的通信状态。第一个调制解调器连接COM1,第二个调制解调器连接COM2。

  1. 连接到仪器上-调制解调器通电后,串行端口对象s1为第一个调制解调器和串行端口对象创建s2为第二个调制解调器创建。两个调制解调器的波特率配置为9600比特每秒。

    s1 =串口(“COM1”, 9600);s2 =串口(“通信2”, 9600);

    通过使用检查数据集就绪引脚的值,可以验证调制解调器(数据集)是否准备好与计算机通信getpinstatus函数。

    getpinstatus(s)
    ans = struct with fields: ClearToSend: 1 DataSetReady: 1 CarrierDetect: 0 RingIndicator: 0

    价值DataSetReady字段是1,或符合事实的,因为这两个调制解调器在连接到物体之前都是通电的。

  2. 配置属性-两个调制解调器都配置为使用configureTerminator函数。

    断路器(s1,“CR”)断路器(s2,“CR”
  3. 写入和读取数据-写下atd使用writeline函数。这个命令将调制解调器“从钩子上取下来”,相当于手动举起电话听筒。

    writeline(s1,“atd”

    写下ata使用命令发送到第二个调制解调器writeline函数。这个命令将调制解调器置于“应答模式”,迫使它连接到第一个调制解调器。

    writeline(s2,“ata”

    当两台modem协商成功后,可以通过“Carrier Detect”引脚的值来判断连接状态getpinstatus函数。

    getpinstatus(s)
    ans = struct with fields: ClearToSend: 1 DataSetReady: 1 CarrierDetect: 1 RingIndicator: 0

    您还可以通过读取第二个调制解调器返回的描述性消息来验证调制解调器连接。

    s2。NumBytesAvailable
    ans = 25
    输出=读取(s2,25,“uint32”
    输出=ata连接2400/无

    现在断开两个调制解调器的连接,使用setDTR函数。您可以通过使用载波检测引脚值检查调制解调器是否断开getpinstatus函数。

    setDTR(s1,false)getpinstatus(s1)
    ans = struct with fields: ClearToSend: 1 DataSetReady: 1 CarrierDetect: 0 RingIndicator: 0
  4. 断开并清理-从MATLAB中清除对象®工作区,当您完成。

    清楚的s1s2

控制数据流:握手

数据流控制或握手是一种用于在数据终端设备(DCE)和数据终端设备(DTE)之间进行通信的方法,以防止数据在传输过程中丢失。例如,假设您的计算机在必须处理之前只能接收有限数量的数据。当达到这个极限时,一个握手信号被传输到DCE以停止发送数据。当计算机可以接受更多的数据时,再向DCE发送另一个握手信号,恢复发送数据。

如果您万博1manbetx的设备支持,您可以使用以下方法之一控制数据流:

请注意

虽然您可以同时为硬件握手和软件握手配置设备,但MATLAB不支持此行为。万博1manbetx

控件可以指定数据流控制方法流量控制财产。如果流量控制硬件,则使用硬件握手来控制数据流。如果流量控制软件然后使用软件握手来控制数据流。如果流量控制没有一个,则不使用握手。

硬件握手

硬件握手使用特定的串口引脚来控制数据流。在大多数情况下,这些是RTS和CTS引脚。使用这些引脚的硬件握手描述在RTS和CTS引脚

如果流量控制硬件,则RTS和CTS引脚由DTE和DCE自动管理。属性可以返回CTS引脚值getpinstatus功能。您可以使用setRTS函数。

请注意

一些设备也使用DTR和DSR引脚进行握手。但是,这些引脚通常用于指示系统已准备好进行通信,而不是用于控制数据传输。在MATLAB中,硬件握手始终使用RTS和CTS引脚。

如果您的设备不使用硬件握手的标准方式,那么您可能需要手动配置RTS引脚使用setRTS函数。在这种情况下,配置流量控制没有一个.如果流量控制硬件,则您指定的RTS值可能不会得到尊重。参考设备文档以确定其特定的引脚行为。

软件握手

软件握手使用特定的ASCII字符来控制数据流。下表描述了这些字符,称为Xon和Xoff(或Xon和Xoff)。

软件握手字符

性格

整型值

描述

发送朴通

17

恢复数据传输。

发送葡开

19

暂停数据传输。

使用软件握手时,控制字符通过传输线发送,发送方式与常规数据相同。因此,您只需要TD、RD和GND引脚。

软件握手的主要缺点是,当数字数据被写入仪器时,您不能写入Xon或Xoff字符。这是因为数字数据可能包含17或19,这使得无法区分控制字符和数据。然而,您可以在从仪器异步读取数据时写入Xon或Xoff,因为您同时使用TD和RD引脚。

使用软件握手。假设您希望将软件流控制与串行端口应用程序结合使用。为此,您必须为软件流控制配置仪器和串行端口对象。对于串行端口对象年代连接到Tektronix®TDS 210示波器,此配置通过以下命令完成。

写线(s),“RS232: SOFTF”) s.FlowControl =“软件”

要暂停数据传输,请写入数值19(Xoff)连接到仪器。

写(s,19,“uint32”);

要恢复数据传输,您需要写入数值17(Xon)到乐器。

写(s,17,“uint32”);