/// <summary> /// Hàm xử lý sự kiện khi một trong các Port nhận được dữ liệu /// </summary> /// <param name="obj"></param> /// <param name="e"></param> private void ComDataReceived(object obj, SerialDataReceivedEventArgs e) { var sender = (SerialPort)obj; //Kiểm tra trạng thái của cổng xem có sẵn sàng nhận dữ liệu không. if (_portStatus[sender.PortName] != PortStatus.Idle) { return; } var buffer = new byte[] {}; int bytesToRead = sender.BytesToRead; while (bytesToRead > 0) { var tempBuffer = new byte[bytesToRead]; sender.Read(tempBuffer, 0, bytesToRead); Merge(ref buffer, tempBuffer); Thread.Sleep(50); bytesToRead = sender.BytesToRead; } // Lưu lại file Log try { //Logger log = LogManager.GetLogger(sender.PortName); //log.Trace("Receive Data:{0}", Encoding.ASCII.GetString(buffer)); string path = string.Format(@"D:\_COMLOG\{0}-{1}.log", DateTime.Today.ToString(@"yyyyMMdd"), sender.PortName); if (!Directory.Exists(Path.GetDirectoryName(path))) { Directory.CreateDirectory(Path.GetDirectoryName(path)); } string contents = string.Format("{0} RECV:{1}\r\n", DateTime.Now.ToString("HH:mm:ss.fff"), Encoding.ASCII.GetString(buffer)); File.AppendAllText(path, contents); } catch (Exception ex) { File.AppendAllText(@"C:\_LabService_Error.txt", string.Format("{0} - {1}\n", DateTime.Now.ToString("dd/MM/yyyy - HH:mm:ss"), ex)); } IncommingData.Invoke(new DataReceiveRs232(sender, buffer)); ResetTimer(sender.PortName); }
/// <summary> /// Hàm dùng để gọi sự kiện khi có dữ liệu gửi đến /// </summary> /// <param name="obj"></param> public virtual void RaiseEventIncommingData(object obj) { IncommingData.Invoke(obj); }