我试图发送我的rs232设备多个SerialPort.Write命令对彼此。但是,我不认为它可以一次处理多个WRITE命令。如何等待正确的时刻写入?
目前,我只是使用Thread.Sleep(500)来延迟写入,但有没有办法来检测何时发送完美的时间?或与缓冲区?
示例代码
接口
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"); }
}
}
一定要将SerialPort.Handshake属性与设备用于流量控制的内容相匹配。 – 2012-07-12 19:23:27