/* * // 系统消息常量 * public const int WM_DEVICE_CHANGE = 0x219; //设备改变 * public const int DBT_DEVICEARRIVAL = 0x8000; //设备插入 * public const int DBT_DEVICE_REMOVE_COMPLETE = 0x8004; //设备移除 * /// <summary> * /// 串口插拔的消息处理 * /// </summary> * /// <param name="m"></param> * protected override void WndProc(ref Message m) * { * if (m.Msg == WM_DEVICE_CHANGE) // 捕获USB设备的拔出消息WM_DEVICECHANGE * { * switch (m.WParam.ToInt32()) * { * case DBT_DEVICE_REMOVE_COMPLETE: // USB拔出 * { * if (ComDevice.IsOpen) * { * bool com = false; * String[] serialPorts = System.IO.Ports.SerialPort.GetPortNames(); * for (int i = 0; i < serialPorts.Length; i++)//找出所有串口,并选择文件中的 * { * if (serialPorts[i].Equals(ComDevice.PortName)) * com = true; * //Console.WriteLine(serialPorts[i]); * } * if (!com) * { * drpComList.Items.Clear(); * drpComList.Items.AddRange(SerialPort.GetPortNames()); * if (drpComList.Items.Count > 0) * { * drpComList.SelectedIndex = 0; * //btnCom.Enabled = true; * } * MessageBox.Show("串口已拔出!", "Tips"); * } * } * } * break; * case DBT_DEVICEARRIVAL: // USB插入获取对应串口名称 * { * drpComList.Items.Clear(); * drpComList.Items.AddRange(SerialPort.GetPortNames()); * if (drpComList.Items.Count > 0) * { * drpComList.SelectedIndex = 0; * //btnCom.Enabled = true; * } * } * break; * } * } * base.WndProc(ref m); * } */ /// <summary> /// 输出数据 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Com_DataReceived(object sender, SerialDataReceivedEventArgs e) { byte[] ReDatas = new byte[ComDevice.BytesToRead]; ComDevice.Read(ReDatas, 0, ReDatas.Length); //读取数据 DataReceived(this, ReDatas); //输出数据 LogHelper.WriteLog("串口 DataReceived:" + Encoding.Default.GetString(ReDatas)); ExceptionLog.getLog().WriteLogFile(ReDatas, DateTime.Now.ToString("yyyyMMdd") + "log.txt"); }