自动切换RTS线(Delphi Prism SerialPort)

时间:2011-07-20 19:02:09

标签: serial-port toggle delphi-prism-2010

我在Delphi Prism下使用SerialPort。我能够将字节发送到串口,但是我无法从外部接收数据,因为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永远不会执行的主要原因,因为它永远不会看到任何传入的字节或数据。

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

1 个答案:

答案 0 :(得分:1)

输出RTS因此它与接收没有任何关系。尝试打开DTR和/或CTS。

编辑:

尝试删除启用RTS的行并为RTS / CTS添加握手(不确定它在Delphi中究竟是什么)。我知道这些针脚是什么以及它们应该做什么。你有引线显示这是如何连接的。我假设2& 3个交叉,DTR到DSR两个方向,RTS到CTS两个方向。