在待机/休眠之后,在Console-application中不会触发SerialPort

时间:2012-06-20 09:34:56

标签: c# windows serial-port console-application .net

所以基本上我有一个控制台应用程序在后台运行,监听指定的串口(设备:条码扫描器通过USB连接,映射为串口)。附加的SerialDataReceivedEventHandler按预期工作。但是,一旦计算机进入待机/休眠状态并重新激活,显然不再发送数据(SerialDataReceivedEventHandler不会触发)。如果我检查SerialPort对象,一切似乎都很好(相同的属性,相同的事件处理程序,连接仍然打开)。我还注意到连接似乎超时(几个小时后)。

连接

...
{
  SerialPort serialPort = new SerialPort(port);
  serialPort.BaudRate = 9600;
  serialPort.Parity = Parity.None;
  serialPort.StopBits = StopBits.One;
  serialPort.DataBits = 8;
  serialPort.Handshake = Handshake.None; // tried RequestToSend as well, no difference

  serialPort.DataReceived += new SerialDataReceivedEventHandler(MySerialPortHandler);

  serialPort.Open();

  ...
}

static void MySerialPortHandler(object sender, SerialDataReceivedEventArgs e)
{
  SerialPort serialPort = (SerialPort)sender;
  string inData = serialPort.ReadExisting();

  ...
}

1 个答案:

答案 0 :(得分:1)

我在我的应用程序中添加了逻辑,在电源模式发生变化时进行了监听。

Microsoft.Win32.SystemEvents.PowerModeChanged += OnPowerModeChanged;

On Suspend我关闭了我的SerialPort并将其清理干净并在恢复时重新建立了连接。