自动切换RTS线(Delphi Prism SerialPort)



我在Delphi Prism下使用SerialPort。我能够发送字节到串行端口,但我不能从外部接收数据,因为串行端口发送请求(RTS)线总是高或高。那么,你设置什么设置来自动切换RTS线呢?

下面是我设置的串行端口属性:

SerialPort1 := new System.Io.Ports.SerialPort();
SerialPort1.BaudRate:=19200;
SerialPort1.DataBits:=8;
SerialPort1.DtrEnable:=true;
SerialPort1.Parity:=System.IO.Ports.Parity.Even;
SerialPort1.PortName:='COM1';//'/dev/ttyS0';
SerialPort1.ReadBufferSize:=3000;
SerialPort1.ReadTimeout:=1000;
SerialPort1.ReceivedBytesThreshold:=1;
SerialPort1.RtsEnable:=true;
SerialPort1.StopBits:=System.IO.Ports.StopBits.One;
SerialPort1.WriteTimeout:=1000;
SerialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(@MySerialData);
SerialPort1.Open;

我有DTR设置。发送请求线是控制何时向串行读取和写入数据的方式。如果RTS是高的,你只能写,如果RTS是低的,你只能读。我们检查了示波器上的通信线路,RTS线路总是高,这意味着我们的程序只能发送字节,而不能从外部读取任何字节或数据。这就是DataReceived Event永远不会执行的主要原因,因为它永远不会看到任何传入的字节或数据。

所以,在看了我的串口设置后,你能告诉我我错过了什么吗?

RTS是输出,所以它与接收没有任何关系。试着打开DTR和/或CTS。

编辑:

尝试删除RTS启用行并为RTS/CTS添加握手(不确定它在Delphi中究竟是什么)。我知道这些大头针是用来做什么的。你有显示这是如何连接的引脚吗?我想是2 & &;3 .交叉,DTR到DSR两个方向,RTS到CTS两个方向

相关内容

  • 没有找到相关文章

最新更新