串口通信捕获“连接到系统上的设备未发挥作用”异常
if (Sp1.IsOpen)
{
Sp1_IsTryToClosePort = true;
while (Sp1_IsReceiving) Application.DoEvents();
Sp1.Close();
}
else
{
return;
}
if (Sp.IsOpen)
{
Sp_IsTryToClosePort = true;
while (Sp_IsReceiving) Application.DoEvents();
Sp.Close(); }
else
{
return;
}
this.Hide();
frmPrint frmDY = new frmPrint();
frmDY.Show();
以上这段代码放在定时器中关闭串口时会在Sp.Close(); 处卡死程序,放在button按钮中关闭就正常的,请各位高手不吝赐教!!!
private void timer2_Tick(object sender, EventArgs e)
{
if (Infoflag == 0)
{
#region
Byte[] YData = { 0x02, 0x30, 0x30, 0x45, 0x34, 0x30, 0x30, 0x31, 0x03, 0x36, 0x44 };
Sp1.Write(YData, 0, 11);
#endregion
}
if(Infoflag ==1)
{
#region
Byte[] XData = { 0x02, 0x30, 0x30, 0x30, 0x38, 0x30, 0x30, 0x32, 0x03, 0x35, 0x44 };
Sp1.Write(XData, 0, 11);
#endregion
}
if(Infoflag ==2)
{
#region
Byte[] YData = { 0x02, 0x30, 0x30, 0x30, 0x41, 0x30, 0x30, 0x31, 0x03, 0x36, 0x35 };
Sp1.Write(YData, 0, 11);
#endregion
}
if (Infoflag ==3)
{
#region
Byte[] MData = { 0x02, 0x30, 0x30, 0x31, 0x30, 0x30, 0x30, 0x31, 0x03, 0x35, 0x35 };
Sp1.Write(MData, 0, 11);
#endregion
}
if (Infoflag == 4)
{
#region
Byte[] YData = { 0x02, 0x37, 0x30, 0x35, 0x30, 0x35, 0x03, 0x30, 0x34 };
Sp1.Write(YData, 0, 9);
timer2.Enabled = false;
#endregion
}
if (Infoflag == 5)
{
#region
Byte[] MData = { 0x02, 0x37, 0x30, 0x34, 0x30, 0x38, 0x03, 0x30, 0x36 };
Sp1.Write(MData, 0, 9);
#endregion
}
}
在定时器中放了几条指令,50ms间隔一次,是一发一收的格式,偶尔还会出现“连接到系统上的设备未发挥作用”异常,就会卡在Sp1.Write(...)这边不知道是什么原因.