Я использую SerialPort под Delphi Prism.Я могу отправить байты в последовательный порт, но я не могу получать данные извне, потому что линия SerialPort Request to Send (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.Строка Request to Send - это то, как вы управляете чтением и записью данных в последовательный порт.RTS высокий, тогда вы можете только писать, а если RTS низкий, вы можете только читать.Мы проверили линию связи на осциллографе, и линия RTS всегда высока, что означает, что наша программа может отправлять только байты, но не может читать какие-либо байты или данные извне.Это главная причина, по которой событие DataReceived Event никогда не запускается, потому что оно никогда не видит входящие байты или данные.
Итак, посмотрев на настройки моего последовательного порта, вы можете сказать мне, что мне не хватает.1008 *