Delphi Prism で SerialPort を使用しています。SerialPort にバイトを送信することはできますが、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 イベントが実行されない主な理由です。これは、着信バイトまたはデータがまったく表示されないためです。
それで、私のシリアルポートの設定を見て、何が欠けているのか教えていただけますか。