4

rs232 デバイスに複数の SerialPort.Write コマンドを次々に送信しようとしています。ただし、一度に複数の WRITE コマンドを処理できるとは思いません。

現在、Thread.Sleep(500) を使用して WRITE 間を遅延させているだけですが、送信するのに最適な時期を検出する方法はありますか? それともバッファで?

サンプルコード

インターフェース

private void btn_infuse_Click(object sender, RoutedEventArgs e) {
        cmd.SetTargetInfusionVolume(spmanager, double.Parse(tbox_targetvolume.Text));
        cmd.StartInfuse(spmanager);//cmd object of Command class
}

コマンドクラス

public void StartInfuse(SPManager spm){
        spm.Write("RUN");//spm object of serialportmanager class
    }
    public void SetTargetInfusionVolume(SerialPortManager spm, double num) {
        spm.Write("MLT " + num.ToString());
    }

SerialPortManager クラス

       public void Write(string sData) {
        if (oSerialPort.IsOpen) {//oSerialPort object of SerialPort class
            try {
                oSerialPort.Write(sData + "\r");
            }
            catch { MessageBox.Show("error"); }
        }
    } 
4

1 に答える 1