Пример #1
0
        /*
         * // 系统消息常量
         * 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");
        }