这是从串行端口读取数据的代码.为了简单起见,让我们点按一下按钮;
private System.IO.Ports.SerialPort serialPort;
private void button1_Click(object sender, EventArgs e)
{
if (serialPort == null)
serialPort = new SerialPort("COM7", 4800, Parity.None, 8, StopBits.One);
//COM7 is hard coded just for the sake of example
if (!serialPort.IsOpen)
serialPort.Open();
textBox1.AppendText(serialPort.ReadExisting());
}
Run Code Online (Sandbox Code Playgroud)
除非笔记本电脑进入睡眠状态,否则代码运行完全正常 当系统唤醒后从睡眠状态中,serialPort对象不是null,但serialPort.IsOpen回报false,我得到的错误,"请求的资源正在使用中." 一边打电话serialPort.Open().内部异常中没有任何内容.
我已经尝试过很多关于serialPort对象的事情,比如关闭,处理或显式地将它分配给null和重新初始化,但它没有用,每次都在同一行上出现相同的错误.
if (!serialPort.IsOpen)
{
try
{
serialPort.Open();
}
catch
{
serialPort.Close();
serialPort.Dispose();
serialPort = null;
serialPort = new SerialPort("COM7", 4800, Parity.None, 8, StopBits.One);
serialPort.Open();
}
} …Run Code Online (Sandbox Code Playgroud)