串口通信捕获“连接到系统上的设备未发挥作用”异常
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(...)这边不知道是什么原因.
{
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(...)这边不知道是什么原因.
...全文
相关推荐
安卓串口通信—接收以及发送
安卓串口通信—接收以及发送,安卓平台下的串口通信Demo,兼顾发送以及接收功能,经测试都已经成功完美完成上述功能要求。
C#进行串口应用开发如何捕获串口通信接口的异常错误信息
通过以上示例代码和详细分析,您可以了解如何在C#中进行串口通信时捕获和处理可能的异常。通过同步和异步两种方式实现串口通信,可以根据具体需求选择合适的方法。同时,完善的错误处理机制能够提高程序的稳定性和可靠性。好的,继续深入探讨串口通信的一些高级用法和最佳实践。
Python串口通信实战:数据收发与设备交互详解
串口通信是一种通过串行接口逐位传输数据的通信方式,广泛应用于计算机与嵌入式系统、传感器、工业设备之间的数据交互。其核心优势在于实现简单、成本低廉、适用于远距离通信。在现代物联网与自动化系统中,串口通信仍然是连接微控制器(如Arduino、STM32)与上位机(如PC或服务器)的关键桥梁。Python作为一门语法简洁、生态丰富的编程语言,凭借其跨平台特性和强大的社区支持,在串口通信开发中表现出色。借助如pySerial。
串口数据捕获工具
很实用的串口数据捕获工具,用于查看串口协议
Delphi 串口通信 编程资料
详细介绍了Delphi串口通信,含有大量的源代码和详细的说明。


