我写了一个简单的winform应用程序来读取从微控制器接收到RS232 DE9串行端口的数据。我需要控制何时发送数据,所以我控制RtsEnable属性。程序结构与此类似。rtsenable不能正常工作
byte[] data = new byte[serialPort1.BytesToRead];
serialport1.RtsEnable = true;
private void serialPort1_DataReceived(object sender,
System.IO.Ports.SerialDataReceivedEventArgs e)
{
serialPort1.Read(data, 0, data.Length);
serialport1.RtsEnable = false;
this.Invoke(new EventHandler(ProcessData));
serialport1.RtsEnable = true;
}
现在,问题很简单。当RtsEnable首先设置为true时,它实际上并未设置为true。当我调试时,它显示为RtsEnable = true。但是当我检查电路中的电压时,RT仍然不高。
我不认为这是我的电路有问题,因为我手动检查了在电缆端口的电压输出。所以,我认为这与我的代码有关。
任何想法,为什么这是? 在此先感谢
如果您编写的程序只是循环启用和禁用RTS,您是否看到任何行切换?通常人们会在RTS和CTS之间产生混淆,因为您将RTS从一侧交叉连接到另一台设备上的CTS。另外,您确定启用应该是高电压还是信号可以低电平有效? – TJD
对于q1,我没有发送任何数据就做了测试。因此,data_received事件尚未触发,并且RtsEnable必须为true。所以,还没有切换。对于q2,根据我读到的有关串口的信息,RTS在端口打开时变高。因此,它必须输出高电压 – Lihini