我在 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 事件永远不会执行的主要原因,因为它永远不会看到任何传入的字节或数据。
所以,在查看了我的串口设置之后,你能告诉我我缺少什么吗?