Автоматическое переключение линии RTS (Delphi Prism SerialPort) - PullRequest
0 голосов
/ 20 июля 2011

Я использую 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 *

1 Ответ

1 голос
/ 20 июля 2011

RTS выводится, поэтому он не имеет никакого отношения к приему. Попробуйте включить DTR и / или CTS.

EDIT:

Попробуйте удалить строку с поддержкой RTS и добавить квитирование для RTS / CTS (не уверен, что именно в Delphi). Я знаю, для чего нужны булавки и что они должны делать. У вас есть распиновка, показывающая, как это связано. Я предполагаю, что 2 и 3 пересечены, DTR к DSR в обоих направлениях, RTS к CTS в обоих направлениях.

...