RtsEnable或DtrEnable属性是否发送信号
本文关键字:信号 是否 属性 DtrEnable RtsEnable | 更新日期: 2023-09-27 18:19:02
我想知道如果我把这些放在我的代码中,计算机是否向设备发送任何类型的信号?
SerialPort myport = new SerialPort("COM1");
myport.DtrEnable = true;
myport.RtsEnable = true;
我需要在特定引脚上向设备发送信号。据我所知,dr和rt使用4和7引脚。所以当我写上面的代码时,我的计算机会在引脚4和7上发送信号吗?或者有一种简单的方法可以在特定的引脚上发送信号?
当然,这些属性控制握手信号的状态。它们的使用是而不是任意的,一个设计合理的串口设备会注意到它们。DTR是数据终端就绪,通常连接到设备上的DSR(数据集就绪)。当DSR关闭时,该设备假设您的计算机没有打开或电缆断开。当信号关闭时,它不会发送任何东西,也会忽略你发送给它的任何东西。
RTS是Request To Send,通常连接到设备上的CTS (Clear To Send)。通常用于流量控制,防止设备发送过多的数据和溢出接收缓冲区。这是一个很难恢复的严重问题,数据完全丢失了。
您通常应该设置SerialPort。握手属性改为握手。RequestToSend,这样驱动程序就会自动完成。一个非常常见的错误是将其设置为握手。没有,现在你有可以自己打开这些信号。当然,您将面临缓冲区溢出的风险,尽管您必须编写非常慢的代码才能进入危险区域。已经完成了。
这些信号可以在业余项目中用来控制,比如说,簧片继电器。要注意,信号线上的电压是不可预测的(在+/- 5到24伏之间波动),不能提供很多安培(通常最大20毫安)。你至少需要一个二极管,通常是一个晶体管来切换更重的负载。请访问:electronics.stackexchange.com
理论上:是的。无论你把什么连接到你的串行端口都会看到一些东西。它不会是数据,但如果它正在检查它的pin状态,它就会知道你已经做了一些事情。
在实践中:也许吧。能够准确地检测这些引脚状态在很大程度上取决于所使用的电缆。这是最近的一篇文章,讨论了与这些引脚状态有关的电缆问题。