使用串口控制引脚
控制引脚
如在串行端口信号和引脚分配, 9脚串口包括6个控制脚。串口控制引脚的功能和属性如下。
函数 | 目的 |
---|---|
getpinstatus |
获取串行引脚状态。 |
setRTS |
指定RTS引脚的状态。 |
setDTR |
指定DTR引脚的状态。 |
FlowControl | 指定要使用的数据流控制方法。 |
发出连接设备存在的信号
dte和dce通常使用CD、DSR、RI和DTR引脚来指示串口设备之间是否建立了连接。一旦建立了连接,就可以开始写入或读取数据。
命令可以监视CD、DSR和RI引脚的状态getpinstatus
函数。属性指定DTR引脚的状态setDTR
函数。
下面的示例说明当两个调制解调器相互连接时如何使用这些引脚。
连接两台modem
这个例子(显示在Windows上)®Machine)通过同一台计算机将两个调制解调器相互连接,并说明了如何监视计算机-调制解调器连接以及调制解调器-调制解调器连接的通信状态。第一个modem连接到COM1,第二个modem连接到COM2。
连接到仪器—modem上电后,串口对象
s1
为第一个调制解调器创建,而串口对象s2
为第二个调制解调器创建。两个调制解调器的波特率都配置为9600比特/秒。S1 =串口(“COM1”, 9600);S2 =串口(“COM2”, 9600);
方法检查data Set ready引脚的值,可以验证调制解调器(数据集)已准备好与计算机通信
getpinstatus
函数。getpinstatus (s)
ans = struct with fields: ClearToSend: 1 DataSetReady: 1 CarrierDetect: 0 RingIndicator: 0
的值
DataSetReady
字段是1
,或真正的
,因为两个调制解调器在连接到对象之前都是开机的。配置属性-属性将两个调制解调器配置为一个回车结束符(CR)
configureTerminator
函数。configureTerminator (s1,“CR”) configureTerminator (s2,“CR”)
读写数据-编写
atd
命令连接到第一个调制解调器writeline
函数。这个命令使调制解调器“脱离困境”,相当于手动抬起电话接收器。writeline (s1,“atd”)
写
ata
命令到第二个调制解调器writeline
函数。该命令将调制解调器置于“应答模式”,强制它连接到第一个调制解调器。writeline (s2,“ata”)
在两个调制解调器协商它们的连接后,您可以通过检查载波检测引脚的值来验证连接状态
getpinstatus
函数。getpinstatus (s)
ans = struct with fields: ClearToSend: 1 DataSetReady: 1 CarrierDetect: 1 RingIndicator: 0
您还可以通过阅读第二个调制解调器返回的描述性消息来验证调制解调器与调制解调器的连接。
s2。NumBytesAvailable
Ans = 25
输出=读取(s2,25,“uint32”)
out = ata CONNECT 2400/NONE
命令断开两个调制解调器之间的连接
setDTR
函数。方法检查载波检测引脚值,可以验证调制解调器已断开连接getpinstatus
函数。setDTR (s1,假)getpinstatus (s1)
ans = struct with fields: ClearToSend: 1 DataSetReady: 1 CarrierDetect: 0 RingIndicator: 0
断开连接并清理-清除MATLAB中的对象®工作空间。
清晰的s1s2
控制数据流:握手
数据流控制或握手是一种用于DCE和DTE之间通信的方法,以防止传输过程中的数据丢失。例如,假设您的计算机在必须处理之前只能接收有限数量的数据。当达到此限制时,将向DCE发送握手信号以停止发送数据。当计算机可以接受更多的数据时,另一个握手信号被传输到DCE以恢复发送数据。
如果您万博1manbetx的设备支持,您可以使用以下方法之一控制数据流:
请注意
虽然您可以同时配置您的设备进行硬件握手和软件握手,但MATLAB不支持这种行为。万博1manbetx
属性指定数据流控制方法FlowControl
财产。如果FlowControl
是硬件
,然后使用硬件握手来控制数据流。如果FlowControl
是软件
,然后使用软件握手来控制数据流。如果FlowControl
是没有一个
,则不握手。
硬件握手
硬件握手使用特定的串口引脚来控制数据流。在大多数情况下,这些是RTS和CTS引脚。中描述了使用这些引脚的硬件握手RTS和CTS引脚.
如果FlowControl
是硬件
,则RTS和CTS引脚由DTE和DCE自动管理。方法返回CTS引脚值getpinstatus
函数。属性配置RTS引脚值setRTS
函数。
请注意
有些设备还使用DTR和DSR引脚来握手。然而,这些引脚通常用于指示系统已准备好进行通信,而不是用于控制数据传输。在MATLAB中,硬件握手总是使用RTS和CTS引脚。
如果您的设备没有以标准方式使用硬件握手,那么您可能需要手动配置RTS引脚setRTS
函数。在这种情况下,配置FlowControl
来没有一个
.如果FlowControl
是硬件
,则您指定的RTS值可能不会被执行。参考设备文档来确定其特定的引脚行为。
软件握手
软件握手使用特定的ASCII字符来控制数据流。下表描述了这些字符,称为Xon和Xoff(或Xon和Xoff)。
软件握手字符
字符 |
整型值 |
描述 |
---|---|---|
发送朴通 |
17 |
恢复数据传输。 |
发送葡开 |
19 |
暂停数据传输。 |
当您使用软件握手时,控制字符通过传输线以与常规数据相同的方式发送。因此,您只需要TD, RD和GND引脚。
软件握手的主要缺点是,当数值数据写入仪器时,您不能写入Xon或Xoff字符。这是因为数字数据可能包含17或19,这使得不可能区分控制字符和数据。但是,由于同时使用TD和RD引脚,因此可以在从仪器异步读取数据时写入Xon或Xoff。
使用软件握手。假设您希望将软件流控制与串行端口应用程序结合使用。为此,必须为软件流控制配置仪器和串口对象。用于串口对象年代
和泰克有关®TDS 210示波器,此配置是通过以下命令来完成的。
writeline(年代,“RS232: SOFTF”) s.FlowControl =“软件”;
若要暂停数据传输,请写入数值19
(Xoff)到仪器。
写(s, 19岁,“uint32”);
若要恢复数据传输,请写入数值17
(Xon)到仪器上。
写(s, 17岁,“uint32”);