Serial port 串行端口超时
我正在使用带有串口通信的Biomic V3,在发送EOT(传输结束)字符之前,一切都很顺利。我正在用一个后台工作人员来做写作工作。串口超时未发生,应用程序挂起 通信流: 发送:排队字符 接收:确认字符 发送:标题 接收:确认字符 发送:患者 接收:确认字符 发送:仪器订单 接收:确认字符 发送:页脚 接收:确认字符 发送:传输结束字符(应用程序挂起) 有人能帮我解决这个问题吗,因为我没有主意了! 我先谢谢你Serial port 串行端口超时,serial-port,timeout,freeze,Serial Port,Timeout,Freeze,我正在使用带有串口通信的Biomic V3,在发送EOT(传输结束)字符之前,一切都很顺利。我正在用一个后台工作人员来做写作工作。串口超时未发生,应用程序挂起 通信流: 发送:排队字符 接收:确认字符 发送:标题 接收:确认字符 发送:患者 接收:确认字符 发送:仪器订单 接收:确认字符 发送:页脚 接收:确认字符 发送:传输结束字符(应用程序挂起) 有人能帮我解决这个问题吗,因为我没有主意了! 我先谢谢你 #region Static Variables private st
#region Static Variables
private static AutoResetEvent _SendWaitHandle = new AutoResetEvent(false);
#endregion
#region Member Variables
private object _Lock = new object();
private BackgroundWorker _BackgroundWorker;
#endregion
#region Public Methods
public void Write()
{
Monitor.Enter(_Lock);
try
{
// Reset Handle
_SendWaitHandle.Reset();
// Send Data Logic
// Wait for ACK
if (_SendWaitHandle.WaitOne(1000))
{
// Send EOT
}
else
{
// Timeout Occurred
// Your Logic To Handle Timeout
}
}
catch (Exception)
{
throw;
}
finally
{
Monitor.Exit(_Lock);
}
}
#endregion
#region Private Methods
private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
// When ACK is received call SET
_SendWaitHandle.Set();
}
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
write();
}
#endregion
}
我自己做的。向串行端口处理程序添加计时器以避免超时