私はDelphi PrismでSerialPortを使用しています。私はシリアルポートにバイトを送ることができますが、シリアルポートリクエスト送信(RTS)ラインは常に高いまたは高いので、私は外部からデータを受け取ることができません。では、RTSラインを自動的に切り替えるためにどのような設定をしていますか?RTSラインを自動的に切り替える(Delphi Prism SerialPort)
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が設定されています:
は、ここで私が設定SERIALPORTプロパティです。 Send Lineは、シリアルにデータを読み書きするタイミングを制御する方法です。 RTSが高いと書き込みでき、RTSが低い場合は読み出しのみ可能です。オシロスコープ上の通信ラインをチェックし、RTSラインが常にハイであることは、プログラムがバイトを送信するだけで、外部からはバイトまたはデータを読み取ることができないことを意味します。これがDataReceivedイベントが実行されることのない主な理由です。なぜなら、受信するバイトまたはデータは決して見られないからです。
私のシリアルポートの設定を見て、私が紛失しているものを教えてください。
回答の編集を参照してください。 – dbasnett
ありがとう、dbasnett。 – ThN